mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-08 21:10:12 +02:00
add initial files
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import { NextFunction, Request, Response } from 'express';
|
||||
import passport from 'passport';
|
||||
|
||||
export const authenticateAdmin = (
|
||||
req: Request,
|
||||
res: Response,
|
||||
next: NextFunction
|
||||
) => {
|
||||
passport.authenticate('jwt', { session: false }, (err, user, info) => {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
return res.status(401).json({
|
||||
error: {
|
||||
message: info?.message || 'Invalid authorization.',
|
||||
path: req.path,
|
||||
},
|
||||
response: 'Error',
|
||||
statusCode: 401,
|
||||
});
|
||||
}
|
||||
|
||||
if (!user.enabled) {
|
||||
return res.status(401).json({
|
||||
error: {
|
||||
message: 'Your account is not enabled.',
|
||||
path: req.path,
|
||||
},
|
||||
response: 'Error',
|
||||
statusCode: 401,
|
||||
});
|
||||
}
|
||||
|
||||
if (!user.isAdmin) {
|
||||
return res.status(403).json({
|
||||
error: {
|
||||
message:
|
||||
info?.message || 'This action requires an administrator account.',
|
||||
path: req.path,
|
||||
},
|
||||
response: 'Error',
|
||||
statusCode: 403,
|
||||
});
|
||||
}
|
||||
|
||||
req.auth = {
|
||||
createdAt: user.createdAt,
|
||||
enabled: user.enabled,
|
||||
id: user.id,
|
||||
isAdmin: user.isAdmin,
|
||||
updatedAt: user.updatedAt,
|
||||
username: user.username,
|
||||
};
|
||||
|
||||
return next();
|
||||
})(req, res, next);
|
||||
};
|
||||
@@ -0,0 +1,47 @@
|
||||
import { NextFunction, Request, Response } from 'express';
|
||||
import passport from 'passport';
|
||||
|
||||
export const authenticateLocal = (
|
||||
req: Request,
|
||||
res: Response,
|
||||
next: NextFunction
|
||||
) => {
|
||||
passport.authenticate('jwt', { session: false }, (err, user, info) => {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
return res.status(401).json({
|
||||
error: {
|
||||
message: info?.message || 'Invalid authorization.',
|
||||
path: req.path,
|
||||
},
|
||||
response: 'Error',
|
||||
statusCode: 401,
|
||||
});
|
||||
}
|
||||
|
||||
if (!user.enabled) {
|
||||
return res.status(401).json({
|
||||
error: {
|
||||
message: 'Your account is not enabled.',
|
||||
path: req.path,
|
||||
},
|
||||
response: 'Error',
|
||||
statusCode: 401,
|
||||
});
|
||||
}
|
||||
|
||||
req.auth = {
|
||||
createdAt: user?.createdAt,
|
||||
enabled: user?.enabled,
|
||||
id: user?.id,
|
||||
isAdmin: user?.isAdmin,
|
||||
updatedAt: user?.updatedAt,
|
||||
username: user?.username,
|
||||
};
|
||||
|
||||
return next();
|
||||
})(req, res, next);
|
||||
};
|
||||
@@ -0,0 +1,31 @@
|
||||
import { NextFunction, Request, Response } from 'express';
|
||||
import { isJsonString } from '../utils';
|
||||
|
||||
export const errorHandler = (
|
||||
err: any,
|
||||
req: Request,
|
||||
res: Response,
|
||||
next: NextFunction
|
||||
) => {
|
||||
let message = '';
|
||||
|
||||
const trace = err.stack.match(/at .* \(.*\)/g).map((e: string) => {
|
||||
return e.replace(/\(|\)/g, '');
|
||||
});
|
||||
|
||||
if (err.message) {
|
||||
message = isJsonString(err.message) ? JSON.parse(err.message) : err.message;
|
||||
}
|
||||
|
||||
res.status(err.statusCode || 500).json({
|
||||
error: {
|
||||
message,
|
||||
path: req.path,
|
||||
trace,
|
||||
},
|
||||
response: 'Error',
|
||||
statusCode: err.statusCode || 500,
|
||||
});
|
||||
|
||||
next();
|
||||
};
|
||||
@@ -0,0 +1,3 @@
|
||||
export * from './error-handler';
|
||||
export * from './authenticate-local';
|
||||
export * from './authenticate-admin';
|
||||
Reference in New Issue
Block a user