Return req.auth for user body

This commit is contained in:
jeffvli
2022-05-16 17:16:07 -07:00
parent 4c01bd2aed
commit cc729f0817
4 changed files with 58 additions and 4 deletions

View File

@@ -0,0 +1,47 @@
import { NextFunction, Request, Response } from 'express';
import passport from 'passport';
const authenticateAdmin = (req: Request, res: Response, next: NextFunction) => {
passport.authenticate('local', { session: true }, (err, _user, info) => {
if (err) {
return next(err);
}
const u: any = req.user;
if (!u) {
return res.status(401).json({
statusCode: 401,
response: 'Error',
error: {
message: info?.message || 'Invalid authorization.',
path: req.path,
},
});
}
if (!u.isAdmin) {
return res.status(403).json({
statusCode: 403,
response: 'Error',
error: {
message: info?.message || 'Requires admin.',
path: req.path,
},
});
}
req.auth = {
id: u.id,
username: u.username,
createdAt: u.createdAt,
updatedAt: u.updatedAt,
enabled: u.enabled,
isAdmin: u.isAdmin,
};
return next();
})(req, res, next);
};
export default authenticateAdmin;

View File

@@ -7,7 +7,9 @@ const authenticateLocal = (req: Request, res: Response, next: NextFunction) => {
return next(err);
}
if (!req.user) {
const u: any = req.user;
if (!u) {
return res.status(401).json({
statusCode: 401,
response: 'Error',
@@ -18,14 +20,13 @@ const authenticateLocal = (req: Request, res: Response, next: NextFunction) => {
});
}
const u: any = req.user;
req.user = {
req.auth = {
id: u?.id,
username: u?.username,
createdAt: u?.createdAt,
updatedAt: u?.updatedAt,
enabled: u?.enabled,
isAdmin: u?.isAdmin,
};
return next();

View File

@@ -1,2 +1,3 @@
export { default as errorHandler } from './error-handler';
export { default as authenticateLocal } from './authenticateLocal';
export { default as authenticateAdmin } from './authenticateAdmin';

5
src/server/types/express/index.d.ts vendored Normal file
View File

@@ -0,0 +1,5 @@
declare namespace Express {
export interface Request {
auth: any;
}
}