refactor passport

This commit is contained in:
HF 2022-06-21 01:46:35 +02:00
parent 42ba4c82b6
commit 038cb8b6e1
4 changed files with 151 additions and 134 deletions

View File

@ -56,11 +56,11 @@ passport.use(new JsonStrategy({
where: query,
});
if (!reguser) {
done(null, false, { message: 'Name or Email does not exist!' });
done(new Error('Name or Email does not exist!'));
return;
}
if (!compareToHash(password, reguser.password)) {
done(null, false, { message: 'Incorrect password!' });
done(new Error('Incorrect password!'));
return;
}
const user = new User();

View File

@ -7,6 +7,7 @@ import express from 'express';
import logger from '../../../core/logger';
import { getHostFromRequest } from '../../../utils/ip';
import passport from '../../../core/passport';
import register from './register';
import verify from './verify';
@ -30,8 +31,9 @@ import getMe from '../../../core/me';
const router = express.Router();
export default (passport) => {
router.get('/logout', logout);
/*
* third party logon
*/
router.get('/facebook', passport.authenticate('facebook',
{ scope: ['email'] }));
@ -103,8 +105,8 @@ export default (passport) => {
})(req, res, next);
});
// eslint-disable-next-line no-unused-vars
router.use((err, req, res, next) => {
if (err) {
const host = getHostFromRequest(req);
logger.info(`Authentification error ${err}`);
const index = getHtml(
@ -112,11 +114,12 @@ export default (passport) => {
err.message, host, req.lang,
);
res.status(400).send(index);
} else {
next();
}
});
/*
* JSON APIs
*/
router.get('/verify', verify);
router.get('/logout', logout);
@ -133,8 +136,16 @@ export default (passport) => {
router.post('/restore_password', restore_password);
// while previous auth methosed work by redirect,
// local strategy is an json API
router.post('/local', passport.authenticate('json'), async (req, res) => {
const { user } = req;
const me = await getMe(user, req.lang);
logger.info(`User ${user.id} logged in with mail/password.`);
res.json({
success: true,
me,
});
});
/*
router.post('/local', async (req: Request, res: Response, next) => {
passport.authenticate('json', async (err, user, info) => {
if (!user) {
@ -165,8 +176,17 @@ export default (passport) => {
});
})(req, res, next);
});
*/
router.post('/register', register);
return router;
};
// 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],
});
});
export default router;

View File

@ -85,6 +85,6 @@ router.get('/chathistory', chatHistory);
router.get('/me', me);
router.use('/auth', auth(passport));
router.use('/auth', auth);
export default router;

View File

@ -108,10 +108,7 @@ class RedisStore extends Store {
const key = this.prefix + sid;
this.client
.del(key)
.then((amount) => {
if (amount === 0) {
throw new Error('No such session exists');
}
.then(() => {
cb(null);
})
.catch((err) => {