mirror of
https://github.com/jeffvli/sonixd.git
synced 2026-04-29 02:32:37 -04:00
Return req.auth for user body
This commit is contained in:
47
src/server/middleware/authenticateAdmin.ts
Normal file
47
src/server/middleware/authenticateAdmin.ts
Normal 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;
|
||||
@@ -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();
|
||||
|
||||
@@ -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
5
src/server/types/express/index.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
declare namespace Express {
|
||||
export interface Request {
|
||||
auth: any;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user