This commit is contained in:
David Arranz 2024-09-08 13:19:00 +02:00
parent a76e8ab0d4
commit e41dde5c07
7 changed files with 18 additions and 22 deletions

View File

@ -25,7 +25,7 @@ export class AuthenticateController extends ExpressController {
} }
// If the user is authenticated, attach the user object to the request and move on to the next middleware // If the user is authenticated, attach the user object to the request and move on to the next middleware
this.req.user = user; this.req["user"] = user;
return this.next(); return this.next();
} }
); );

View File

@ -25,7 +25,7 @@ export class IdentityController extends ExpressController {
async executeImpl() { async executeImpl() {
try { try {
const user = <AuthUser>this.req.user; const user = <AuthUser>this.req?.user;
if (!user) { if (!user) {
const errorMessage = "Unexpected missing user data"; const errorMessage = "Unexpected missing user data";

View File

@ -16,7 +16,7 @@ export class LoginController extends ExpressController {
props: { props: {
presenter: ILoginPresenter; presenter: ILoginPresenter;
}, },
context: IAuthContext, context: IAuthContext
) { ) {
super(); super();
@ -27,13 +27,13 @@ export class LoginController extends ExpressController {
async executeImpl() { async executeImpl() {
try { try {
const user = <AuthUser>this.req.user; const user = <AuthUser>this.req?.user;
if (!user) { if (!user) {
const errorMessage = "Unexpected missing user data"; const errorMessage = "Unexpected missing user data";
const infraError = InfrastructureError.create( const infraError = InfrastructureError.create(
InfrastructureError.UNEXCEPTED_ERROR, InfrastructureError.UNEXCEPTED_ERROR,
errorMessage, errorMessage
); );
return this.internalServerError(errorMessage, infraError); return this.internalServerError(errorMessage, infraError);
} }
@ -44,9 +44,7 @@ export class LoginController extends ExpressController {
refreshToken: this._generateUserRefreshToken(user), refreshToken: this._generateUserRefreshToken(user),
}; };
return this.ok<ILogin_Response_DTO>( return this.ok<ILogin_Response_DTO>(this.presenter.map(loginUser, this.context));
this.presenter.map(loginUser, this.context),
);
} catch (e: unknown) { } catch (e: unknown) {
return this.fail(e as IServerError); return this.fail(e as IServerError);
} }
@ -59,10 +57,8 @@ export class LoginController extends ExpressController {
} }
private _generateUserRefreshToken(user: AuthUser) { private _generateUserRefreshToken(user: AuthUser) {
return JWT.sign( return JWT.sign({ email: user.email.toString() }, config.jwt.refresh_secret_key, {
{ email: user.email.toString() }, expiresIn: config.jwt.refresh_token_expiration,
config.jwt.refresh_secret_key, });
{ expiresIn: config.jwt.refresh_token_expiration },
);
} }
} }

View File

@ -8,9 +8,9 @@ const profileMiddleware = (
res: Express.Response, res: Express.Response,
next: Express.NextFunction next: Express.NextFunction
) => { ) => {
const user = <AuthUser>req.user; const user = <AuthUser>req?.user;
if (!user.isAdmin) { if (!user || !user.isAdmin) {
generateExpressError(req, res, httpStatus.UNAUTHORIZED); generateExpressError(req, res, httpStatus.UNAUTHORIZED);
} }
next(); next();

View File

@ -10,7 +10,7 @@ export const checkUser = composeMiddleware([
session: false, session: false,
}), }),
(req: Express.Request, res: Express.Response, next: Express.NextFunction) => { (req: Express.Request, res: Express.Response, next: Express.NextFunction) => {
const user = <AuthUser>req.user; //const user = <AuthUser>req?.user;
if (req.isAuthenticated()) { if (req.isAuthenticated()) {
return next(); return next();
} }
@ -22,8 +22,8 @@ export const checkUser = composeMiddleware([
export const checkisAdmin = composeMiddleware([ export const checkisAdmin = composeMiddleware([
checkUser, checkUser,
(req: Express.Request, res: Express.Response, next: Express.NextFunction) => { (req: Express.Request, res: Express.Response, next: Express.NextFunction) => {
const user = <AuthUser>req.user; const user = <AuthUser>req?.user;
if (!user.isAdmin) { if (!user || !user.isAdmin) {
generateExpressError(req, res, httpStatus.UNAUTHORIZED); generateExpressError(req, res, httpStatus.UNAUTHORIZED);
} }
return next(); return next();
@ -33,11 +33,11 @@ export const checkisAdmin = composeMiddleware([
export const checkAdminOrSelf = composeMiddleware([ export const checkAdminOrSelf = composeMiddleware([
checkUser, checkUser,
(req: Express.Request, res: Express.Response, next: Express.NextFunction) => { (req: Express.Request, res: Express.Response, next: Express.NextFunction) => {
const user = <AuthUser>req.user; const user = <AuthUser>req?.user;
const { userId } = req.params; const { userId } = req.params;
if (user.isAdmin) { if (user && user.isAdmin) {
return next(); return next();
} }

View File

@ -9,7 +9,7 @@ export const getDealerMiddleware = async (
res: Express.Response, res: Express.Response,
next: Express.NextFunction next: Express.NextFunction
) => { ) => {
const user = <AuthUser>req.user; const user = <AuthUser>req?.user;
const context: ISalesContext = res.locals.context; const context: ISalesContext = res.locals.context;
registerDealerRepository(context); registerDealerRepository(context);

View File

@ -16,7 +16,7 @@ export const authRouter = (appRouter: Express.Router) => {
); );
authRoutes.post("/logout", checkUser, (req: Express.Request, res: Express.Response) => { authRoutes.post("/logout", checkUser, (req: Express.Request, res: Express.Response) => {
req.logout(function (err) { req?.logout(function (err) {
if (err) { if (err) {
return res.status(500).json(); return res.status(500).json();
} }