diff --git a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/docker-compose.yml b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/docker-compose.yml index f06faff..10ee182 100644 --- a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/docker-compose.yml +++ b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/docker-compose.yml @@ -1,14 +1,76 @@ -version: '2' +version: '2.2' services: + gateway: build: - context: containers/gateway + context: services/gateway + args: + - HTTP_PROXY=${HTTP_PROXY} + - HTTPS_PROXY=${HTTPS_PROXY} + - http_proxy=${HTTP_PROXY} + - https_proxy=${HTTP_PROXY} + links: + - home_page + - login_page + - logout ports: - 8080:80 home_page: build: - context: containers/home_page + context: services/home_page + args: + - HTTP_PROXY=${HTTP_PROXY} + - HTTPS_PROXY=${HTTPS_PROXY} + - http_proxy=${HTTP_PROXY} + - https_proxy=${HTTP_PROXY} + environment: + SESSION_SECRET: "absolutly_not_secret" + links: + - redis + volumes: + - ./services/home_page/src:/app/src:ro + login_page: build: - context: containers/login_page + context: services/login_page + args: + - HTTP_PROXY=${HTTP_PROXY} + - HTTPS_PROXY=${HTTPS_PROXY} + - http_proxy=${HTTP_PROXY} + - https_proxy=${HTTP_PROXY} + links: + - users + - redis + volumes: + - ./services/login_page/src:/app/src:ro + environment: + SESSION_SECRET: "absolutly_not_secret" + + + logout: + build: + context: services/logout + args: + - HTTP_PROXY=${HTTP_PROXY} + - HTTPS_PROXY=${HTTPS_PROXY} + - http_proxy=${HTTP_PROXY} + - https_proxy=${HTTP_PROXY} + volumes: + - ./services/logout/src:/app/src:ro + environment: + SESSION_SECRET: "absolutly_not_secret" + + users: + build: + context: services/users + args: + - HTTP_PROXY=${HTTP_PROXY} + - HTTPS_PROXY=${HTTPS_PROXY} + - http_proxy=${HTTP_PROXY} + - https_proxy=${HTTP_PROXY} + volumes: + - ./services/users/src:/app/src:ro + + redis: + image: redis:5.0-alpine diff --git a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/gateway/Dockerfile b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/gateway/Dockerfile index 997772f..3497f82 100644 --- a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/gateway/Dockerfile +++ b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/gateway/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.2 +FROM alpine:3.7 RUN apk add --no-cache nginx COPY microbloggr.conf /etc/nginx/microbloggr.conf diff --git a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/gateway/microbloggr.conf b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/gateway/microbloggr.conf index f289811..4cc7b10 100644 --- a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/gateway/microbloggr.conf +++ b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/gateway/microbloggr.conf @@ -28,6 +28,10 @@ http { proxy_pass http://login_page:8080/; } + location /logout { + proxy_pass http://logout:8080/; + } + # location /profile { # proxy_pass http://profile_page:8080/; # } diff --git a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/.dockerignore b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/.dockerignore index 4e4a23e..07e6e47 100644 --- a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/.dockerignore +++ b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/.dockerignore @@ -1 +1 @@ -/app/node_modules +/node_modules diff --git a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/app/.gitignore b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/.gitignore similarity index 100% rename from cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/app/.gitignore rename to cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/.gitignore diff --git a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/Dockerfile b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/Dockerfile index 9cdaec8..f76262d 100644 --- a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/Dockerfile +++ b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/Dockerfile @@ -2,9 +2,10 @@ FROM alpine:3.7 RUN apk add --no-cache nodejs -COPY app /app +COPY ./ /app WORKDIR /app RUN npm install --production +RUN npm install -g nodemon -CMD ["node", "server.js"] +CMD ["nodemon", "src/server.js"] diff --git a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/package-lock.json b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/package-lock.json new file mode 100644 index 0000000..61f85a2 --- /dev/null +++ b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/package-lock.json @@ -0,0 +1,69 @@ +{ + "name": "login_page", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "morgan": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", + "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", + "requires": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.2", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } +} diff --git a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/app/package.json b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/package.json similarity index 87% rename from cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/app/package.json rename to cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/package.json index 85dc18f..6b3533a 100644 --- a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/app/package.json +++ b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/package.json @@ -12,6 +12,8 @@ "ejs": "^2.5.7", "express": "^4.16.2", "express-session": "^1.15.6", + "connect-redis": "^3.4.0", + "morgan": "^1.9.1", "request": "^2.83.0", "request-promise-native": "^1.0.5" } diff --git a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/app/server.js b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/src/server.js similarity index 61% rename from cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/app/server.js rename to cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/src/server.js index 66d6580..f8f1bfe 100644 --- a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/app/server.js +++ b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/src/server.js @@ -1,11 +1,17 @@ const express = require('express'); const session = require('express-session'); +var RedisStore = require('connect-redis')(session); const app = express(); +const morgan = require('morgan'); app.set('view engine', 'ejs'); +app.set('views', __dirname + '/views'); +app.use(morgan('combined')); app.use(session({ - secret: 'AbsolutlyNotSecret', // Ce secret doit être partagé par tous les microservices *_page + store: new RedisStore({host: 'redis'}), + secret: process.env.SESSION_SECRET, // Ce secret doit être partagé par tous les microservices *_page + cookie: { maxAge: 60000 }, resave: false, saveUninitialized: true, })); @@ -20,10 +26,10 @@ app.get('/', (req, res) => { // On vérifie si un utilisateur a été associé à la session HTTP if (req.session.user) { // Si oui, on affichage la page d'accueil - return res.render('index'); + return res.render('index', { user: req.session.user }); } else { // Si non, on redirige l'utilisateur vers la page de login - return res.redirect(301, '/login'); + return res.redirect(302, '/login'); } }); diff --git a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/app/views/index.ejs b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/src/views/index.ejs similarity index 54% rename from cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/app/views/index.ejs rename to cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/src/views/index.ejs index 2bb1ef3..457091f 100644 --- a/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/app/views/index.ejs +++ b/cesi/architecture_n_tiers/ressources/exercices/ex_microbloggr_solution/services/home_page/src/views/index.ejs @@ -4,6 +4,10 @@ +