diff --git a/server/src/contexts/auth/infrastructure/express/controllers/identity/Identity.controller.ts b/server/src/contexts/auth/infrastructure/express/controllers/identity/Identity.controller.ts index a154a50..c3e4903 100644 --- a/server/src/contexts/auth/infrastructure/express/controllers/identity/Identity.controller.ts +++ b/server/src/contexts/auth/infrastructure/express/controllers/identity/Identity.controller.ts @@ -25,7 +25,8 @@ export class IdentityController extends ExpressController { async executeImpl() { try { - const user = this.req?.user; + const req = this.req as Express.AuthenticatedRequest; + const user = req.user; if (!user) { const errorMessage = "Unexpected missing user data"; diff --git a/server/src/contexts/auth/infrastructure/express/controllers/login/Login.controller.ts b/server/src/contexts/auth/infrastructure/express/controllers/login/Login.controller.ts index aefab0d..72dd4b3 100644 --- a/server/src/contexts/auth/infrastructure/express/controllers/login/Login.controller.ts +++ b/server/src/contexts/auth/infrastructure/express/controllers/login/Login.controller.ts @@ -27,7 +27,8 @@ export class LoginController extends ExpressController { async executeImpl() { try { - const user = this.req?.user; + const req = this.req as Express.AuthenticatedRequest; + const user = req.user; if (!user) { const errorMessage = "Unexpected missing user data"; diff --git a/server/src/contexts/auth/infrastructure/express/controllers/profileMiddleware.ts b/server/src/contexts/auth/infrastructure/express/controllers/profileMiddleware.ts index 89a3196..a277287 100644 --- a/server/src/contexts/auth/infrastructure/express/controllers/profileMiddleware.ts +++ b/server/src/contexts/auth/infrastructure/express/controllers/profileMiddleware.ts @@ -1,14 +1,15 @@ import { AuthUser } from "@/contexts/auth/domain"; import { generateExpressError } from "@/contexts/common/infrastructure/express"; -import Express from "express"; +import * as express from "express"; import httpStatus from "http-status"; const profileMiddleware = ( - req: Express.Request, - res: Express.Response, - next: Express.NextFunction + req: express.Request, + res: express.Response, + next: express.NextFunction ) => { - const user = req?.user; + const _req = req as Express.AuthenticatedRequest; + const user = _req.user; if (!user || !user.isAdmin) { generateExpressError(req, res, httpStatus.UNAUTHORIZED); diff --git a/server/src/contexts/auth/infrastructure/express/passport/authMiddleware.ts b/server/src/contexts/auth/infrastructure/express/passport/authMiddleware.ts index 595b996..78362b7 100644 --- a/server/src/contexts/auth/infrastructure/express/passport/authMiddleware.ts +++ b/server/src/contexts/auth/infrastructure/express/passport/authMiddleware.ts @@ -1,7 +1,7 @@ import { AuthUser } from "@/contexts/auth/domain"; import { composeMiddleware, generateExpressError } from "@/contexts/common/infrastructure/express"; import { ensureIdIsValid } from "@shared/contexts"; -import Express from "express"; +import * as express from "express"; import httpStatus from "http-status"; import passport from "passport"; @@ -9,20 +9,20 @@ export const checkUser = composeMiddleware([ passport.authenticate("local-jwt", { session: false, }), - (req: Express.Request, res: Express.Response, next: Express.NextFunction) => { - //const user = req?.user; + (req: express.Request, res: express.Response, next: express.NextFunction) => { if (req.isAuthenticated()) { return next(); } - return generateExpressError(req, res, httpStatus.UNAUTHORIZED); }, ]); export const checkisAdmin = composeMiddleware([ checkUser, - (req: Express.Request, res: Express.Response, next: Express.NextFunction) => { - const user = req?.user; + (req: express.Request, res: express.Response, next: express.NextFunction) => { + const _req = req as Express.AuthenticatedRequest; + const user = _req.user; + if (!user || !user.isAdmin) { generateExpressError(req, res, httpStatus.UNAUTHORIZED); } @@ -32,8 +32,9 @@ export const checkisAdmin = composeMiddleware([ export const checkAdminOrSelf = composeMiddleware([ checkUser, - (req: Express.Request, res: Express.Response, next: Express.NextFunction) => { - const user = req?.user; + (req: express.Request, res: express.Response, next: express.NextFunction) => { + const _req = req as Express.AuthenticatedRequest; + const user = _req.user; const { userId } = req.params; @@ -41,7 +42,7 @@ export const checkAdminOrSelf = composeMiddleware([ return next(); } - if (userId) { + if (user && userId) { const paramIdOrError = ensureIdIsValid(userId); if (paramIdOrError.isSuccess && user.id.equals(paramIdOrError.object)) { return next(); diff --git a/server/src/contexts/auth/infrastructure/express/passport/emailStrategy.ts b/server/src/contexts/auth/infrastructure/express/passport/emailStrategy.ts index 54f1d9d..08aa73e 100644 --- a/server/src/contexts/auth/infrastructure/express/passport/emailStrategy.ts +++ b/server/src/contexts/auth/infrastructure/express/passport/emailStrategy.ts @@ -55,12 +55,12 @@ class EmailStrategyController extends PassportStrategyController { } export const initEmailStrategy = (context: IAuthContext) => - new EmailStrategy(strategyOpts, async (...params) => { + new EmailStrategy(strategyOpts, async (username, password, done) => { registerAuthRepository(context); return new EmailStrategyController( { useCase: new LoginUseCase(context), }, context - ).verifyStrategy(...params); + ).verifyStrategy(username, password, done); }); diff --git a/server/src/contexts/auth/infrastructure/express/passport/jwtStrategy.ts b/server/src/contexts/auth/infrastructure/express/passport/jwtStrategy.ts index c8ec3c1..7dd5288 100644 --- a/server/src/contexts/auth/infrastructure/express/passport/jwtStrategy.ts +++ b/server/src/contexts/auth/infrastructure/express/passport/jwtStrategy.ts @@ -2,11 +2,7 @@ import { config } from "@/config"; import { FindUserByEmailUseCase } from "@/contexts/auth/application/FindUserByEmail.useCase"; import { IServerError } from "@/contexts/common/domain/errors"; import { PassportStrategyController } from "@/contexts/common/infrastructure/express"; -import { - ExtractJwt, - Strategy as JWTStrategy, - VerifiedCallback, -} from "passport-jwt"; +import { ExtractJwt, Strategy as JWTStrategy, VerifiedCallback } from "passport-jwt"; import { IAuthContext } from "../../Auth.context"; import { registerAuthRepository } from "../../Auth.repository"; @@ -23,7 +19,7 @@ class JWTStrategyController extends PassportStrategyController { props: { useCase: FindUserByEmailUseCase; }, - context: any, + context: any ) { super(); @@ -49,12 +45,12 @@ class JWTStrategyController extends PassportStrategyController { } export const initJWTStrategy = (context: IAuthContext) => - new JWTStrategy(strategyOpts, async (...params) => { + new JWTStrategy(strategyOpts, async (payload, done) => { registerAuthRepository(context); return new JWTStrategyController( { useCase: new FindUserByEmailUseCase(context), }, - context, - ).verifyStrategy(...params); + context + ).verifyStrategy(payload, done); }); diff --git a/server/src/contexts/catalog/infrastructure/express/controllers/listArticles/ListArticlesController.ts b/server/src/contexts/catalog/infrastructure/express/controllers/listArticles/ListArticlesController.ts index 8f09116..8ea3cc6 100644 --- a/server/src/contexts/catalog/infrastructure/express/controllers/listArticles/ListArticlesController.ts +++ b/server/src/contexts/catalog/infrastructure/express/controllers/listArticles/ListArticlesController.ts @@ -51,7 +51,8 @@ export class ListArticlesController extends ExpressController { } async executeImpl() { - const { language = Language.createDefaultCode() } = this.req.user; + const req = this.req as Express.AuthenticatedRequest; + const { language = Language.createDefaultCode() } = req.user; const queryOrError = this.validateQuery({ $filters: `lang_code[eq]${language.toString()}`, diff --git a/server/src/contexts/profile/infrastructure/express/controllers/getProfile/GetProfile.controller.ts b/server/src/contexts/profile/infrastructure/express/controllers/getProfile/GetProfile.controller.ts index 9eef328..7b14ece 100644 --- a/server/src/contexts/profile/infrastructure/express/controllers/getProfile/GetProfile.controller.ts +++ b/server/src/contexts/profile/infrastructure/express/controllers/getProfile/GetProfile.controller.ts @@ -30,7 +30,8 @@ export class GetProfileController extends ExpressController { } async executeImpl(): Promise { - const user = this.req.user; + const req = this.req as Express.AuthenticatedRequest; + const user = req.user; if (!user) { const errorMessage = "Unexpected missing user data"; diff --git a/server/src/contexts/profile/infrastructure/express/controllers/updateProfile/UpdateProfile.controller.ts b/server/src/contexts/profile/infrastructure/express/controllers/updateProfile/UpdateProfile.controller.ts index 665f651..e31a1e9 100644 --- a/server/src/contexts/profile/infrastructure/express/controllers/updateProfile/UpdateProfile.controller.ts +++ b/server/src/contexts/profile/infrastructure/express/controllers/updateProfile/UpdateProfile.controller.ts @@ -33,7 +33,8 @@ export class UpdateProfileController extends ExpressController { } async executeImpl() { - const user = this.req.user; + const req = this.req as Express.AuthenticatedRequest; + const user = req.user; if (!user) { const errorMessage = "Unexpected missing Profile data"; diff --git a/server/src/contexts/sales/infrastructure/express/middlewares/dealerMiddleware.ts b/server/src/contexts/sales/infrastructure/express/middlewares/dealerMiddleware.ts index 147ca22..9e65971 100644 --- a/server/src/contexts/sales/infrastructure/express/middlewares/dealerMiddleware.ts +++ b/server/src/contexts/sales/infrastructure/express/middlewares/dealerMiddleware.ts @@ -1,15 +1,16 @@ import { AuthUser } from "@/contexts/auth/domain"; import { GetDealerByUserUseCase } from "@/contexts/sales/application"; -import Express from "express"; +import * as express from "express"; import { registerDealerRepository } from "../../Dealer.repository"; import { ISalesContext } from "../../Sales.context"; export const getDealerMiddleware = async ( - req: Express.Request, - res: Express.Response, - next: Express.NextFunction + req: express.Request, + res: express.Response, + next: express.NextFunction ) => { - const user = req?.user; + const _req = req as Express.AuthenticatedRequest; + const user = _req.user; const context: ISalesContext = res.locals.context; registerDealerRepository(context); diff --git a/server/src/infrastructure/express/api/routes/auth.routes.ts b/server/src/infrastructure/express/api/routes/auth.routes.ts index fa0c085..326e2da 100644 --- a/server/src/infrastructure/express/api/routes/auth.routes.ts +++ b/server/src/infrastructure/express/api/routes/auth.routes.ts @@ -1,9 +1,9 @@ import { checkUser, createLoginController } from "@/contexts/auth"; -import Express from "express"; +import * as express from "express"; import passport from "passport"; -export const authRouter = (appRouter: Express.Router) => { - const authRoutes: Express.Router = Express.Router({ mergeParams: true }); +export const authRouter = (appRouter: express.Router) => { + const authRoutes: express.Router = express.Router({ mergeParams: true }); //appRouter.use(registerMiddleware("isUser", isUser)); //appRouter.use(registerMiddleware("isAdmin", isAdmin)); @@ -11,12 +11,13 @@ export const authRouter = (appRouter: Express.Router) => { authRoutes.post( "/login", passport.authenticate("local-email", { session: false }), - (req: Express.Request, res: Express.Response, next: Express.NextFunction) => + (req: express.Request, res: express.Response, next: express.NextFunction) => createLoginController(res.locals["context"]).execute(req, res, next) ); - authRoutes.post("/logout", checkUser, (req: Express.Request, res: Express.Response) => { - req?.logout(function (err) { + authRoutes.post("/logout", checkUser, (req: express.Request, res: express.Response) => { + const _req = req as Express.AuthenticatedRequest; + _req.logout(function (err) { if (err) { return res.status(500).json(); }