setupPassport() { this.passport.serializeUser((user: any, done: Function) => { done(null, user); }); this.passport.deserializeUser((id: any, done: Function) => { User.findById(id, (err: any, user: any) => { done(err, user); }); }); }
localSignin() { this.passport.use("local-signin", new passportLocal.Strategy({ usernameField: "email", passwordField: "password", passReqToCallback: true }, (req: any, email: string, password: string, done: Function) => { process.nextTick(() => { User.findOne({ "local.email": email }, (err: any, user: any) => { if (err) { return done(err); } if (!user) { return done(null, false, req.flash("signin", "email|Couldn't find user")); } if (!user.verifyPassword(password)) { return done(null, false, req.flash("signin", "password|Invalid password")); } return done(null, user); }); }); })); }
localSignup() { this.passport.use("local-signup", new passportLocal.Strategy({ usernameField: "email", passwordField: "password", passReqToCallback: true }, (req: any, email: string, password: string, done: Function) => { process.nextTick(() => { User.findOne( { "local.email": email }, (err: any, user: any) => { if (err) { return done(err); } if (user) { return done(null, false, req.flash("signup", "email|Email address already exists")); } else { let newUser = new User(); newUser.local.email = email; newUser.local.password = newUser.generateHash(password); newUser.userImage = "http://localhost:3000/public/images/ninjaicon.png"; newUser.save((saveErr: any) => { if (saveErr) { throw saveErr; } return done(null, newUser); }); } }); }); })); }
deserializeUser(id, done) { this._passport.deserializeUser(function(id, done) { user.findById(id, function(err, user) { done(err, user); }); }); }
config(app: Application, passport: Passport){ app.get("/", function(req: Request, res: Response){ res.sendFile("index.html", {"root": "pages/"}); }); app.get("/ping", passport.authenticate("bearer", { session: false }), this.serialize, this.generateToken, function(req: Request, res: Response){ res.status(200).json({hello: "world"}); }); app.get("/google", passport.authenticate("google", { session: false }), function(req: Request, res: Response){ res.status(200).json({google: "success"}); }); // app.get("/login", function(req: Request, res: Response){ // res.sendFile("login.html", {"root": "pages/"}); // }); // app.get("/signup", function(req: Request, res: Response){ // res.sendFile("signup.html", {"root": "pages/"}); // }); // app.get("/finance", function(req: Request, res: Response){ // res.sendFile("finance.html", {"root": "pages/"}); // }); // app.post('/login', passport.authenticate('local-login', { // successRedirect : '/finance', // redirect to the secure profile section // failureRedirect : '/login', // redirect back to the signup page if there is an error // failureFlash : true // allow flash messages // })); // // process the signup form // app.post('/signup', passport.authenticate('local-signup', { // successRedirect : '/finance', // redirect to the secure profile section // failureRedirect : '/signup', // redirect back to the signup page if there is an error // failureFlash : true // allow flash messages // })); // // ===================================== // // LOGOUT ============================== // // ===================================== // app.get('/logout', function(req, res) { // req.logout(); // res.redirect('/'); // }); }
function setupPassport(passport:Passport) { passport.use(new FacebookStrategy({ clientID: providers['facebook'].clientID, clientSecret: providers['facebook'].clientSecret, callbackURL: providers['facebook'].callbackURL },facebookLogin )); passport.use(new GoogleStrategy({ clientID: providers['google'].clientID, clientSecret: providers['google'].clientSecret, callbackURL: providers['google'].callbackURL } , googleLogin )); };
app.get('/auth/google/callback', function(req:Request, res:Response, next:NextFunction) { passport.authenticate('google', { session:false}, function(err, token:string, info) { if (!token) { res.json({ success: false, message: 'Google authentication failed.' }); } else { authSuccessRedirect(res, token); } })(req, res, next); });
this.router.post("/signin", (req: any, res: any, next: NextFunction) => { this.passport.authenticate("local-signin", (err: any, user: any, info: any) => { let messages = req.flash("signin"); if (messages.length > 0) { res.status(401).send(messages); } if (user) { let response = { "token": this.createToken(user) }; res.status(200).send(JSON.stringify(response)); } })(req, res, next); });
function setupAuthRoutes(app: Application, passport:Passport){ app.get('/login', function(req, res){ res.render("login"); }); app.get('/signup', function(req, res){ res.render("signup"); }); app.post('/auth/signup', authFunction.localSignup); app.post('/auth/login', authFunction.localLogin); app.get('/auth/facebook', passport.authenticate('facebook', {scope: ['email']})); app.get('/auth/google', passport.authenticate('google', {scope: ['profile', 'email']})); app.get('/auth/facebook/callback', function(req:Request, res:Response, next:NextFunction) { passport.authenticate('facebook', {session:false}, function(err, token:string, info) { if (!token) { res.json({ success: false, message: 'Facebook authentication failed.' }); } else { authSuccessRedirect(res, token); } })(req, res, next); }); app.get('/auth/google/callback', function(req:Request, res:Response, next:NextFunction) { passport.authenticate('google', { session:false}, function(err, token:string, info) { if (!token) { res.json({ success: false, message: 'Google authentication failed.' }); } else { authSuccessRedirect(res, token); } })(req, res, next); }); app.get('/logout', function(req, res){ req.logout(); res.redirect('/'); }) ; }
function (model: DatabaseObject, passport: Passport): void { let opts: any = {} opts.secretOrKey = model.tokenSalt opts.jwtFromRequest = ExtractJwt.fromHeader('token') let strategy = new Strategy(opts, (jwtPayload, done) => { model.user.findOne({ _id: jwtPayload._doc._id }).exec() .then((account) => { account === undefined ? done(undefined, false) : done(undefined, account) }, (err) => { done(err, false) }) }) passport.use(strategy) }