From 3b6e009d73da1543765d39d817a50d3f1a3d7cdd Mon Sep 17 00:00:00 2001 From: Eddi3_As Date: Mon, 3 Feb 2025 18:44:31 -0500 Subject: [PATCH] FIX eslint et tests --- server/__tests__/auth.test.js | 7 ++++--- server/app.js | 5 +++-- server/auth/auth-manager.js | 16 ++++++++++------ server/auth/modules/passport-providers/oauth.js | 1 - server/auth/modules/passport-providers/oidc.js | 7 ++++--- server/auth/modules/passportjs.js | 6 ++++-- server/auth/modules/simpleauth.js | 11 ++++++----- server/config/auth.js | 3 ++- server/controllers/auth.js | 2 +- server/models/authUserAssociation.js | 2 +- server/models/userAuthAssociation.js | 13 ------------- server/models/users.js | 5 ++--- server/routers/auth.js | 1 - 13 files changed, 37 insertions(+), 42 deletions(-) delete mode 100644 server/models/userAuthAssociation.js diff --git a/server/__tests__/auth.test.js b/server/__tests__/auth.test.js index 7a97c69..ae5a192 100644 --- a/server/__tests__/auth.test.js +++ b/server/__tests__/auth.test.js @@ -1,4 +1,4 @@ -const request = require("supertest"); + const AuthConfig = require("../config/auth.js"); const AuthManager = require("../auth/auth-manager.js"); @@ -115,7 +115,7 @@ describe( expressMock.get = () => {} let authConfigInstance; - let logSpy; + let authmanagerInstance; // Initialisez l'instance avec la configuration mockée beforeAll(() => { @@ -158,6 +158,7 @@ describe( }; authConfigInstance.loadConfigTest(validModule); // On injecte la configuration mockée authmanagerInstance = new AuthManager(expressMock,authConfigInstance.config); + authmanagerInstance.getUserModel(); expect(logSpy).toHaveBeenCalledTimes(0); logSpy.mockClear(); }); @@ -200,7 +201,7 @@ describe( }; authConfigInstance.loadConfigTest(validModuleInvalidProvider); // On injecte la configuration mockée authmanagerInstance = new AuthManager(expressMock,authConfigInstance.config); - expect(logSpy).toHaveBeenCalledTimes(2); + expect(logSpy).toHaveBeenCalledTimes(4); logSpy.mockClear(); }); }) diff --git a/server/app.js b/server/app.js index cba0f12..d2634c7 100644 --- a/server/app.js +++ b/server/app.js @@ -103,8 +103,9 @@ app.use(session({ cookie: { secure: process.env.NODE_ENV === 'production' } })); -authManager = new AuthManager(app,null,userModel) -app.use(errorHandler) +let authManager = new AuthManager(app,null,userModel); +authManager.getUserModel(); +app.use(errorHandler); // Start server async function start() { diff --git a/server/auth/auth-manager.js b/server/auth/auth-manager.js index f3288f4..91ac8e2 100644 --- a/server/auth/auth-manager.js +++ b/server/auth/auth-manager.js @@ -2,8 +2,10 @@ const fs = require('fs'); const AuthConfig = require('../config/auth.js'); const jwt = require('../middleware/jwtToken.js'); const emailer = require('../config/email.js'); -const model = require('../controllers/users.js'); - +const MISSING_REQUIRED_PARAMETER = { + message: 'Paramètre requis manquant.', + code: 400 +}; class AuthManager{ constructor(expressapp,configs=null,userModel){ this.modules = [] @@ -33,7 +35,7 @@ class AuthManager{ this.modules.push(new Module(this,this.configs.auth[name])); console.info(`Module d'authentification '${name}' ajouté`) } else{ - console.error(`Le module d'authentification ${name} n'as pas été chargé car il est introuvable`) + console.error(`Le module d'authentification ${name} n'as pas été chargé car il est introuvable`); } } @@ -42,12 +44,14 @@ class AuthManager{ try{ module.registerAuth(this.app) } catch(error){ - console.error(`L'enregistrement du module ${module} a échoué.`) + console.error(`L'enregistrement du module ${module} a échoué.`); + console.error(`Error: ${error} `); } } } - async login(userInfo,req,res,next){ + // eslint-disable-next-line no-unused-vars + async login(userInfo,req,res,next){ //passport and simpleauth use next const tokenToSave = jwt.create(userInfo.email, userInfo._id,userInfo.roles); res.redirect(`/auth/callback?user=${tokenToSave}&username=${userInfo.name}`); console.info(`L'utilisateur '${userInfo.name}' vient de se connecter`) @@ -55,7 +59,7 @@ class AuthManager{ async register(userInfos){ if (!userInfos.email || !userInfos.password) { - throw new AppError(MISSING_REQUIRED_PARAMETER); + throw MISSING_REQUIRED_PARAMETER; } const user = await this.simpleregister.register(userInfos); emailer.registerConfirmation(user.email) diff --git a/server/auth/modules/passport-providers/oauth.js b/server/auth/modules/passport-providers/oauth.js index fe76922..b05a5be 100644 --- a/server/auth/modules/passport-providers/oauth.js +++ b/server/auth/modules/passport-providers/oauth.js @@ -2,7 +2,6 @@ var OAuth2Strategy = require('passport-oauth2') var authUserAssoc = require('../../../models/authUserAssociation') var users = require('../../../models/users') var { hasNestedValue } = require('../../../utils') -var jwt = require('../../../middleware/jwtToken') class PassportOAuth { constructor(passportjs, auth_name) { diff --git a/server/auth/modules/passport-providers/oidc.js b/server/auth/modules/passport-providers/oidc.js index 77a557c..b03343b 100644 --- a/server/auth/modules/passport-providers/oidc.js +++ b/server/auth/modules/passport-providers/oidc.js @@ -2,7 +2,6 @@ var OpenIDConnectStrategy = require('passport-openidconnect') var authUserAssoc = require('../../../models/authUserAssociation') var users = require('../../../models/users') var { hasNestedValue } = require('../../../utils') -var jwt = require('../../../middleware/jwtToken') class PassportOpenIDConnect { constructor(passportjs, auth_name) { @@ -15,7 +14,8 @@ class PassportOpenIDConnect { const config = await fetch(provider.OIDC_CONFIG_URL) return await config.json() } catch (error) { - console.error(`Les informations de connexions de la connexion OIDC ${name} n'ont pu être chargées.`) + console.error(`Les informations de connexions de la connexion OIDC ${name} n'ont pu être chargées.`); + console.error(`Error: ${error} `); } } @@ -70,10 +70,11 @@ class PassportOpenIDConnect { user_account.name = received_user.name user_account.roles = received_user.roles - await users.editUser(user_account) + await users.editUser(user_account); return done(null, user_account); } catch (error) { + console.error(`Error: ${error} `); } })); diff --git a/server/auth/modules/passportjs.js b/server/auth/modules/passportjs.js index 3d2d46c..d88488b 100644 --- a/server/auth/modules/passportjs.js +++ b/server/auth/modules/passportjs.js @@ -24,7 +24,8 @@ class PassportJs{ this.registeredProviders[provider.type].register(expressapp,passport,this.endpoint,name,provider) authprovider.create(auth_id) } catch(error){ - console.error(`La connexion ${name} de type ${provider.type} n'as pu être chargé.`) + console.error(`La connexion ${name} de type ${provider.type} n'as pu être chargé.`); + console.error(`Error: ${error} `); } } } @@ -45,7 +46,8 @@ class PassportJs{ this.registeredProviders[providerType]= new Provider(this,auth_id) console.info(`Le type de connexion '${providerType}' a été ajouté dans passportjs.`) } catch(error){ - console.error(`Le type de connexion '${providerType}' n'as pas pu être chargé dans passportjs.`) + console.error(`Le type de connexion '${providerType}' n'as pas pu être chargé dans passportjs.`); + console.error(`Error: ${error} `); } } diff --git a/server/auth/modules/simpleauth.js b/server/auth/modules/simpleauth.js index 6836c4c..b40f55d 100644 --- a/server/auth/modules/simpleauth.js +++ b/server/auth/modules/simpleauth.js @@ -15,12 +15,13 @@ class SimpleAuth { async registerAuth(expressapp) { try { - expressapp.post(`${this.endpoint}/register`, (req, res, next) => this.register(this, req, res)); - expressapp.post(`${this.endpoint}/login`, (req, res, next) => this.authenticate(this, req, res)); - expressapp.post(`${this.endpoint}/reset-password`, (req, res, next) => this.resetPassword(this, req, res)); - expressapp.post(`${this.endpoint}/change-password`, jwt.authenticate, (req, res, next) => this.changePassword(this, req, res)); + expressapp.post(`${this.endpoint}/register`, (req, res) => this.register(this, req, res)); + expressapp.post(`${this.endpoint}/login`, (req, res, next) => this.authenticate(this, req, res, next)); + expressapp.post(`${this.endpoint}/reset-password`, (req, res, next) => this.resetPassword(this, req, res, next)); + expressapp.post(`${this.endpoint}/change-password`, jwt.authenticate, (req, res, next) => this.changePassword(this, req, res, next)); } catch (error) { - console.error(`La connexion ${name} de type ${provider.type} n'as pu être chargé.`) + console.error(`La connexion ${name} de type ${this.providers.type} n'as pu être chargé.`); + console.error(`Error: ${error} `); } } diff --git a/server/config/auth.js b/server/config/auth.js index 2b7c4df..72e89ed 100644 --- a/server/config/auth.js +++ b/server/config/auth.js @@ -16,7 +16,8 @@ class AuthConfig { this.config = JSON.parse(configData); } catch (error) { console.error("Erreur lors de la lecture du fichier de configuration. Ne pas se fier si vous n'avez pas mit de fichier de configuration."); - this.config = {} + this.config = {}; + throw error; } return this.config } diff --git a/server/controllers/auth.js b/server/controllers/auth.js index 76769fb..3696e1e 100644 --- a/server/controllers/auth.js +++ b/server/controllers/auth.js @@ -20,7 +20,7 @@ class authController { } } - async getRoomsRequireAuth(req, res, next) { + async getRoomsRequireAuth(req, res) { const authC = new AuthConfig(); const roomsRequireAuth = authC.getRoomsRequireAuth(); diff --git a/server/models/authUserAssociation.js b/server/models/authUserAssociation.js index 3c64644..b6c1e4d 100644 --- a/server/models/authUserAssociation.js +++ b/server/models/authUserAssociation.js @@ -19,7 +19,7 @@ class AuthUserAssociation { const collection = conn.collection('authUserAssociation'); const provider_id = await authProvider.getId(provider_name) - const userAssociation = await collection.findOne({ authProvider_id: provider_id,auth_id,auth_id }); + const userAssociation = await collection.findOne({ authProvider_id: provider_id, auth_id: auth_id }); return userAssociation } diff --git a/server/models/userAuthAssociation.js b/server/models/userAuthAssociation.js deleted file mode 100644 index 8e12717..0000000 --- a/server/models/userAuthAssociation.js +++ /dev/null @@ -1,13 +0,0 @@ -const db = require('../config/db.js') -const { ObjectId } = require('mongodb'); - - -class AuthUserAssoc { - constructor(authProviderId, authId, userId) { - this._id = new ObjectId(); - this.authProvider_id = authProviderId; - this.auth_id = authId; - this.user_id = userId; - } - } - \ No newline at end of file diff --git a/server/models/users.js b/server/models/users.js index 6b96bdb..f18e708 100644 --- a/server/models/users.js +++ b/server/models/users.js @@ -1,7 +1,6 @@ const bcrypt = require("bcrypt"); const AppError = require("../middleware/AppError.js"); const { USER_ALREADY_EXISTS } = require("../constants/errorCodes"); -const Folders = require("../models/folders.js"); class Users { @@ -67,7 +66,7 @@ class Users { return user; } - +/* async login(email, password) { try { await this.db.connect(); @@ -96,7 +95,7 @@ class Users { throw error; } } - +*/ async resetPassword(email) { const newPassword = this.generatePassword(); diff --git a/server/routers/auth.js b/server/routers/auth.js index 7260669..b1e57e2 100644 --- a/server/routers/auth.js +++ b/server/routers/auth.js @@ -1,6 +1,5 @@ const express = require('express'); const router = express.Router(); -const jwt = require('../middleware/jwtToken.js'); const authController = require('../controllers/auth.js')