add initial files

This commit is contained in:
jeffvli
2022-07-25 19:40:16 -07:00
commit e8b612c974
283 changed files with 62820 additions and 0 deletions
@@ -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);
};
+31
View File
@@ -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();
};
+3
View File
@@ -0,0 +1,3 @@
export * from './error-handler';
export * from './authenticate-local';
export * from './authenticate-admin';