diff options
Diffstat (limited to 'src/server/authentication/Passport.ts')
-rw-r--r-- | src/server/authentication/Passport.ts | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/server/authentication/Passport.ts b/src/server/authentication/Passport.ts index a62d38e3e..38a99bd45 100644 --- a/src/server/authentication/Passport.ts +++ b/src/server/authentication/Passport.ts @@ -1,25 +1,28 @@ import * as passport from 'passport'; import * as passportLocal from 'passport-local'; import User, { DashUserModel } from './DashUserModel'; +import { IncomingMessage } from 'webpack-dev-middleware'; const LocalStrategy = passportLocal.Strategy; -passport.serializeUser<any, any>((req, user, done) => { +// eslint-disable-next-line @typescript-eslint/no-explicit-any +passport.serializeUser<any, IncomingMessage & DashUserModel>((req, user, done) => { done(undefined, (user as DashUserModel)?.id); }); -passport.deserializeUser<any, any>((id, done) => { +// eslint-disable-next-line @typescript-eslint/no-explicit-any +passport.deserializeUser<any, IncomingMessage & DashUserModel>((id, done) => { User.findById(id) .exec() - .then((user: DashUserModel) => done(undefined, user)); + .then((user: DashUserModel | null) => user && done(undefined, user)); }); // AUTHENTICATE JUST WITH EMAIL AND PASSWORD passport.use( new LocalStrategy({ usernameField: 'email', passReqToCallback: true }, (req, email, password, done) => { User.findOne({ email: email.toLowerCase() }) - .then((user: DashUserModel) => { - if (!user) { + .then((user: DashUserModel | null) => { + if (!user?.comparePassword) { done(undefined, false, { message: 'Invalid email or password' }); // invalid email } else { user.comparePassword(password, (error: Error, isMatch: boolean) => { |