.
This commit is contained in:
parent
e41dde5c07
commit
130ca11aea
@ -25,7 +25,8 @@ export class IdentityController extends ExpressController {
|
|||||||
|
|
||||||
async executeImpl() {
|
async executeImpl() {
|
||||||
try {
|
try {
|
||||||
const user = <AuthUser>this.req?.user;
|
const req = this.req as Express.AuthenticatedRequest;
|
||||||
|
const user = <AuthUser>req.user;
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
const errorMessage = "Unexpected missing user data";
|
const errorMessage = "Unexpected missing user data";
|
||||||
|
|||||||
@ -27,7 +27,8 @@ export class LoginController extends ExpressController {
|
|||||||
|
|
||||||
async executeImpl() {
|
async executeImpl() {
|
||||||
try {
|
try {
|
||||||
const user = <AuthUser>this.req?.user;
|
const req = this.req as Express.AuthenticatedRequest;
|
||||||
|
const user = <AuthUser>req.user;
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
const errorMessage = "Unexpected missing user data";
|
const errorMessage = "Unexpected missing user data";
|
||||||
|
|||||||
@ -1,14 +1,15 @@
|
|||||||
import { AuthUser } from "@/contexts/auth/domain";
|
import { AuthUser } from "@/contexts/auth/domain";
|
||||||
import { generateExpressError } from "@/contexts/common/infrastructure/express";
|
import { generateExpressError } from "@/contexts/common/infrastructure/express";
|
||||||
import Express from "express";
|
import * as express from "express";
|
||||||
import httpStatus from "http-status";
|
import httpStatus from "http-status";
|
||||||
|
|
||||||
const profileMiddleware = (
|
const profileMiddleware = (
|
||||||
req: Express.Request,
|
req: express.Request,
|
||||||
res: Express.Response,
|
res: express.Response,
|
||||||
next: Express.NextFunction
|
next: express.NextFunction
|
||||||
) => {
|
) => {
|
||||||
const user = <AuthUser>req?.user;
|
const _req = req as Express.AuthenticatedRequest;
|
||||||
|
const user = <AuthUser>_req.user;
|
||||||
|
|
||||||
if (!user || !user.isAdmin) {
|
if (!user || !user.isAdmin) {
|
||||||
generateExpressError(req, res, httpStatus.UNAUTHORIZED);
|
generateExpressError(req, res, httpStatus.UNAUTHORIZED);
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { AuthUser } from "@/contexts/auth/domain";
|
import { AuthUser } from "@/contexts/auth/domain";
|
||||||
import { composeMiddleware, generateExpressError } from "@/contexts/common/infrastructure/express";
|
import { composeMiddleware, generateExpressError } from "@/contexts/common/infrastructure/express";
|
||||||
import { ensureIdIsValid } from "@shared/contexts";
|
import { ensureIdIsValid } from "@shared/contexts";
|
||||||
import Express from "express";
|
import * as express from "express";
|
||||||
import httpStatus from "http-status";
|
import httpStatus from "http-status";
|
||||||
import passport from "passport";
|
import passport from "passport";
|
||||||
|
|
||||||
@ -9,20 +9,20 @@ export const checkUser = composeMiddleware([
|
|||||||
passport.authenticate("local-jwt", {
|
passport.authenticate("local-jwt", {
|
||||||
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;
|
|
||||||
if (req.isAuthenticated()) {
|
if (req.isAuthenticated()) {
|
||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
|
||||||
return generateExpressError(req, res, httpStatus.UNAUTHORIZED);
|
return generateExpressError(req, res, httpStatus.UNAUTHORIZED);
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
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 _req = req as Express.AuthenticatedRequest;
|
||||||
|
const user = <AuthUser>_req.user;
|
||||||
|
|
||||||
if (!user || !user.isAdmin) {
|
if (!user || !user.isAdmin) {
|
||||||
generateExpressError(req, res, httpStatus.UNAUTHORIZED);
|
generateExpressError(req, res, httpStatus.UNAUTHORIZED);
|
||||||
}
|
}
|
||||||
@ -32,8 +32,9 @@ 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 _req = req as Express.AuthenticatedRequest;
|
||||||
|
const user = <AuthUser>_req.user;
|
||||||
|
|
||||||
const { userId } = req.params;
|
const { userId } = req.params;
|
||||||
|
|
||||||
@ -41,7 +42,7 @@ export const checkAdminOrSelf = composeMiddleware([
|
|||||||
return next();
|
return next();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userId) {
|
if (user && userId) {
|
||||||
const paramIdOrError = ensureIdIsValid(userId);
|
const paramIdOrError = ensureIdIsValid(userId);
|
||||||
if (paramIdOrError.isSuccess && user.id.equals(paramIdOrError.object)) {
|
if (paramIdOrError.isSuccess && user.id.equals(paramIdOrError.object)) {
|
||||||
return next();
|
return next();
|
||||||
|
|||||||
@ -55,12 +55,12 @@ class EmailStrategyController extends PassportStrategyController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const initEmailStrategy = (context: IAuthContext) =>
|
export const initEmailStrategy = (context: IAuthContext) =>
|
||||||
new EmailStrategy(strategyOpts, async (...params) => {
|
new EmailStrategy(strategyOpts, async (username, password, done) => {
|
||||||
registerAuthRepository(context);
|
registerAuthRepository(context);
|
||||||
return new EmailStrategyController(
|
return new EmailStrategyController(
|
||||||
{
|
{
|
||||||
useCase: new LoginUseCase(context),
|
useCase: new LoginUseCase(context),
|
||||||
},
|
},
|
||||||
context
|
context
|
||||||
).verifyStrategy(...params);
|
).verifyStrategy(username, password, done);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -2,11 +2,7 @@ import { config } from "@/config";
|
|||||||
import { FindUserByEmailUseCase } from "@/contexts/auth/application/FindUserByEmail.useCase";
|
import { FindUserByEmailUseCase } from "@/contexts/auth/application/FindUserByEmail.useCase";
|
||||||
import { IServerError } from "@/contexts/common/domain/errors";
|
import { IServerError } from "@/contexts/common/domain/errors";
|
||||||
import { PassportStrategyController } from "@/contexts/common/infrastructure/express";
|
import { PassportStrategyController } from "@/contexts/common/infrastructure/express";
|
||||||
import {
|
import { ExtractJwt, Strategy as JWTStrategy, VerifiedCallback } from "passport-jwt";
|
||||||
ExtractJwt,
|
|
||||||
Strategy as JWTStrategy,
|
|
||||||
VerifiedCallback,
|
|
||||||
} from "passport-jwt";
|
|
||||||
import { IAuthContext } from "../../Auth.context";
|
import { IAuthContext } from "../../Auth.context";
|
||||||
import { registerAuthRepository } from "../../Auth.repository";
|
import { registerAuthRepository } from "../../Auth.repository";
|
||||||
|
|
||||||
@ -23,7 +19,7 @@ class JWTStrategyController extends PassportStrategyController {
|
|||||||
props: {
|
props: {
|
||||||
useCase: FindUserByEmailUseCase;
|
useCase: FindUserByEmailUseCase;
|
||||||
},
|
},
|
||||||
context: any,
|
context: any
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
@ -49,12 +45,12 @@ class JWTStrategyController extends PassportStrategyController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const initJWTStrategy = (context: IAuthContext) =>
|
export const initJWTStrategy = (context: IAuthContext) =>
|
||||||
new JWTStrategy(strategyOpts, async (...params) => {
|
new JWTStrategy(strategyOpts, async (payload, done) => {
|
||||||
registerAuthRepository(context);
|
registerAuthRepository(context);
|
||||||
return new JWTStrategyController(
|
return new JWTStrategyController(
|
||||||
{
|
{
|
||||||
useCase: new FindUserByEmailUseCase(context),
|
useCase: new FindUserByEmailUseCase(context),
|
||||||
},
|
},
|
||||||
context,
|
context
|
||||||
).verifyStrategy(...params);
|
).verifyStrategy(payload, done);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -51,7 +51,8 @@ export class ListArticlesController extends ExpressController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async executeImpl() {
|
async executeImpl() {
|
||||||
const { language = Language.createDefaultCode() } = <AuthUser>this.req.user;
|
const req = this.req as Express.AuthenticatedRequest;
|
||||||
|
const { language = Language.createDefaultCode() } = <AuthUser>req.user;
|
||||||
|
|
||||||
const queryOrError = this.validateQuery({
|
const queryOrError = this.validateQuery({
|
||||||
$filters: `lang_code[eq]${language.toString()}`,
|
$filters: `lang_code[eq]${language.toString()}`,
|
||||||
|
|||||||
@ -30,7 +30,8 @@ export class GetProfileController extends ExpressController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async executeImpl(): Promise<any> {
|
async executeImpl(): Promise<any> {
|
||||||
const user = <AuthUser>this.req.user;
|
const req = this.req as Express.AuthenticatedRequest;
|
||||||
|
const user = <AuthUser>req.user;
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
const errorMessage = "Unexpected missing user data";
|
const errorMessage = "Unexpected missing user data";
|
||||||
|
|||||||
@ -33,7 +33,8 @@ export class UpdateProfileController extends ExpressController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async executeImpl() {
|
async executeImpl() {
|
||||||
const user = <User | undefined>this.req.user;
|
const req = this.req as Express.AuthenticatedRequest;
|
||||||
|
const user = <User>req.user;
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
const errorMessage = "Unexpected missing Profile data";
|
const errorMessage = "Unexpected missing Profile data";
|
||||||
|
|||||||
@ -1,15 +1,16 @@
|
|||||||
import { AuthUser } from "@/contexts/auth/domain";
|
import { AuthUser } from "@/contexts/auth/domain";
|
||||||
import { GetDealerByUserUseCase } from "@/contexts/sales/application";
|
import { GetDealerByUserUseCase } from "@/contexts/sales/application";
|
||||||
import Express from "express";
|
import * as express from "express";
|
||||||
import { registerDealerRepository } from "../../Dealer.repository";
|
import { registerDealerRepository } from "../../Dealer.repository";
|
||||||
import { ISalesContext } from "../../Sales.context";
|
import { ISalesContext } from "../../Sales.context";
|
||||||
|
|
||||||
export const getDealerMiddleware = async (
|
export const getDealerMiddleware = async (
|
||||||
req: Express.Request,
|
req: express.Request,
|
||||||
res: Express.Response,
|
res: express.Response,
|
||||||
next: Express.NextFunction
|
next: express.NextFunction
|
||||||
) => {
|
) => {
|
||||||
const user = <AuthUser>req?.user;
|
const _req = req as Express.AuthenticatedRequest;
|
||||||
|
const user = <AuthUser>_req.user;
|
||||||
const context: ISalesContext = res.locals.context;
|
const context: ISalesContext = res.locals.context;
|
||||||
|
|
||||||
registerDealerRepository(context);
|
registerDealerRepository(context);
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
import { checkUser, createLoginController } from "@/contexts/auth";
|
import { checkUser, createLoginController } from "@/contexts/auth";
|
||||||
import Express from "express";
|
import * as express from "express";
|
||||||
import passport from "passport";
|
import passport from "passport";
|
||||||
|
|
||||||
export const authRouter = (appRouter: Express.Router) => {
|
export const authRouter = (appRouter: express.Router) => {
|
||||||
const authRoutes: Express.Router = Express.Router({ mergeParams: true });
|
const authRoutes: express.Router = express.Router({ mergeParams: true });
|
||||||
|
|
||||||
//appRouter.use(registerMiddleware("isUser", isUser));
|
//appRouter.use(registerMiddleware("isUser", isUser));
|
||||||
//appRouter.use(registerMiddleware("isAdmin", isAdmin));
|
//appRouter.use(registerMiddleware("isAdmin", isAdmin));
|
||||||
@ -11,12 +11,13 @@ export const authRouter = (appRouter: Express.Router) => {
|
|||||||
authRoutes.post(
|
authRoutes.post(
|
||||||
"/login",
|
"/login",
|
||||||
passport.authenticate("local-email", { session: false }),
|
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)
|
createLoginController(res.locals["context"]).execute(req, res, next)
|
||||||
);
|
);
|
||||||
|
|
||||||
authRoutes.post("/logout", checkUser, (req: Express.Request, res: Express.Response) => {
|
authRoutes.post("/logout", checkUser, (req: express.Request, res: express.Response) => {
|
||||||
req?.logout(function (err) {
|
const _req = req as Express.AuthenticatedRequest;
|
||||||
|
_req.logout(function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return res.status(500).json();
|
return res.status(500).json();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user