diff options
author | Bob Zeleznik <zzzman@gmail.com> | 2020-05-14 16:33:44 -0400 |
---|---|---|
committer | Bob Zeleznik <zzzman@gmail.com> | 2020-05-14 16:33:44 -0400 |
commit | b9440e34d89b28acacdd6eed2cda39cd2a1d8c46 (patch) | |
tree | 9d7c91a4f6ebf7270bbc66180cadbb592dac40a7 /src/server/authentication/Passport.ts | |
parent | f6a55c0d613787f60e4a40b728a1acbc6c39c552 (diff) | |
parent | e31ec0a7d4fe9772f1e52081717e53e0fdf9fb9b (diff) |
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web
Diffstat (limited to 'src/server/authentication/Passport.ts')
-rw-r--r-- | src/server/authentication/Passport.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/server/authentication/Passport.ts b/src/server/authentication/Passport.ts new file mode 100644 index 000000000..9b0069414 --- /dev/null +++ b/src/server/authentication/Passport.ts @@ -0,0 +1,29 @@ +import * as passport from 'passport'; +import * as passportLocal from 'passport-local'; +import { default as User } from './DashUserModel'; + +const LocalStrategy = passportLocal.Strategy; + +passport.serializeUser<any, any>((user, done) => { + done(undefined, user.id); +}); + +passport.deserializeUser<any, any>((id, done) => { + User.findById(id, (err, user) => { + done(err, user); + }); +}); + +// AUTHENTICATE JUST WITH EMAIL AND PASSWORD +passport.use(new LocalStrategy({ usernameField: 'email', passReqToCallback: true }, (req, email, password, done) => { + User.findOne({ email: email.toLowerCase() }, (error: any, user: any) => { + if (error) return done(error); + if (!user) return done(undefined, false, { message: "Invalid email or password" }); // invalid email + user.comparePassword(password, (error: Error, isMatch: boolean) => { + if (error) return done(error); + if (!isMatch) return done(undefined, false, { message: "Invalid email or password" }); // invalid password + // valid authentication HERE + return done(undefined, user); + }); + }); +}));
\ No newline at end of file |