mirror of
https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir.git
synced 2025-08-11 21:23:54 -04:00
Compare commits
No commits in common. "2499f78b6a165e91b9f641a02561e815b66ab808" and "3a2baaaa1ca79fd1ccb100ff4c5354e511c83c9a" have entirely different histories.
2499f78b6a
...
3a2baaaa1c
6 changed files with 15 additions and 143 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
# client
|
# client
|
||||||
|
|
||||||
FROM node:20 AS build
|
FROM node:18 AS build
|
||||||
|
|
||||||
WORKDIR /usr/src/app/client
|
WORKDIR /usr/src/app/client
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,109 +0,0 @@
|
||||||
version: '3'
|
|
||||||
|
|
||||||
services:
|
|
||||||
|
|
||||||
frontend:
|
|
||||||
build:
|
|
||||||
context: ./client
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
container_name: frontend
|
|
||||||
ports:
|
|
||||||
- "5173:5173"
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
backend:
|
|
||||||
build:
|
|
||||||
context: ./server
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
container_name: backend
|
|
||||||
ports:
|
|
||||||
- "3000:3000"
|
|
||||||
environment:
|
|
||||||
PORT: 3000
|
|
||||||
MONGO_URI: "mongodb://mongo:27017/evaluetonsavoir"
|
|
||||||
MONGO_DATABASE: evaluetonsavoir
|
|
||||||
EMAIL_SERVICE: gmail
|
|
||||||
SENDER_EMAIL: infoevaluetonsavoir@gmail.com
|
|
||||||
EMAIL_PSW: 'vvml wmfr dkzb vjzb'
|
|
||||||
JWT_SECRET: haQdgd2jp09qb897GeBZyJetC8ECSpbFJe
|
|
||||||
SESSION_Secret: 'lookMomImQuizzing'
|
|
||||||
SITE_URL: http://localhost
|
|
||||||
FRONTEND_PORT: 5173
|
|
||||||
USE_PORTS: false
|
|
||||||
AUTHENTICATED_ROOMS: false
|
|
||||||
volumes:
|
|
||||||
- ./server/auth_config.json:/usr/src/app/serveur/config/auth_config.json
|
|
||||||
depends_on:
|
|
||||||
- mongo
|
|
||||||
- keycloak
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
# Ce conteneur sert de routeur pour assurer le bon fonctionnement de l'application
|
|
||||||
nginx:
|
|
||||||
image: fuhrmanator/evaluetonsavoir-routeur:latest
|
|
||||||
container_name: nginx
|
|
||||||
ports:
|
|
||||||
- "80:80"
|
|
||||||
depends_on:
|
|
||||||
- backend
|
|
||||||
- frontend
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
# Ce conteneur est la base de données principale pour l'application
|
|
||||||
mongo:
|
|
||||||
image: mongo
|
|
||||||
container_name: mongo
|
|
||||||
ports:
|
|
||||||
- "27017:27017"
|
|
||||||
tty: true
|
|
||||||
volumes:
|
|
||||||
- mongodb_data:/data/db
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
# Ce conteneur cherche des mises à jour à 5h du matin
|
|
||||||
watchtower:
|
|
||||||
image: containrrr/watchtower
|
|
||||||
container_name: watchtower
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
environment:
|
|
||||||
- TZ=America/Montreal
|
|
||||||
- WATCHTOWER_CLEANUP=true
|
|
||||||
- WATCHTOWER_DEBUG=true
|
|
||||||
- WATCHTOWER_INCLUDE_RESTARTING=true
|
|
||||||
- WATCHTOWER_SCHEDULE=0 0 5 * * * # At 5 am everyday
|
|
||||||
restart: always
|
|
||||||
|
|
||||||
watchtower-once:
|
|
||||||
image: containrrr/watchtower
|
|
||||||
container_name: watchtower-once
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
command: --run-once
|
|
||||||
environment:
|
|
||||||
- TZ=America/Montreal
|
|
||||||
- WATCHTOWER_CLEANUP=true
|
|
||||||
- WATCHTOWER_DEBUG=true
|
|
||||||
- WATCHTOWER_INCLUDE_RESTARTING=true
|
|
||||||
restart: "no"
|
|
||||||
|
|
||||||
keycloak:
|
|
||||||
container_name: keycloak
|
|
||||||
image: quay.io/keycloak/keycloak:latest
|
|
||||||
environment:
|
|
||||||
KEYCLOAK_ADMIN: admin
|
|
||||||
KEYCLOAK_ADMIN_PASSWORD: admin123
|
|
||||||
KC_HEALTH_ENABLED: 'true'
|
|
||||||
KC_FEATURES: preview
|
|
||||||
ports:
|
|
||||||
- "8080:8080"
|
|
||||||
volumes:
|
|
||||||
- ./oauth-tester/config.json:/opt/keycloak/data/import/realm-config.json
|
|
||||||
command:
|
|
||||||
- start-dev
|
|
||||||
- --import-realm
|
|
||||||
- --hostname-strict=false
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
mongodb_data:
|
|
||||||
external: false
|
|
||||||
|
|
@ -3,19 +3,18 @@ version: '3'
|
||||||
services:
|
services:
|
||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
image: fuhrmanator/evaluetonsavoir-frontend:latest
|
build:
|
||||||
|
context: ./client
|
||||||
|
dockerfile: Dockerfile
|
||||||
container_name: frontend
|
container_name: frontend
|
||||||
environment:
|
|
||||||
# Define empty VITE_BACKEND_URL because it's production
|
|
||||||
- VITE_BACKEND_URL=
|
|
||||||
# Define empty VITE_BACKEND_SOCKET_URL so it will default to window.location.host
|
|
||||||
- VITE_BACKEND_SOCKET_URL=
|
|
||||||
ports:
|
ports:
|
||||||
- "5173:5173"
|
- "5173:5173"
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
backend:
|
backend:
|
||||||
image: fuhrmanator/evaluetonsavoir-backend:latest
|
build:
|
||||||
|
context: ./server
|
||||||
|
dockerfile: Dockerfile
|
||||||
container_name: backend
|
container_name: backend
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- "3000:3000"
|
||||||
|
|
@ -29,12 +28,11 @@ services:
|
||||||
JWT_SECRET: haQdgd2jp09qb897GeBZyJetC8ECSpbFJe
|
JWT_SECRET: haQdgd2jp09qb897GeBZyJetC8ECSpbFJe
|
||||||
SESSION_Secret: 'lookMomImQuizzing'
|
SESSION_Secret: 'lookMomImQuizzing'
|
||||||
SITE_URL: http://localhost
|
SITE_URL: http://localhost
|
||||||
OIDC_URL: https://evalsa.etsmtl.ca
|
|
||||||
FRONTEND_PORT: 5173
|
FRONTEND_PORT: 5173
|
||||||
USE_PORTS: false
|
USE_PORTS: false
|
||||||
AUTHENTICATED_ROOMS: false
|
AUTHENTICATED_ROOMS: false
|
||||||
volumes:
|
volumes:
|
||||||
- /opt/EvalueTonSavoir/auth_config.json:/usr/src/app/serveur/auth_config.json
|
- ./server/auth_config.json:/usr/src/app/serveur/config/auth_config.json
|
||||||
depends_on:
|
depends_on:
|
||||||
- mongo
|
- mongo
|
||||||
- keycloak
|
- keycloak
|
||||||
|
|
@ -100,7 +98,7 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- "8080:8080"
|
- "8080:8080"
|
||||||
volumes:
|
volumes:
|
||||||
- /opt/EvalueTonSavoir/oauth-tester/config.json:/opt/keycloak/data/import/realm-config.json
|
- ./oauth-tester/config.json:/opt/keycloak/data/import/realm-config.json
|
||||||
command:
|
command:
|
||||||
- start-dev
|
- start-dev
|
||||||
- --import-realm
|
- --import-realm
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ var users = require('../../../models/users');
|
||||||
var { hasNestedValue } = require('../../../utils');
|
var { hasNestedValue } = require('../../../utils');
|
||||||
const { MISSING_OIDC_PARAMETER } = require('../../../constants/errorCodes.js');
|
const { MISSING_OIDC_PARAMETER } = require('../../../constants/errorCodes.js');
|
||||||
const AppError = require('../../../middleware/AppError.js');
|
const AppError = require('../../../middleware/AppError.js');
|
||||||
const expressListEndpoints = require('express-list-endpoints');
|
|
||||||
|
|
||||||
class PassportOpenIDConnect {
|
class PassportOpenIDConnect {
|
||||||
constructor(passportjs, auth_name) {
|
constructor(passportjs, auth_name) {
|
||||||
|
|
@ -24,16 +23,11 @@ class PassportOpenIDConnect {
|
||||||
|
|
||||||
async register(app, passport, endpoint, name, provider) {
|
async register(app, passport, endpoint, name, provider) {
|
||||||
|
|
||||||
const config = await this.getConfigFromConfigURL(name, provider);
|
const config = await this.getConfigFromConfigURL(name, provider)
|
||||||
const cb_url = `${process.env['OIDC_URL']}${endpoint}/${name}/callback`;
|
const cb_url = `${process.env['BACKEND_URL']}${endpoint}/${name}/callback`
|
||||||
const self = this;
|
const self = this
|
||||||
const scope = 'openid profile email ' + `${provider.OIDC_ADD_SCOPE}`;
|
const scope = 'openid profile email ' + `${provider.OIDC_ADD_SCOPE}`
|
||||||
|
|
||||||
console.log(config);
|
|
||||||
console.log('');
|
|
||||||
console.log(cb_url);
|
|
||||||
console.log('');
|
|
||||||
console.log(scope);
|
|
||||||
passport.use(name, new OpenIDConnectStrategy({
|
passport.use(name, new OpenIDConnectStrategy({
|
||||||
issuer: config.issuer,
|
issuer: config.issuer,
|
||||||
authorizationURL: config.authorization_endpoint,
|
authorizationURL: config.authorization_endpoint,
|
||||||
|
|
@ -55,6 +49,7 @@ class PassportOpenIDConnect {
|
||||||
roles: []
|
roles: []
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
if (hasNestedValue(profile, provider.OIDC_ROLE_TEACHER_VALUE)) received_user.roles.push('teacher')
|
if (hasNestedValue(profile, provider.OIDC_ROLE_TEACHER_VALUE)) received_user.roles.push('teacher')
|
||||||
if (hasNestedValue(profile, provider.OIDC_ROLE_STUDENT_VALUE)) received_user.roles.push('student')
|
if (hasNestedValue(profile, provider.OIDC_ROLE_STUDENT_VALUE)) received_user.roles.push('student')
|
||||||
|
|
||||||
|
|
@ -104,8 +99,7 @@ class PassportOpenIDConnect {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
console.info(`Ajout de la connexion : ${name}(OIDC)`);
|
console.info(`Ajout de la connexion : ${name}(OIDC)`)
|
||||||
console.log(expressListEndpoints(app));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
10
server/package-lock.json
generated
10
server/package-lock.json
generated
|
|
@ -14,7 +14,6 @@
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv": "^16.4.4",
|
"dotenv": "^16.4.4",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
"express-list-endpoints": "^7.1.1",
|
|
||||||
"express-session": "^1.18.0",
|
"express-session": "^1.18.0",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
"mongodb": "^6.3.0",
|
"mongodb": "^6.3.0",
|
||||||
|
|
@ -3248,15 +3247,6 @@
|
||||||
"url": "https://opencollective.com/express"
|
"url": "https://opencollective.com/express"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/express-list-endpoints": {
|
|
||||||
"version": "7.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/express-list-endpoints/-/express-list-endpoints-7.1.1.tgz",
|
|
||||||
"integrity": "sha512-SA6YHH1r6DrioJ4fFJNqiwu1FweGFqJZO9KBApMzwPosoSGPOX2AW0wiMepOXjojjEXDuP9whIvckomheErbJA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=18"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/express-session": {
|
"node_modules/express-session": {
|
||||||
"version": "1.18.1",
|
"version": "1.18.1",
|
||||||
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.1.tgz",
|
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.1.tgz",
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@
|
||||||
"cors": "^2.8.5",
|
"cors": "^2.8.5",
|
||||||
"dotenv": "^16.4.4",
|
"dotenv": "^16.4.4",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
"express-list-endpoints": "^7.1.1",
|
|
||||||
"express-session": "^1.18.0",
|
"express-session": "^1.18.0",
|
||||||
"jsonwebtoken": "^9.0.2",
|
"jsonwebtoken": "^9.0.2",
|
||||||
"mongodb": "^6.3.0",
|
"mongodb": "^6.3.0",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue