From 49bc6ff703bd10ac67bdf363a17af7cb530dbe52 Mon Sep 17 00:00:00 2001 From: HF Date: Tue, 21 Jun 2022 11:07:13 +0200 Subject: [PATCH] refactor passport nr2 --- src/routes/api/auth/index.js | 113 ++++++---------------------------- src/routes/api/auth/verify.js | 5 +- 2 files changed, 21 insertions(+), 97 deletions(-) diff --git a/src/routes/api/auth/index.js b/src/routes/api/auth/index.js index 9e8e015..ccf6a79 100644 --- a/src/routes/api/auth/index.js +++ b/src/routes/api/auth/index.js @@ -37,78 +37,38 @@ const router = express.Router(); router.get('/facebook', passport.authenticate('facebook', { scope: ['email'] })); -router.get('/facebook/return', (req: Request, res: Response, next) => { - passport.authenticate('facebook', (err, user, info) => { - if (err) return next(err); - if (!user) return next(new Error(info.message)); - req.logIn(user, (error) => { - if (error) return next(error); - return res.redirect('/'); - }); - return null; - })(req, res, next); -}); +router.get('/facebook/return', passport.authenticate('facebook', { + successRedirect: '/', +})); router.get('/discord', passport.authenticate('discord', { scope: ['identify', 'email'] })); -router.get('/discord/return', (req: Request, res: Response, next) => { - passport.authenticate('discord', (err, user, info) => { - if (err) return next(err); - if (!user) return next(new Error(info.message)); - req.logIn(user, (error) => { - if (error) return next(error); - return res.redirect('/'); - }); - return null; - })(req, res, next); -}); +router.get('/discord/return', passport.authenticate('discord', { + successRedirect: '/', +})); router.get('/google', passport.authenticate('google', { scope: ['email', 'profile'] })); -router.get('/google/return', (req: Request, res: Response, next) => { - passport.authenticate('google', (err, user, info) => { - if (err) return next(err); - if (!user) return next(new Error(info.message)); - req.logIn(user, (error) => { - if (error) return next(error); - return res.redirect('/'); - }); - return null; - })(req, res, next); -}); +router.get('/google/return', passport.authenticate('google', { + successRedirect: '/', +})); router.get('/vk', passport.authenticate('vkontakte', { scope: ['email'] })); -router.get('/vk/return', (req: Request, res: Response, next) => { - passport.authenticate('vkontakte', (err, user, info) => { - if (err) return next(err); - if (!user) return next(new Error(info.message)); - req.logIn(user, (error) => { - if (error) return next(error); - return res.redirect('/'); - }); - return null; - })(req, res, next); -}); +router.get('/vk/return', passport.authenticate('vkontakte', { + successRedirect: '/', +})); router.get('/reddit', passport.authenticate('reddit', { duration: 'temporary', state: 'foo' })); -router.get('/reddit/return', (req: Request, res: Response, next) => { - passport.authenticate('reddit', (err, user, info) => { - if (err) return next(err); - if (!user) return next(new Error(info.message)); - req.logIn(user, (error) => { - if (error) return next(error); - return res.redirect('/'); - }); - return null; - })(req, res, next); -}); +router.get('/reddit/return', passport.authenticate('reddit', { + successRedirect: '/', +})); // eslint-disable-next-line no-unused-vars router.use((err, req, res, next) => { const host = getHostFromRequest(req); - logger.info(`Authentification error ${err}`); + logger.info(`Authentification error: ${err.message}`); const index = getHtml( 'OAuth Authentification', err.message, host, req.lang, @@ -116,12 +76,12 @@ router.use((err, req, res, next) => { res.status(400).send(index); }); +router.get('/verify', verify); + /* * JSON APIs */ -router.get('/verify', verify); - router.get('/logout', logout); router.get('/resend_verify', resend_verify); @@ -136,6 +96,8 @@ router.post('/delete_account', delete_account); router.post('/restore_password', restore_password); +router.post('/register', register); + router.post('/local', passport.authenticate('json'), async (req, res) => { const { user } = req; const me = await getMe(user, req.lang); @@ -145,44 +107,9 @@ router.post('/local', passport.authenticate('json'), async (req, res) => { me, }); }); -/* -router.post('/local', async (req: Request, res: Response, next) => { - passport.authenticate('json', async (err, user, info) => { - if (!user) { - res.status(400); - res.json({ - errors: [info.message], - }); - return; - } - logger.info(`User ${user.id} logged in with mail/password.`); - - req.logIn(user, async (e) => { - if (e) { - logger.warn(`Login Error:${e.message}`); - res.json({ - success: false, - errors: ['Failed to establish session. Please try again later :('], - }); - return; - } - - user.ip = req.user.ip; - const me = await getMe(user, req.lang); - res.json({ - success: true, - me, - }); - }); - })(req, res, next); -}); -*/ - -router.post('/register', register); // eslint-disable-next-line no-unused-vars router.use((err, req, res, next) => { - console.warn(`ERROR HANDLER CALLED ${err.message}`); res.status(400); res.json({ errors: [err.message], diff --git a/src/routes/api/auth/verify.js b/src/routes/api/auth/verify.js index 2e22c45..32bf47e 100644 --- a/src/routes/api/auth/verify.js +++ b/src/routes/api/auth/verify.js @@ -1,16 +1,13 @@ /* * verify mail address - * @flow */ -import type { Request, Response } from 'express'; - import socketEvents from '../../../socket/SocketEvents'; import getHtml from '../../../ssr-components/RedirectionPage'; import { getHostFromRequest } from '../../../utils/ip'; import mailProvider from '../../../core/mail'; -export default async (req: Request, res: Response) => { +export default async (req, res) => { const { token } = req.query; const { lang } = req; const { t } = req.ttag;