mirror of
https://github.com/ets-cfuhrman-pfe/EvalueTonSavoir.git
synced 2025-08-11 21:23:54 -04:00
FIX error on user model not being init
This commit is contained in:
parent
a049ba5da1
commit
44c023e023
6 changed files with 26 additions and 22 deletions
|
|
@ -12,7 +12,7 @@ const Register: React.FC = () => {
|
||||||
const [name, setName] = useState(''); // State for name
|
const [name, setName] = useState(''); // State for name
|
||||||
const [email, setEmail] = useState('');
|
const [email, setEmail] = useState('');
|
||||||
const [password, setPassword] = useState('');
|
const [password, setPassword] = useState('');
|
||||||
const [roles, setRoles] = useState<string[]>(['student']); // Set 'student' as the default role
|
const [roles, setRoles] = useState<string[]>(['teacher']); // Set 'student' as the default role
|
||||||
|
|
||||||
const [connectionError, setConnectionError] = useState<string>('');
|
const [connectionError, setConnectionError] = useState<string>('');
|
||||||
const [isConnecting] = useState<boolean>(false);
|
const [isConnecting] = useState<boolean>(false);
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ class AuthManager{
|
||||||
async registerAuths(){
|
async registerAuths(){
|
||||||
for(const module of this.modules){
|
for(const module of this.modules){
|
||||||
try{
|
try{
|
||||||
module.registerAuth(this.app)
|
module.registerAuth(this.app, this.simpleregister);
|
||||||
} catch(error){
|
} catch(error){
|
||||||
console.error(`L'enregistrement du module ${module} a échoué.`);
|
console.error(`L'enregistrement du module ${module} a échoué.`);
|
||||||
console.error(`Error: ${error} `);
|
console.error(`Error: ${error} `);
|
||||||
|
|
@ -50,8 +50,14 @@ class AuthManager{
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
// 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 userInfo = await this.simpleregister.login(email, pswd);
|
||||||
const tokenToSave = jwt.create(userInfo.email, userInfo._id,userInfo.roles);
|
const tokenToSave = jwt.create(userInfo.email, userInfo._id,userInfo.roles);
|
||||||
res.redirect(`/auth/callback?user=${tokenToSave}&username=${userInfo.name}`);
|
res.redirect(`/auth/callback?user=${tokenToSave}&username=${userInfo.name}`);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
var OAuth2Strategy = require('passport-oauth2')
|
var OAuth2Strategy = require('passport-oauth2')
|
||||||
var authUserAssoc = require('../../../models/authUserAssociation')
|
var authUserAssoc = require('../../../models/authUserAssociation')
|
||||||
var users = require('../../../models/users')
|
|
||||||
var { hasNestedValue } = require('../../../utils')
|
var { hasNestedValue } = require('../../../utils')
|
||||||
|
|
||||||
class PassportOAuth {
|
class PassportOAuth {
|
||||||
|
|
@ -9,8 +8,8 @@ class PassportOAuth {
|
||||||
this.auth_name = auth_name
|
this.auth_name = auth_name
|
||||||
}
|
}
|
||||||
|
|
||||||
register(app, passport, endpoint, name, provider) {
|
register(app, passport, endpoint, name, provider, userModel) {
|
||||||
const cb_url = `${process.env['BACKEND_URL']}${endpoint}/${name}/callback`
|
const cb_url = `${process.env['OIDC_URL']}${endpoint}/${name}/callback`
|
||||||
const self = this
|
const self = this
|
||||||
const scope = 'openid profile email offline_access' + ` ${provider.OAUTH_ADD_SCOPE}`;
|
const scope = 'openid profile email offline_access' + ` ${provider.OAUTH_ADD_SCOPE}`;
|
||||||
|
|
||||||
|
|
@ -43,14 +42,14 @@ class PassportOAuth {
|
||||||
|
|
||||||
let user_account
|
let user_account
|
||||||
if (user_association) {
|
if (user_association) {
|
||||||
user_account = await users.getById(user_association.user_id)
|
user_account = await userModel.getById(user_association.user_id)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let user_id = await users.getId(received_user.email)
|
let user_id = await userModel.getId(received_user.email)
|
||||||
if (user_id) {
|
if (user_id) {
|
||||||
user_account = await users.getById(user_id);
|
user_account = await userModel.getById(user_id);
|
||||||
} else {
|
} else {
|
||||||
received_user.password = users.generatePassword()
|
received_user.password = userModel.generatePassword()
|
||||||
user_account = await self.passportjs.register(received_user)
|
user_account = await self.passportjs.register(received_user)
|
||||||
}
|
}
|
||||||
await authUserAssoc.link(self.auth_name, received_user.auth_id, user_account._id)
|
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.name = received_user.name
|
||||||
user_account.roles = received_user.roles
|
user_account.roles = received_user.roles
|
||||||
await users.editUser(user_account)
|
await userModel.editUser(user_account)
|
||||||
|
|
||||||
// Store the tokens in the session
|
// Store the tokens in the session
|
||||||
req.session.oauth2Tokens = {
|
req.session.oauth2Tokens = {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
var OpenIDConnectStrategy = require('passport-openidconnect');
|
var OpenIDConnectStrategy = require('passport-openidconnect');
|
||||||
var authUserAssoc = require('../../../models/authUserAssociation');
|
var authUserAssoc = require('../../../models/authUserAssociation');
|
||||||
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');
|
||||||
|
|
@ -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 config = await this.getConfigFromConfigURL(name, provider);
|
||||||
const cb_url = `${process.env['OIDC_URL']}${endpoint}/${name}/callback`;
|
const cb_url = `${process.env['OIDC_URL']}${endpoint}/${name}/callback`;
|
||||||
|
|
@ -62,14 +61,14 @@ class PassportOpenIDConnect {
|
||||||
|
|
||||||
let user_account
|
let user_account
|
||||||
if (user_association) {
|
if (user_association) {
|
||||||
user_account = await users.getById(user_association.user_id)
|
user_account = await userModel.getById(user_association.user_id)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let user_id = await users.getId(received_user.email)
|
let user_id = await userModel.getId(received_user.email)
|
||||||
if (user_id) {
|
if (user_id) {
|
||||||
user_account = await users.getById(user_id);
|
user_account = await userModel.getById(user_id);
|
||||||
} else {
|
} else {
|
||||||
received_user.password = users.generatePassword()
|
received_user.password = userModel.generatePassword()
|
||||||
user_account = await self.passportjs.register(received_user)
|
user_account = await self.passportjs.register(received_user)
|
||||||
}
|
}
|
||||||
await authUserAssoc.link(self.auth_name, received_user.auth_id, user_account._id)
|
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.name = received_user.name
|
||||||
user_account.roles = received_user.roles
|
user_account.roles = received_user.roles
|
||||||
await users.editUser(user_account);
|
await userModel.editUser(user_account);
|
||||||
|
|
||||||
return done(null, user_account);
|
return done(null, user_account);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ class PassportJs{
|
||||||
this.endpoint = "/api/auth"
|
this.endpoint = "/api/auth"
|
||||||
}
|
}
|
||||||
|
|
||||||
async registerAuth(expressapp){
|
async registerAuth(expressapp, userModel){
|
||||||
expressapp.use(passport.initialize());
|
expressapp.use(passport.initialize());
|
||||||
expressapp.use(passport.session());
|
expressapp.use(passport.session());
|
||||||
|
|
||||||
|
|
@ -21,7 +21,7 @@ class PassportJs{
|
||||||
this.registerProvider(provider.type,auth_id)
|
this.registerProvider(provider.type,auth_id)
|
||||||
}
|
}
|
||||||
try{
|
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)
|
authprovider.create(auth_id)
|
||||||
} catch(error){
|
} 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é.`);
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ class SimpleAuth {
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
await self.authmanager.login(email, password, req, res, next);
|
await self.authmanager.loginSimple(email, password, req, res, next);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
const statusCode = error.statusCode || 500;
|
const statusCode = error.statusCode || 500;
|
||||||
const message = error.message || "An internal server error occurred";
|
const message = error.message || "An internal server error occurred";
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue