Differences

This shows you the differences between two versions of the page.

Link to this comparison view

moby:backend:05 [2020/07/31 15:49]
alexandru.hogea
moby:backend:05 [2020/07/31 15:56] (current)
alexandru.hogea [Exercitii]
Line 34: Line 34:
  
 <note warning>​Dupa ce terminati de scris mailing, **PUNETI .env IN .gitignore** pentru ca acesta va contine date sensibile</​note>​ <note warning>​Dupa ce terminati de scris mailing, **PUNETI .env IN .gitignore** pentru ca acesta va contine date sensibile</​note>​
- 
-<note tip>De astazi, serviciul de auth va intoarce, in momentul interogarii de catre alte servicii, si **email**, pe langa userId si role</​note>​ 
 ==== Exercitii ==== ==== Exercitii ====
  
Line 44: Line 42:
 <code javascript>​ <code javascript>​
  
--> GET /subscribe //​autorizare pentru ADMIN si READER+-> GET /subscribe //​autorizare pentru ADMIN si READER, adauga un subscriber in sistem
  
--> DELETE /​unsubscribe //​autorizare pe ADMIN si READER+-> DELETE /​unsubscribe //​autorizare pe ADMIN si READER, scoate un subscriber din sistem
  
--> DELETE /​unsubscribe/​user/:​userId //ruta interna ce va fi folosita pentru sincronizare+-> DELETE /​unsubscribe/​user/:​userId //ruta interna ce va fi folosita pentru sincronizare ​atunci cand se sterge un user
  
 -> POST /​notify ​ -> POST /​notify ​
Line 59: Line 57:
  */  */
 </​code>​ </​code>​
 +
 +  * atunci cand este apelat **notify**, se va trimite un POST catre serviciul de mail. Interactiunea cu serviciul de mail se face pe ruta 
 +<code javascript>​
 +-> POST http://​${process.env.MAILING_SERVICE}/​api/​newsletter
 +</​code>​
 +  * interactiunea cu serviciul de mail se va face prin trimiterea urmatorului obiect:
 +<code javascript>​
 +class MailingPayload {
 +    constructor(bookName,​ author, emails) {
 +        this.mailingList = emails.map(e => e.to_email);​
 +        this.book = {
 +            name: bookName,
 +            author: author
 +        }
 +    }
 +}
 +</​code>​
 +  * veti avea urmatorul fisier **.env**
 +<code javascript>​
 +PGHOST=localhost
 +PGUSER=test
 +PGPASSWORD=test
 +PGPORT=5557
 +PGDATABASE=workshop-newsletter
 +
 +PORT=3002
 +NODE_ENV=development
 +
 +AUTH_SERVICE='​localhost:​3001'​
 +MAILING_SERVICE='​localhost:​3003'​
 +
 +ADMIN_ROLE='​administrator'​
 +READER_ROLE='​reader'​
 +</​code>​
 +  * folderul **database-deploy** va contine urmatoarele:​
 +
 +<code javascript>​
 +// .env
 +PGUSER=test
 +PGPASSWORD=test
 +PGPORT=5557
 +PGDATABASE=workshop-newsletter
 +
 +// docker-compose.yml
 +version: "​3.8"​
 +
 +services:
 +  newsletter-db:​
 +    image: postgres
 +    environment:​
 +      POSTGRES_USER:​ ${PGUSER}
 +      POSTGRES_PASSWORD:​ ${PGPASSWORD}
 +      POSTGRES_DB:​ ${PGDATABASE}
 +      TZ: Europe/​Bucharest
 +      PGTZ: Europe/​Bucharest
 +    ports:
 +      - ${PGPORT}:​5432
 +    volumes:
 +      - workshop-newsletter:/​var/​lib/​postgresql/​data
 +      - ./​init.sql:/​docker-entrypoint-initdb.d/​init.sql
 +      ​
 +  newsletter-pgadmin:​
 +    image: dpage/​pgadmin4
 +    ports:
 +      - "​30004:​80"​
 +    environment:​
 +      PGADMIN_DEFAULT_EMAIL:​ test
 +      PGADMIN_DEFAULT_PASSWORD:​ test
 +    logging:
 +      driver: none
 +
 +volumes:
 +  workshop-newsletter:​
 + 
 +//init.sql
 +CREATE TABLE IF NOT EXISTS newsletter (
 +    id serial PRIMARY KEY,
 +    id_user INTEGER NOT NULL UNIQUE,
 +    to_email VARCHAR NOT NULL UNIQUE
 +)
 +</​code>​
 +
 +<note tip>De astazi, serviciul de auth va intoarce, in momentul interogarii de catre alte servicii, si **email**, pe langa userId si role</​note>​
 +
 +  * in middlewareul de autorizare, sa salvati in **req.state** si **email**
moby/backend/05.1596199773.txt.gz · Last modified: 2020/07/31 15:49 by alexandru.hogea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0