app.get( '/auth/github/callback', passport.authenticate('github', { failureRedirect: '/login' }), (request, reply) => { reply.redirect('/success'); } );
// Allow unauthenticated registration if no users are currently registered. router.use('/register', (req, res, next) => { Users.initialUserGate({ handleInitialUser: () => { next(); }, handleSubsequentUser: () => { passport.authenticate('jwt', {session: false}, (passportReq, passportRes) => { passportRes.json({username: req.username}); }); }, }); });
function ensureAuthenticated(req, res, next) { passport.authenticate('jwt', { session: false }, (err, user, info) => { if (info) { return res.status(401).send(info.message); } if (err) { return next(err); } if (!user) { const error = new Error('You have no access'); error.status = 401; return next(error); } req.user = user; return next(); })(req, res, next); }
function login(req, res) { passport.authenticate('local', { session: false }, (error, user) => { if (error || !user) { return res.status(404).send('Email or password not correct'); } const payload = { sub: user.id, name: user.name, email: user.email, }; const refreshToken = uuid(); refreshTokens[refreshToken] = { email: payload.email, name: payload.name, sub: payload.sub, }; const settings = getSettings(this); const token = jwt.sign(payload, settings.jwtSecret, { algorithm: settings.jwtAlgorithm, expiresIn: settings.jwtExpiration, }); return res.json({ access_token: token, refresh_token: refreshToken, token_type: 'bearer', expires: settings.jwtExpirationSeconds, }); })(req, res); }
passport.authenticate('google', { scope: ['profile', 'email'], prompt: 'select_account', passport.authenticate('google', { failureRedirect: '/login', }),
passport.authenticate('mastodon').call(passport, request, reply); };
// Allow unauthenticated verification if no users are currently registered. router.use('/verify', (req, res, next) => { Users.initialUserGate({ handleInitialUser: () => { req.initialUser = true; next(); }, handleSubsequentUser: () => { req.initialUser = false; passport.authenticate('jwt', {session: false})(req, res, next); }, }); });
app.get('/auth/google/callback', passport.authenticate('google', { failureRedirect: '/auth/google' }), (req, res) => { // Successful authentication, redirect home. res.redirect('/'); });
app.get( '/auth/twitter/callback', passport.authenticate('twitter', { failureRedirect: '/login' }), (request, reply) => { reply.redirect('/success'); } );
app.get( '/auth/mastodon/callback', passport.authenticate('mastodon', { failureRedirect: '/login' }), (request, reply) => { reply.redirect('/success'); } );
app.get( '/auth/google/callback', passport.authenticate('google', { failureRedirect: '/login' }), (request, reply) => { reply.redirect('/success'); } );
app.get( '/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' }), (request, reply) => { reply.redirect('/success'); } );
passport.authenticate('google', { scope: ['profile', 'email'], prompt: 'select_account', passport.authenticate('google', { failureRedirect: '/login', }),
passport.authenticate('google', { scope: ['profile', 'email'], prompt: 'select_account', passport.authenticate('google', { failureRedirect: '/login', }),
passport.authenticate('google', { scope: ['profile', 'email'], prompt: 'select_account', passport.authenticate('google', { failureRedirect: '/login', }),