From 44c023e02363fb1f9d109ce22f8e173e23ef3e43 Mon Sep 17 00:00:00 2001 From: Eddi3_As Date: Sun, 2 Mar 2025 17:57:49 -0500 Subject: [PATCH] FIX error on user model not being init --- .../providers/SimpleLogin/Register.tsx | 2 +- server/auth/auth-manager.js | 12 +++++++++--- server/auth/modules/passport-providers/oauth.js | 15 +++++++-------- server/auth/modules/passport-providers/oidc.js | 13 ++++++------- server/auth/modules/passportjs.js | 4 ++-- server/auth/modules/simpleauth.js | 2 +- 6 files changed, 26 insertions(+), 22 deletions(-) diff --git a/client/src/pages/AuthManager/providers/SimpleLogin/Register.tsx b/client/src/pages/AuthManager/providers/SimpleLogin/Register.tsx index d33527d..46a8c85 100644 --- a/client/src/pages/AuthManager/providers/SimpleLogin/Register.tsx +++ b/client/src/pages/AuthManager/providers/SimpleLogin/Register.tsx @@ -12,7 +12,7 @@ const Register: React.FC = () => { const [name, setName] = useState(''); // State for name const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); - const [roles, setRoles] = useState(['student']); // Set 'student' as the default role + const [roles, setRoles] = useState(['teacher']); // Set 'student' as the default role const [connectionError, setConnectionError] = useState(''); const [isConnecting] = useState(false); diff --git a/server/auth/auth-manager.js b/server/auth/auth-manager.js index e09b8c4..170d35a 100644 --- a/server/auth/auth-manager.js +++ b/server/auth/auth-manager.js @@ -41,7 +41,7 @@ class AuthManager{ async registerAuths(){ for(const module of this.modules){ try{ - module.registerAuth(this.app) + module.registerAuth(this.app, this.simpleregister); } catch(error){ console.error(`L'enregistrement du module ${module} a échoué.`); console.error(`Error: ${error} `); @@ -50,8 +50,14 @@ class AuthManager{ } // eslint-disable-next-line no-unused-vars - async login(email,pswd,req,res,next){ //passport and simpleauth use next - + 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`) + } + + // eslint-disable-next-line no-unused-vars + async loginSimple(email,pswd,req,res,next){ //passport and simpleauth use next const userInfo = await this.simpleregister.login(email, pswd); const tokenToSave = jwt.create(userInfo.email, userInfo._id,userInfo.roles); res.redirect(`/auth/callback?user=${tokenToSave}&username=${userInfo.name}`); diff --git a/server/auth/modules/passport-providers/oauth.js b/server/auth/modules/passport-providers/oauth.js index b05a5be..b32076d 100644 --- a/server/auth/modules/passport-providers/oauth.js +++ b/server/auth/modules/passport-providers/oauth.js @@ -1,6 +1,5 @@ var OAuth2Strategy = require('passport-oauth2') var authUserAssoc = require('../../../models/authUserAssociation') -var users = require('../../../models/users') var { hasNestedValue } = require('../../../utils') class PassportOAuth { @@ -9,8 +8,8 @@ class PassportOAuth { this.auth_name = auth_name } - register(app, passport, endpoint, name, provider) { - const cb_url = `${process.env['BACKEND_URL']}${endpoint}/${name}/callback` + register(app, passport, endpoint, name, provider, userModel) { + const cb_url = `${process.env['OIDC_URL']}${endpoint}/${name}/callback` const self = this const scope = 'openid profile email offline_access' + ` ${provider.OAUTH_ADD_SCOPE}`; @@ -43,14 +42,14 @@ class PassportOAuth { let user_account if (user_association) { - user_account = await users.getById(user_association.user_id) + user_account = await userModel.getById(user_association.user_id) } else { - let user_id = await users.getId(received_user.email) + let user_id = await userModel.getId(received_user.email) if (user_id) { - user_account = await users.getById(user_id); + user_account = await userModel.getById(user_id); } else { - received_user.password = users.generatePassword() + received_user.password = userModel.generatePassword() user_account = await self.passportjs.register(received_user) } await authUserAssoc.link(self.auth_name, received_user.auth_id, user_account._id) @@ -58,7 +57,7 @@ class PassportOAuth { user_account.name = received_user.name user_account.roles = received_user.roles - await users.editUser(user_account) + await userModel.editUser(user_account) // Store the tokens in the session req.session.oauth2Tokens = { diff --git a/server/auth/modules/passport-providers/oidc.js b/server/auth/modules/passport-providers/oidc.js index 4b6e990..5fda361 100644 --- a/server/auth/modules/passport-providers/oidc.js +++ b/server/auth/modules/passport-providers/oidc.js @@ -1,6 +1,5 @@ var OpenIDConnectStrategy = require('passport-openidconnect'); var authUserAssoc = require('../../../models/authUserAssociation'); -var users = require('../../../models/users'); var { hasNestedValue } = require('../../../utils'); const { MISSING_OIDC_PARAMETER } = require('../../../constants/errorCodes.js'); const AppError = require('../../../middleware/AppError.js'); @@ -22,7 +21,7 @@ class PassportOpenIDConnect { } } - async register(app, passport, endpoint, name, provider) { + async register(app, passport, endpoint, name, provider, userModel) { const config = await this.getConfigFromConfigURL(name, provider); const cb_url = `${process.env['OIDC_URL']}${endpoint}/${name}/callback`; @@ -62,14 +61,14 @@ class PassportOpenIDConnect { let user_account if (user_association) { - user_account = await users.getById(user_association.user_id) + user_account = await userModel.getById(user_association.user_id) } else { - let user_id = await users.getId(received_user.email) + let user_id = await userModel.getId(received_user.email) if (user_id) { - user_account = await users.getById(user_id); + user_account = await userModel.getById(user_id); } else { - received_user.password = users.generatePassword() + received_user.password = userModel.generatePassword() user_account = await self.passportjs.register(received_user) } await authUserAssoc.link(self.auth_name, received_user.auth_id, user_account._id) @@ -77,7 +76,7 @@ class PassportOpenIDConnect { user_account.name = received_user.name user_account.roles = received_user.roles - await users.editUser(user_account); + await userModel.editUser(user_account); return done(null, user_account); } catch (error) { diff --git a/server/auth/modules/passportjs.js b/server/auth/modules/passportjs.js index d88488b..c651eff 100644 --- a/server/auth/modules/passportjs.js +++ b/server/auth/modules/passportjs.js @@ -9,7 +9,7 @@ class PassportJs{ this.endpoint = "/api/auth" } - async registerAuth(expressapp){ + async registerAuth(expressapp, userModel){ expressapp.use(passport.initialize()); expressapp.use(passport.session()); @@ -21,7 +21,7 @@ class PassportJs{ this.registerProvider(provider.type,auth_id) } try{ - this.registeredProviders[provider.type].register(expressapp,passport,this.endpoint,name,provider) + this.registeredProviders[provider.type].register(expressapp,passport,this.endpoint,name,provider,userModel) authprovider.create(auth_id) } catch(error){ console.error(`La connexion ${name} de type ${provider.type} n'as pu être chargé.`); diff --git a/server/auth/modules/simpleauth.js b/server/auth/modules/simpleauth.js index b8628b5..e2c9300 100644 --- a/server/auth/modules/simpleauth.js +++ b/server/auth/modules/simpleauth.js @@ -53,7 +53,7 @@ class SimpleAuth { throw error; } - await self.authmanager.login(email, password, req, res, next); + await self.authmanager.loginSimple(email, password, req, res, next); } catch (error) { const statusCode = error.statusCode || 500; const message = error.message || "An internal server error occurred";