aboutsummaryrefslogtreecommitdiff
path: root/src/server/authentication/Passport.ts
diff options
context:
space:
mode:
authoranika-ahluwalia <anika.ahluwalia@gmail.com>2020-05-15 13:26:37 -0500
committeranika-ahluwalia <anika.ahluwalia@gmail.com>2020-05-15 13:26:37 -0500
commit4bca98333ada6536a1bf2ecf1681c5c17a3a1ae1 (patch)
tree7fc20099971de42756af3d238e2ea4f9a608cbd3 /src/server/authentication/Passport.ts
parent0f54ef61653213bd1b26300cb7d14e3da71d1eea (diff)
parent98c7540fff67c232c1b04f2130ee624f9a70afbd (diff)
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web into script_documents
Diffstat (limited to 'src/server/authentication/Passport.ts')
-rw-r--r--src/server/authentication/Passport.ts29
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