add rules middleware
This commit is contained in:
parent
8ff4cc2afd
commit
e1b2bec912
@ -1,94 +0,0 @@
|
|||||||
import { Response, Request } from "express";
|
|
||||||
import { Controller, Post } from "@ControllerPattern/index";
|
|
||||||
import ApiController from "@Common/system/controller-pattern/ApiController";
|
|
||||||
import { Service } from "typedi";
|
|
||||||
import AuthService from "@Services/private-services/AuthService/AuthService";
|
|
||||||
import UsersService from "@Services/super-admin/UsersService/UsersService";
|
|
||||||
import User from "le-coffre-resources/dist/SuperAdmin";
|
|
||||||
import { JwtPayload } from "jsonwebtoken";
|
|
||||||
import { validateOrReject } from "class-validator";
|
|
||||||
//import User from "le-coffre-resources/dist/Notary";
|
|
||||||
|
|
||||||
@Controller()
|
|
||||||
@Service()
|
|
||||||
export default class UserInfoController extends ApiController {
|
|
||||||
constructor(private authService: AuthService, private userService: UsersService) {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description Get user created from IdNot authentification
|
|
||||||
* @returns User
|
|
||||||
*/
|
|
||||||
@Post("/api/v1/idnot-user/:code")
|
|
||||||
protected async getUserInfosFromIdnot(req: Request, response: Response) {
|
|
||||||
try {
|
|
||||||
const code = req.params["code"];
|
|
||||||
const user = await this.authService.getUserFromIdNotTokens(code!);
|
|
||||||
//success
|
|
||||||
this.httpSuccess(response, user);
|
|
||||||
} catch (error) {
|
|
||||||
this.httpInternalError(response);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Post("/api/v1/login/:idnot")
|
|
||||||
protected async login(req: Request, response: Response) {
|
|
||||||
try {
|
|
||||||
const id = req.params["idnot"];
|
|
||||||
if (!id) throw new Error("idnot is required");
|
|
||||||
|
|
||||||
const users = await this.userService.get({ where: { idNot: id } , include: {contact: true, role: true, office_membership: true}});
|
|
||||||
const user = User.hydrate<User>(users[0]!, { strategy: "excludeAll" });
|
|
||||||
await validateOrReject(user, { groups: ["auth"] })
|
|
||||||
console.log(user)
|
|
||||||
const accessToken = this.authService.generateAccessToken(user);
|
|
||||||
const refreshToken = this.authService.generateRefreshToken(user);
|
|
||||||
|
|
||||||
//success
|
|
||||||
this.httpSuccess(response, { accessToken, refreshToken });
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
this.httpInternalError(response);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Post("/api/v1/refresh-token")
|
|
||||||
protected async refreshToken(req: Request, response: Response) {
|
|
||||||
try {
|
|
||||||
const authHeader = req.headers["authorization"];
|
|
||||||
const token = authHeader && authHeader.split(" ")[1];
|
|
||||||
|
|
||||||
if (!token) {
|
|
||||||
this.httpBadRequest(response);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let accessToken;
|
|
||||||
this.authService.verifyRefreshToken(token, (err, userPayload) => {
|
|
||||||
if (err) {
|
|
||||||
this.httpUnauthorized(response);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const user = userPayload as JwtPayload;
|
|
||||||
console.log(userPayload)
|
|
||||||
// const user = User.hydrate<User>(userPayload!, { strategy: "excludeAll" });
|
|
||||||
// const user = await this.userService.getByUid(userPayload!.uid);
|
|
||||||
// const users = await this.userService.getByUid(userPayload!.uid);
|
|
||||||
delete user.iat;
|
|
||||||
delete user!.exp;
|
|
||||||
accessToken = this.authService.generateAccessToken(user);
|
|
||||||
});
|
|
||||||
|
|
||||||
//success
|
|
||||||
this.httpSuccess(response, accessToken);
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error)
|
|
||||||
this.httpInternalError(response);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
85
src/app/api/idnot/UserController.ts
Normal file
85
src/app/api/idnot/UserController.ts
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
import { Response, Request } from "express";
|
||||||
|
import { Controller, Post } from "@ControllerPattern/index";
|
||||||
|
import ApiController from "@Common/system/controller-pattern/ApiController";
|
||||||
|
import { Service } from "typedi";
|
||||||
|
import AuthService from "@Services/common/AuthService/AuthService";
|
||||||
|
import { JwtPayload } from "jsonwebtoken";
|
||||||
|
|
||||||
|
@Controller()
|
||||||
|
@Service()
|
||||||
|
export default class UserController extends ApiController {
|
||||||
|
constructor(private authService: AuthService) {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description Get user created from IdNot authentification
|
||||||
|
* @todo Used for test, should be removed
|
||||||
|
* @returns User
|
||||||
|
*/
|
||||||
|
// @Post("/api/v1/idnot/user/:code")
|
||||||
|
// protected async getUserInfosFromIdnot(req: Request, response: Response) {
|
||||||
|
// console.warn("/api/v1/idnot/user/:code used for test, should be removed");
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// const code = req.params["code"];
|
||||||
|
// const user = await this.authService.getUserFromIdNotTokens(code!);
|
||||||
|
// //success
|
||||||
|
// this.httpSuccess(response, user);
|
||||||
|
// } catch (error) {
|
||||||
|
// this.httpInternalError(response);
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Post("/api/v1/idnot/user/login/:idnot")
|
||||||
|
protected async login(req: Request, response: Response) {
|
||||||
|
try {
|
||||||
|
const id = req.params["idnot"];
|
||||||
|
if (!id) throw new Error("idnot is required");
|
||||||
|
|
||||||
|
const payload = await this.authService.getUserPayload(id!);
|
||||||
|
const accessToken = this.authService.generateAccessToken(payload);
|
||||||
|
const refreshToken = this.authService.generateRefreshToken(payload);
|
||||||
|
|
||||||
|
//success
|
||||||
|
this.httpSuccess(response, { accessToken, refreshToken });
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error)
|
||||||
|
this.httpInternalError(response);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Post("/api/v1/idnot/user/refresh-token")
|
||||||
|
protected async refreshToken(req: Request, response: Response) {
|
||||||
|
try {
|
||||||
|
const authHeader = req.headers["authorization"];
|
||||||
|
const token = authHeader && authHeader.split(" ")[1];
|
||||||
|
|
||||||
|
if (!token) {
|
||||||
|
this.httpBadRequest(response);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let accessToken;
|
||||||
|
this.authService.verifyRefreshToken(token, (err, userPayload) => {
|
||||||
|
if (err) {
|
||||||
|
this.httpUnauthorized(response);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const user = userPayload as JwtPayload;
|
||||||
|
delete user.iat;
|
||||||
|
delete user!.exp;
|
||||||
|
accessToken = this.authService.generateAccessToken(user);
|
||||||
|
});
|
||||||
|
|
||||||
|
//success
|
||||||
|
this.httpSuccess(response, accessToken);
|
||||||
|
} catch (error) {
|
||||||
|
this.httpInternalError(response);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -6,6 +6,8 @@ import { Service } from "typedi";
|
|||||||
import { Customer } from "le-coffre-resources/dist/SuperAdmin";
|
import { Customer } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import { Customers } from "@prisma/client";
|
import { Customers } from "@prisma/client";
|
||||||
import { validateOrReject } from "class-validator";
|
import { validateOrReject } from "class-validator";
|
||||||
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -17,7 +19,7 @@ export default class CustomersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all customers
|
* @description Get all customers
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/customers")
|
@Get("/api/v1/super-admin/customers", [authHandler,ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
@ -40,7 +42,7 @@ export default class CustomersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Create a new customer
|
* @description Create a new customer
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/customers")
|
@Post("/api/v1/super-admin/customers", [authHandler,ruleHandler])
|
||||||
protected async post(req: Request, response: Response) {
|
protected async post(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//init IUser resource with request body values
|
//init IUser resource with request body values
|
||||||
@ -66,7 +68,7 @@ export default class CustomersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Modify a specific customer by uid
|
* @description Modify a specific customer by uid
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/customers/:uid")
|
@Put("/api/v1/super-admin/customers/:uid", [authHandler,ruleHandler])
|
||||||
protected async put(req: Request, response: Response) {
|
protected async put(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -107,7 +109,7 @@ export default class CustomersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get a specific customer by uid
|
* @description Get a specific customer by uid
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/customers/:uid")
|
@Get("/api/v1/super-admin/customers/:uid", [authHandler,ruleHandler])
|
||||||
protected async getOneByUid(req: Request, response: Response) {
|
protected async getOneByUid(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
|
@ -6,6 +6,8 @@ import DeedTypesService from "@Services/super-admin/DeedTypesService/DeedTypesSe
|
|||||||
import { DeedTypes } from "@prisma/client";
|
import { DeedTypes } from "@prisma/client";
|
||||||
import { DeedType } from "le-coffre-resources/dist/SuperAdmin";
|
import { DeedType } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import { validateOrReject } from "class-validator";
|
import { validateOrReject } from "class-validator";
|
||||||
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -18,7 +20,7 @@ export default class DeedTypesController extends ApiController {
|
|||||||
* @description Get all deedtypes
|
* @description Get all deedtypes
|
||||||
* @returns Deedtype[] list of deedtypes
|
* @returns Deedtype[] list of deedtypes
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/deed-types")
|
@Get("/api/v1/super-admin/deed-types", [authHandler,ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
@ -41,7 +43,7 @@ export default class DeedTypesController extends ApiController {
|
|||||||
* @description Create a new deedtype
|
* @description Create a new deedtype
|
||||||
* @returns Deedtype created
|
* @returns Deedtype created
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/deed-types")
|
@Post("/api/v1/super-admin/deed-types", [authHandler,ruleHandler])
|
||||||
protected async post(req: Request, response: Response) {
|
protected async post(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//init DeedType resource with request body values
|
//init DeedType resource with request body values
|
||||||
@ -70,7 +72,7 @@ export default class DeedTypesController extends ApiController {
|
|||||||
* @description Modify a specific deedtype by uid
|
* @description Modify a specific deedtype by uid
|
||||||
* @returns Deedtype modified
|
* @returns Deedtype modified
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/deed-types/:uid")
|
@Put("/api/v1/super-admin/deed-types/:uid", [authHandler,ruleHandler])
|
||||||
protected async put(req: Request, response: Response) {
|
protected async put(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -112,7 +114,7 @@ export default class DeedTypesController extends ApiController {
|
|||||||
* @description Get a specific deedtype by uid
|
* @description Get a specific deedtype by uid
|
||||||
* @returns IDeedtype
|
* @returns IDeedtype
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/deed-types/:uid")
|
@Get("/api/v1/super-admin/deed-types/:uid", [authHandler,ruleHandler])
|
||||||
protected async getOneByUid(req: Request, response: Response) {
|
protected async getOneByUid(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
|
@ -6,6 +6,8 @@ import { Service } from "typedi";
|
|||||||
import { Deeds } from "@prisma/client";
|
import { Deeds } from "@prisma/client";
|
||||||
import { Deed } from "le-coffre-resources/dist/SuperAdmin";
|
import { Deed } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import { validateOrReject } from "class-validator";
|
import { validateOrReject } from "class-validator";
|
||||||
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -18,7 +20,7 @@ export default class DeedsController extends ApiController {
|
|||||||
* @description Get all deeds
|
* @description Get all deeds
|
||||||
* @returns Deed[] list of deeds
|
* @returns Deed[] list of deeds
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/deeds")
|
@Get("/api/v1/super-admin/deeds", [authHandler,ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
@ -41,7 +43,7 @@ export default class DeedsController extends ApiController {
|
|||||||
* @description Get a specific deed by uid
|
* @description Get a specific deed by uid
|
||||||
* @returns Deed
|
* @returns Deed
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/deeds/:uid")
|
@Get("/api/v1/super-admin/deeds/:uid", [authHandler,ruleHandler])
|
||||||
protected async getOneByUid(req: Request, response: Response) {
|
protected async getOneByUid(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -79,7 +81,7 @@ export default class DeedsController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Modify a specific deed by uid
|
* @description Modify a specific deed by uid
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/deeds/:uid")
|
@Put("/api/v1/super-admin/deeds/:uid", [authHandler,ruleHandler])
|
||||||
protected async put(req: Request, response: Response) {
|
protected async put(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
|
@ -7,6 +7,8 @@ import { DocumentTypes } from "@prisma/client";
|
|||||||
import ObjectHydrate from "@Common/helpers/ObjectHydrate";
|
import ObjectHydrate from "@Common/helpers/ObjectHydrate";
|
||||||
import { DocumentType } from "le-coffre-resources/dist/SuperAdmin";
|
import { DocumentType } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import { validateOrReject } from "class-validator";
|
import { validateOrReject } from "class-validator";
|
||||||
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -18,7 +20,7 @@ export default class DocumentTypesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all document-types
|
* @description Get all document-types
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/document-types")
|
@Get("/api/v1/super-admin/document-types", [authHandler,ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
@ -43,7 +45,7 @@ export default class DocumentTypesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Create a new documentType
|
* @description Create a new documentType
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/document-types")
|
@Post("/api/v1/super-admin/document-types", [authHandler,ruleHandler])
|
||||||
protected async post(req: Request, response: Response) {
|
protected async post(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//init DocumentType resource with request body values
|
//init DocumentType resource with request body values
|
||||||
@ -67,7 +69,7 @@ export default class DocumentTypesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Modify a specific documentType by uid
|
* @description Modify a specific documentType by uid
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/document-types/:uid")
|
@Put("/api/v1/super-admin/document-types/:uid", [authHandler,ruleHandler])
|
||||||
protected async put(req: Request, response: Response) {
|
protected async put(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -107,7 +109,7 @@ export default class DocumentTypesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get a specific documentType by uid
|
* @description Get a specific documentType by uid
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/document-types/:uid")
|
@Get("/api/v1/super-admin/document-types/:uid", [authHandler,ruleHandler])
|
||||||
protected async getOneByUid(req: Request, response: Response) {
|
protected async getOneByUid(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
|
@ -6,6 +6,8 @@ import DocumentsService from "@Services/super-admin/DocumentsService/DocumentsSe
|
|||||||
import { Documents } from "@prisma/client";
|
import { Documents } from "@prisma/client";
|
||||||
import { Document } from "le-coffre-resources/dist/SuperAdmin";
|
import { Document } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import { validateOrReject } from "class-validator";
|
import { validateOrReject } from "class-validator";
|
||||||
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -18,7 +20,7 @@ export default class DocumentsController extends ApiController {
|
|||||||
* @description Get all documents
|
* @description Get all documents
|
||||||
* @returns IDocument[] list of documents
|
* @returns IDocument[] list of documents
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/documents")
|
@Get("/api/v1/super-admin/documents", [authHandler,ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
@ -42,7 +44,7 @@ export default class DocumentsController extends ApiController {
|
|||||||
* @description Create a new document
|
* @description Create a new document
|
||||||
* @returns IDocument created
|
* @returns IDocument created
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/documents")
|
@Post("/api/v1/super-admin/documents", [authHandler,ruleHandler])
|
||||||
protected async post(req: Request, response: Response) {
|
protected async post(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//init Document resource with request body values
|
//init Document resource with request body values
|
||||||
@ -70,7 +72,7 @@ export default class DocumentsController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Update a specific document
|
* @description Update a specific document
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/documents/:uid")
|
@Put("/api/v1/super-admin/documents/:uid", [authHandler,ruleHandler])
|
||||||
protected async update(req: Request, response: Response) {
|
protected async update(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -109,7 +111,7 @@ export default class DocumentsController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Delete a specific document
|
* @description Delete a specific document
|
||||||
*/
|
*/
|
||||||
@Delete("/api/v1/super-admin/documents/:uid")
|
@Delete("/api/v1/super-admin/documents/:uid", [authHandler,ruleHandler])
|
||||||
protected async delete(req: Request, response: Response) {
|
protected async delete(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -142,7 +144,7 @@ export default class DocumentsController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get a specific document by uid
|
* @description Get a specific document by uid
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/documents/:uid")
|
@Get("/api/v1/super-admin/documents/:uid", [authHandler,ruleHandler])
|
||||||
protected async getOneByUid(req: Request, response: Response) {
|
protected async getOneByUid(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
|
@ -2,11 +2,13 @@ import { Response, Request } from "express";
|
|||||||
import { Controller, Delete, Get, Post, Put } from "@ControllerPattern/index";
|
import { Controller, Delete, Get, Post, Put } from "@ControllerPattern/index";
|
||||||
import ApiController from "@Common/system/controller-pattern/ApiController";
|
import ApiController from "@Common/system/controller-pattern/ApiController";
|
||||||
import { Service } from "typedi";
|
import { Service } from "typedi";
|
||||||
import FilesService from "@Services/private-services/FilesService/FilesService";
|
import FilesService from "@Services/common/FilesService/FilesService";
|
||||||
import { Files } from "@prisma/client";
|
import { Files } from "@prisma/client";
|
||||||
import { File } from "le-coffre-resources/dist/SuperAdmin";
|
import { File } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import { validateOrReject } from "class-validator";
|
import { validateOrReject } from "class-validator";
|
||||||
import DocumentsService from "@Services/super-admin/DocumentsService/DocumentsService";
|
import DocumentsService from "@Services/super-admin/DocumentsService/DocumentsService";
|
||||||
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -19,7 +21,7 @@ export default class FilesController extends ApiController {
|
|||||||
* @description Get all Files
|
* @description Get all Files
|
||||||
* @returns File[] list of Files
|
* @returns File[] list of Files
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/files")
|
@Get("/api/v1/super-admin/files", [authHandler,ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
@ -42,7 +44,7 @@ export default class FilesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get a specific File by uid
|
* @description Get a specific File by uid
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/files/download/:uid")
|
@Get("/api/v1/super-admin/files/download/:uid", [authHandler,ruleHandler])
|
||||||
protected async download(req: Request, response: Response) {
|
protected async download(req: Request, response: Response) {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
if (!uid) {
|
if (!uid) {
|
||||||
@ -71,7 +73,7 @@ export default class FilesController extends ApiController {
|
|||||||
* @description Create a new File
|
* @description Create a new File
|
||||||
* @returns File created
|
* @returns File created
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/files")
|
@Post("/api/v1/super-admin/files", [authHandler,ruleHandler])
|
||||||
protected async post(req: Request, response: Response) {
|
protected async post(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get file
|
//get file
|
||||||
@ -112,7 +114,7 @@ export default class FilesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Update a specific file
|
* @description Update a specific file
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/files/:uid")
|
@Put("/api/v1/super-admin/files/:uid", [authHandler,ruleHandler])
|
||||||
protected async update(req: Request, response: Response) {
|
protected async update(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -150,7 +152,7 @@ export default class FilesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Delete a specific File
|
* @description Delete a specific File
|
||||||
*/
|
*/
|
||||||
@Delete("/api/v1/super-admin/files/:uid")
|
@Delete("/api/v1/super-admin/files/:uid", [authHandler,ruleHandler])
|
||||||
protected async delete(req: Request, response: Response) {
|
protected async delete(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -188,7 +190,7 @@ export default class FilesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get a specific File by uid
|
* @description Get a specific File by uid
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/files/:uid")
|
@Get("/api/v1/super-admin/files/:uid", [authHandler,ruleHandler])
|
||||||
protected async getOneByUid(req: Request, response: Response) {
|
protected async getOneByUid(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
|
@ -6,6 +6,8 @@ import { Service } from "typedi";
|
|||||||
import { OfficeFolders } from "@prisma/client";
|
import { OfficeFolders } from "@prisma/client";
|
||||||
import { OfficeFolder } from "le-coffre-resources/dist/SuperAdmin";
|
import { OfficeFolder } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import { validateOrReject } from "class-validator";
|
import { validateOrReject } from "class-validator";
|
||||||
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -17,7 +19,7 @@ export default class OfficeFoldersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all folders
|
* @description Get all folders
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/folders")
|
@Get("/api/v1/super-admin/folders", [authHandler,ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
@ -41,7 +43,7 @@ export default class OfficeFoldersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Create a new folder
|
* @description Create a new folder
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/folders")
|
@Post("/api/v1/super-admin/folders", [authHandler,ruleHandler])
|
||||||
protected async post(req: Request, response: Response) {
|
protected async post(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//init OfficeFolder resource with request body values
|
//init OfficeFolder resource with request body values
|
||||||
@ -78,7 +80,7 @@ export default class OfficeFoldersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Modify a specific folder by uid
|
* @description Modify a specific folder by uid
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/folders/:uid")
|
@Put("/api/v1/super-admin/folders/:uid", [authHandler,ruleHandler])
|
||||||
protected async put(req: Request, response: Response) {
|
protected async put(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -120,7 +122,7 @@ export default class OfficeFoldersController extends ApiController {
|
|||||||
* @description Get a specific folder by uid
|
* @description Get a specific folder by uid
|
||||||
* @returns IFolder
|
* @returns IFolder
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/folders/:uid")
|
@Get("/api/v1/super-admin/folders/:uid", [authHandler,ruleHandler])
|
||||||
protected async getOneByUid(req: Request, response: Response) {
|
protected async getOneByUid(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -159,7 +161,7 @@ export default class OfficeFoldersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Delete a specific folder
|
* @description Delete a specific folder
|
||||||
*/
|
*/
|
||||||
@Delete("/api/v1/super-admin/folders/:uid")
|
@Delete("/api/v1/super-admin/folders/:uid", [authHandler,ruleHandler])
|
||||||
protected async delete(req: Request, response: Response) {
|
protected async delete(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
|
@ -6,6 +6,8 @@ import { Service } from "typedi";
|
|||||||
import { Offices } from "@prisma/client";
|
import { Offices } from "@prisma/client";
|
||||||
import { Office as OfficeResource } from "le-coffre-resources/dist/SuperAdmin";
|
import { Office as OfficeResource } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import { validateOrReject } from "class-validator";
|
import { validateOrReject } from "class-validator";
|
||||||
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -16,7 +18,7 @@ export default class OfficesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all offices
|
* @description Get all offices
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/offices")
|
@Get("/api/v1/super-admin/offices", [authHandler, ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
@ -35,7 +37,7 @@ export default class OfficesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Create a new office
|
* @description Create a new office
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/offices")
|
@Post("/api/v1/super-admin/offices", [authHandler,ruleHandler])
|
||||||
protected async post(req: Request, response: Response) {
|
protected async post(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//init IUser resource with request body values
|
//init IUser resource with request body values
|
||||||
@ -58,7 +60,7 @@ export default class OfficesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Modify a specific office by uid
|
* @description Modify a specific office by uid
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/offices/:uid")
|
@Put("/api/v1/super-admin/offices/:uid", [authHandler,ruleHandler])
|
||||||
protected async put(req: Request, response: Response) {
|
protected async put(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -93,7 +95,7 @@ export default class OfficesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get a specific office by uid
|
* @description Get a specific office by uid
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/offices/:uid")
|
@Get("/api/v1/super-admin/offices/:uid", [authHandler,ruleHandler])
|
||||||
protected async getOneByUid(req: Request, response: Response) {
|
protected async getOneByUid(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
|
@ -6,6 +6,8 @@ import { Service } from "typedi";
|
|||||||
import { validateOrReject } from "class-validator";
|
import { validateOrReject } from "class-validator";
|
||||||
import { Role } from "le-coffre-resources/dist/Notary";
|
import { Role } from "le-coffre-resources/dist/Notary";
|
||||||
import { Roles } from "@prisma/client";
|
import { Roles } from "@prisma/client";
|
||||||
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -17,7 +19,7 @@ export default class RolesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all roles
|
* @description Get all roles
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/roles")
|
@Get("/api/v1/super-admin/roles", [authHandler,ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
@ -40,7 +42,7 @@ export default class RolesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Create a new role
|
* @description Create a new role
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/roles")
|
@Post("/api/v1/super-admin/roles", [authHandler,ruleHandler])
|
||||||
protected async getAddresses(req: Request, response: Response) {
|
protected async getAddresses(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//init IRole resource with request body values
|
//init IRole resource with request body values
|
||||||
@ -68,7 +70,7 @@ export default class RolesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Modify a specific role by uid
|
* @description Modify a specific role by uid
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/roles/:uid")
|
@Put("/api/v1/super-admin/roles/:uid", [authHandler,ruleHandler])
|
||||||
protected async put(req: Request, response: Response) {
|
protected async put(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -109,7 +111,7 @@ export default class RolesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get a specific role by uid
|
* @description Get a specific role by uid
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/roles/:uid")
|
@Get("/api/v1/super-admin/roles/:uid", [authHandler,ruleHandler])
|
||||||
protected async getOneByUid(req: Request, response: Response) {
|
protected async getOneByUid(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
|
@ -6,6 +6,8 @@ import { Service } from "typedi";
|
|||||||
import { validateOrReject } from "class-validator";
|
import { validateOrReject } from "class-validator";
|
||||||
import { Rule } from "le-coffre-resources/dist/Notary";
|
import { Rule } from "le-coffre-resources/dist/Notary";
|
||||||
import { Rules } from "@prisma/client";
|
import { Rules } from "@prisma/client";
|
||||||
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -17,7 +19,7 @@ export default class RulesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all rules
|
* @description Get all rules
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/rules")
|
@Get("/api/v1/super-admin/rules", [authHandler,ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
@ -40,7 +42,7 @@ export default class RulesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Create a new rule
|
* @description Create a new rule
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/rules")
|
@Post("/api/v1/super-admin/rules", [authHandler,ruleHandler])
|
||||||
protected async getAddresses(req: Request, response: Response) {
|
protected async getAddresses(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//init IRule resource with request body values
|
//init IRule resource with request body values
|
||||||
@ -68,7 +70,7 @@ export default class RulesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Modify a specific rule by uid
|
* @description Modify a specific rule by uid
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/rules/:uid")
|
@Put("/api/v1/super-admin/rules/:uid", [authHandler,ruleHandler])
|
||||||
protected async put(req: Request, response: Response) {
|
protected async put(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -109,7 +111,7 @@ export default class RulesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get a specific rule by uid
|
* @description Get a specific rule by uid
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/rules/:uid")
|
@Get("/api/v1/super-admin/rules/:uid", [authHandler,ruleHandler])
|
||||||
protected async getOneByUid(req: Request, response: Response) {
|
protected async getOneByUid(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
|
@ -7,6 +7,7 @@ import { validateOrReject } from "class-validator";
|
|||||||
import User from "le-coffre-resources/dist/Notary";
|
import User from "le-coffre-resources/dist/Notary";
|
||||||
import { Users } from "@prisma/client";
|
import { Users } from "@prisma/client";
|
||||||
import authHandler from "@App/middlewares/AuthHandler";
|
import authHandler from "@App/middlewares/AuthHandler";
|
||||||
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -18,7 +19,7 @@ export default class UsersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all users
|
* @description Get all users
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/users", [authHandler])
|
@Get("/api/v1/super-admin/users", [authHandler,ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
@ -41,7 +42,7 @@ export default class UsersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Create a new user
|
* @description Create a new user
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/users", [authHandler])
|
@Post("/api/v1/super-admin/users", [authHandler, ruleHandler])
|
||||||
protected async getAddresses(req: Request, response: Response) {
|
protected async getAddresses(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//init IUser resource with request body values
|
//init IUser resource with request body values
|
||||||
@ -69,7 +70,7 @@ export default class UsersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Modify a specific user by uid
|
* @description Modify a specific user by uid
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/users/:uid")
|
@Put("/api/v1/super-admin/users/:uid", [authHandler,ruleHandler])
|
||||||
protected async put(req: Request, response: Response) {
|
protected async put(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
@ -110,7 +111,7 @@ export default class UsersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get a specific user by uid
|
* @description Get a specific user by uid
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/users/:uid")
|
@Get("/api/v1/super-admin/users/:uid",[authHandler,ruleHandler])
|
||||||
protected async getOneByUid(req: Request, response: Response) {
|
protected async getOneByUid(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
const uid = req.params["uid"];
|
const uid = req.params["uid"];
|
||||||
|
@ -8,7 +8,7 @@ import DeedsController from "./api/super-admin/DeedsController";
|
|||||||
import DeedTypesController from "./api/super-admin/DeedTypesController";
|
import DeedTypesController from "./api/super-admin/DeedTypesController";
|
||||||
import DocumentsController from "./api/super-admin/DocumentsController";
|
import DocumentsController from "./api/super-admin/DocumentsController";
|
||||||
import DocumentTypesController from "./api/super-admin/DocumentTypesController";
|
import DocumentTypesController from "./api/super-admin/DocumentTypesController";
|
||||||
import IdNotUserInfoController from "./api/idnot-user/UserInfoController";
|
import IdNotUserController from "./api/idnot/UserController";
|
||||||
import DocumentsControllerCustomer from "./api/customer/DocumentsController";
|
import DocumentsControllerCustomer from "./api/customer/DocumentsController";
|
||||||
import FilesController from "./api/super-admin/FilesController";
|
import FilesController from "./api/super-admin/FilesController";
|
||||||
import RulesController from "./api/super-admin/RolesController";
|
import RulesController from "./api/super-admin/RolesController";
|
||||||
@ -29,7 +29,7 @@ export default {
|
|||||||
Container.get(DeedTypesController);
|
Container.get(DeedTypesController);
|
||||||
Container.get(DocumentsController);
|
Container.get(DocumentsController);
|
||||||
Container.get(DocumentTypesController);
|
Container.get(DocumentTypesController);
|
||||||
Container.get(IdNotUserInfoController);
|
Container.get(IdNotUserController);
|
||||||
Container.get(FilesController);
|
Container.get(FilesController);
|
||||||
Container.get(DocumentsControllerCustomer);
|
Container.get(DocumentsControllerCustomer);
|
||||||
Container.get(RulesController);
|
Container.get(RulesController);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import HttpCodes from "@Common/system/controller-pattern/HttpCodes";
|
import HttpCodes from "@Common/system/controller-pattern/HttpCodes";
|
||||||
import AuthService from "@Services/private-services/AuthService/AuthService";
|
import AuthService from "@Services/common/AuthService/AuthService";
|
||||||
import { NextFunction, Request, Response } from "express";
|
import { NextFunction, Request, Response } from "express";
|
||||||
import Container from "typedi";
|
import Container from "typedi";
|
||||||
|
|
||||||
@ -7,14 +7,20 @@ export default function authHandler(req: Request, response: Response, next: Next
|
|||||||
const authHeader = req.headers['authorization'];
|
const authHeader = req.headers['authorization'];
|
||||||
const token = authHeader && authHeader.split(' ')[1];
|
const token = authHeader && authHeader.split(' ')[1];
|
||||||
|
|
||||||
if (!token) return response.sendStatus(HttpCodes.UNAUTHORIZED)
|
if (!token) {
|
||||||
|
response.sendStatus(HttpCodes.UNAUTHORIZED)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const authService = Container.get(AuthService);
|
const authService = Container.get(AuthService);
|
||||||
authService.verifyAccessToken(token, (err, userPayload) => {
|
authService.verifyAccessToken(token, (err, userPayload) => {
|
||||||
if (err) return response.sendStatus(HttpCodes.UNAUTHORIZED);
|
if (err) {
|
||||||
req.body.user = userPayload;
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
return;
|
return;
|
||||||
})
|
}
|
||||||
return next();
|
console.log(userPayload);
|
||||||
|
req.body.user = userPayload
|
||||||
|
next();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
22
src/app/middlewares/RulesHandler.ts
Normal file
22
src/app/middlewares/RulesHandler.ts
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import HttpCodes from "@Common/system/controller-pattern/HttpCodes";
|
||||||
|
import { NextFunction, Request, Response } from "express";
|
||||||
|
|
||||||
|
export default async function ruleHandler(req: Request, response: Response, next: NextFunction) {
|
||||||
|
const rules = req.body.user.rules;
|
||||||
|
const service = req.path && req.path.split('/')[4];
|
||||||
|
const namespace = req.path && req.path.split('/')[3];
|
||||||
|
const role = req.body.user.role;
|
||||||
|
|
||||||
|
if(namespace != 'notary' && role != namespace) {
|
||||||
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!rules.includes(req.method + ' ' + service)) {
|
||||||
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- You are about to drop the column `office_role_has_rules_uid` on the `rules` table. All the data in the column will be lost.
|
||||||
|
- You are about to drop the column `role_has_rules_uid` on the `rules` table. All the data in the column will be lost.
|
||||||
|
- Added the required column `office_uid` to the `office_role_has_rules` table without a default value. This is not possible if the table is not empty.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- DropForeignKey
|
||||||
|
ALTER TABLE "rules" DROP CONSTRAINT "rules_office_role_has_rules_uid_fkey";
|
||||||
|
|
||||||
|
-- DropForeignKey
|
||||||
|
ALTER TABLE "rules" DROP CONSTRAINT "rules_role_has_rules_uid_fkey";
|
||||||
|
|
||||||
|
-- DropForeignKey
|
||||||
|
ALTER TABLE "users" DROP CONSTRAINT "users_roles_uid_fkey";
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "office_role_has_rules" ADD COLUMN "office_uid" VARCHAR(255) NOT NULL;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "rules" DROP COLUMN "office_role_has_rules_uid",
|
||||||
|
DROP COLUMN "role_has_rules_uid",
|
||||||
|
ADD COLUMN "officesRolesHasRulesUid" TEXT,
|
||||||
|
ADD COLUMN "rolesHasRulesUid" TEXT;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "users" ADD CONSTRAINT "users_roles_uid_fkey" FOREIGN KEY ("roles_uid") REFERENCES "roles"("uid") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "rules" ADD CONSTRAINT "rules_rolesHasRulesUid_fkey" FOREIGN KEY ("rolesHasRulesUid") REFERENCES "role_has_rules"("uid") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "rules" ADD CONSTRAINT "rules_officesRolesHasRulesUid_fkey" FOREIGN KEY ("officesRolesHasRulesUid") REFERENCES "office_role_has_rules"("uid") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "office_role_has_rules" ADD CONSTRAINT "office_role_has_rules_office_uid_fkey" FOREIGN KEY ("office_uid") REFERENCES "offices"("uid") ON DELETE CASCADE ON UPDATE CASCADE;
|
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- You are about to drop the column `officesRolesHasRulesUid` on the `rules` table. All the data in the column will be lost.
|
||||||
|
- You are about to drop the column `rolesHasRulesUid` on the `rules` table. All the data in the column will be lost.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- DropForeignKey
|
||||||
|
ALTER TABLE "rules" DROP CONSTRAINT "rules_officesRolesHasRulesUid_fkey";
|
||||||
|
|
||||||
|
-- DropForeignKey
|
||||||
|
ALTER TABLE "rules" DROP CONSTRAINT "rules_rolesHasRulesUid_fkey";
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "rules" DROP COLUMN "officesRolesHasRulesUid",
|
||||||
|
DROP COLUMN "rolesHasRulesUid",
|
||||||
|
ADD COLUMN "office_role_has_rules_uid" TEXT,
|
||||||
|
ADD COLUMN "role_has_rules_uid" TEXT;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "rules" ADD CONSTRAINT "rules_role_has_rules_uid_fkey" FOREIGN KEY ("role_has_rules_uid") REFERENCES "role_has_rules"("uid") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "rules" ADD CONSTRAINT "rules_office_role_has_rules_uid_fkey" FOREIGN KEY ("office_role_has_rules_uid") REFERENCES "office_role_has_rules"("uid") ON DELETE SET NULL ON UPDATE CASCADE;
|
@ -0,0 +1,12 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- You are about to drop the column `rule_uid` on the `office_role_has_rules` table. All the data in the column will be lost.
|
||||||
|
- You are about to drop the column `rule_uid` on the `role_has_rules` table. All the data in the column will be lost.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "office_role_has_rules" DROP COLUMN "rule_uid";
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "role_has_rules" DROP COLUMN "rule_uid";
|
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
Warnings:
|
||||||
|
|
||||||
|
- You are about to drop the column `office_role_has_rules_uid` on the `rules` table. All the data in the column will be lost.
|
||||||
|
- You are about to drop the column `role_has_rules_uid` on the `rules` table. All the data in the column will be lost.
|
||||||
|
- Added the required column `rule_uid` to the `office_role_has_rules` table without a default value. This is not possible if the table is not empty.
|
||||||
|
- Added the required column `rule_uid` to the `role_has_rules` table without a default value. This is not possible if the table is not empty.
|
||||||
|
|
||||||
|
*/
|
||||||
|
-- DropForeignKey
|
||||||
|
ALTER TABLE "rules" DROP CONSTRAINT "rules_office_role_has_rules_uid_fkey";
|
||||||
|
|
||||||
|
-- DropForeignKey
|
||||||
|
ALTER TABLE "rules" DROP CONSTRAINT "rules_role_has_rules_uid_fkey";
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "office_role_has_rules" ADD COLUMN "rule_uid" VARCHAR(255) NOT NULL;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "role_has_rules" ADD COLUMN "rule_uid" VARCHAR(255) NOT NULL;
|
||||||
|
|
||||||
|
-- AlterTable
|
||||||
|
ALTER TABLE "rules" DROP COLUMN "office_role_has_rules_uid",
|
||||||
|
DROP COLUMN "role_has_rules_uid";
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "role_has_rules" ADD CONSTRAINT "role_has_rules_rule_uid_fkey" FOREIGN KEY ("rule_uid") REFERENCES "rules"("uid") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "office_role_has_rules" ADD CONSTRAINT "office_role_has_rules_rule_uid_fkey" FOREIGN KEY ("rule_uid") REFERENCES "rules"("uid") ON DELETE CASCADE ON UPDATE CASCADE;
|
@ -67,19 +67,20 @@ model Users {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model Offices {
|
model Offices {
|
||||||
uid String @id @unique @default(uuid())
|
uid String @id @unique @default(uuid())
|
||||||
idNot String @unique @db.VarChar(255)
|
idNot String @unique @db.VarChar(255)
|
||||||
name String @db.VarChar(255)
|
name String @db.VarChar(255)
|
||||||
crpcen String @unique @db.VarChar(255)
|
crpcen String @unique @db.VarChar(255)
|
||||||
address Addresses @relation(fields: [address_uid], references: [uid], onDelete: Cascade)
|
address Addresses @relation(fields: [address_uid], references: [uid], onDelete: Cascade)
|
||||||
address_uid String @unique @db.VarChar(255)
|
address_uid String @unique @db.VarChar(255)
|
||||||
office_status EOfficeStatus @default(DESACTIVATED)
|
office_status EOfficeStatus @default(DESACTIVATED)
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now())
|
||||||
updated_at DateTime? @updatedAt
|
updated_at DateTime? @updatedAt
|
||||||
deed_types DeedTypes[]
|
deed_types DeedTypes[]
|
||||||
users Users[]
|
users Users[]
|
||||||
office_folders OfficeFolders[]
|
office_folders OfficeFolders[]
|
||||||
document_types DocumentTypes[]
|
document_types DocumentTypes[]
|
||||||
|
office_role_has_rules OfficesRolesHasRules[]
|
||||||
|
|
||||||
@@map("offices")
|
@@map("offices")
|
||||||
}
|
}
|
||||||
@ -299,26 +300,24 @@ model DeedTypeHasDocumentTypes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
model Roles {
|
model Roles {
|
||||||
uid String @id @unique @default(uuid())
|
uid String @id @unique @default(uuid())
|
||||||
name String @db.VarChar(255)
|
name String @db.VarChar(255)
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now())
|
||||||
updated_at DateTime? @updatedAt
|
updated_at DateTime? @updatedAt
|
||||||
role_has_rules RolesHasRules[]
|
role_has_rules RolesHasRules[]
|
||||||
office_role_has_rules OfficesRolesHasRules[]
|
office_role_has_rules OfficesRolesHasRules[]
|
||||||
users Users[]
|
users Users[]
|
||||||
|
|
||||||
@@map("roles")
|
@@map("roles")
|
||||||
}
|
}
|
||||||
|
|
||||||
model Rules {
|
model Rules {
|
||||||
uid String @id @unique @default(uuid())
|
uid String @id @unique @default(uuid())
|
||||||
name String @db.VarChar(255)
|
name String @db.VarChar(255)
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now())
|
||||||
updated_at DateTime? @updatedAt
|
updated_at DateTime? @updatedAt
|
||||||
role_has_rules RolesHasRules? @relation(fields: [role_has_rules_uid], references: [uid])
|
role_has_rules RolesHasRules[]
|
||||||
role_has_rules_uid String?
|
office_roles_has_rules OfficesRolesHasRules[]
|
||||||
office_role_has_rules OfficesRolesHasRules? @relation(fields: [office_role_has_rules_uid], references: [uid])
|
|
||||||
office_role_has_rules_uid String?
|
|
||||||
|
|
||||||
@@map("rules")
|
@@map("rules")
|
||||||
}
|
}
|
||||||
@ -327,22 +326,24 @@ model RolesHasRules {
|
|||||||
uid String @id @unique @default(uuid())
|
uid String @id @unique @default(uuid())
|
||||||
role Roles @relation(fields: [role_uid], references: [uid], onDelete: Cascade)
|
role Roles @relation(fields: [role_uid], references: [uid], onDelete: Cascade)
|
||||||
role_uid String @db.VarChar(255)
|
role_uid String @db.VarChar(255)
|
||||||
|
rule Rules @relation(fields: [rule_uid], references: [uid], onDelete: Cascade)
|
||||||
rule_uid String @db.VarChar(255)
|
rule_uid String @db.VarChar(255)
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now())
|
||||||
updated_at DateTime? @updatedAt
|
updated_at DateTime? @updatedAt
|
||||||
rules Rules[]
|
|
||||||
|
|
||||||
@@map("role_has_rules")
|
@@map("role_has_rules")
|
||||||
}
|
}
|
||||||
|
|
||||||
model OfficesRolesHasRules {
|
model OfficesRolesHasRules {
|
||||||
uid String @id @unique @default(uuid())
|
uid String @id @unique @default(uuid())
|
||||||
|
office Offices @relation(fields: [office_uid], references: [uid], onDelete: Cascade)
|
||||||
role Roles @relation(fields: [role_uid], references: [uid], onDelete: Cascade)
|
role Roles @relation(fields: [role_uid], references: [uid], onDelete: Cascade)
|
||||||
|
rule Rules @relation(fields: [rule_uid], references: [uid], onDelete: Cascade)
|
||||||
|
office_uid String @db.VarChar(255)
|
||||||
role_uid String @db.VarChar(255)
|
role_uid String @db.VarChar(255)
|
||||||
rule_uid String @db.VarChar(255)
|
rule_uid String @db.VarChar(255)
|
||||||
created_at DateTime? @default(now())
|
created_at DateTime? @default(now())
|
||||||
updated_at DateTime? @updatedAt
|
updated_at DateTime? @updatedAt
|
||||||
rules Rules[]
|
|
||||||
|
|
||||||
@@map("office_role_has_rules")
|
@@map("office_role_has_rules")
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,9 @@ import {
|
|||||||
ECustomerStatus,
|
ECustomerStatus,
|
||||||
PrismaClient,
|
PrismaClient,
|
||||||
Roles,
|
Roles,
|
||||||
|
OfficesRolesHasRules,
|
||||||
|
RolesHasRules,
|
||||||
|
Rules,
|
||||||
} from "@prisma/client";
|
} from "@prisma/client";
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
@ -104,6 +107,9 @@ import {
|
|||||||
const uidRole1: string = randomString();
|
const uidRole1: string = randomString();
|
||||||
const uidRole2: string = randomString();
|
const uidRole2: string = randomString();
|
||||||
|
|
||||||
|
const uidRule1: string = randomString();
|
||||||
|
const uidRule2: string = randomString();
|
||||||
|
|
||||||
const uidOfficeFolder1: string = randomString();
|
const uidOfficeFolder1: string = randomString();
|
||||||
const uidOfficeFolder2: string = randomString();
|
const uidOfficeFolder2: string = randomString();
|
||||||
const uidOfficeFolder3: string = randomString();
|
const uidOfficeFolder3: string = randomString();
|
||||||
@ -167,6 +173,12 @@ import {
|
|||||||
const uidOfficeFolderHasCustomer3: string = randomString();
|
const uidOfficeFolderHasCustomer3: string = randomString();
|
||||||
const uidOfficeFolderHasCustomer4: string = randomString();
|
const uidOfficeFolderHasCustomer4: string = randomString();
|
||||||
|
|
||||||
|
const uidOfficeRoleHasRule1: string = randomString();
|
||||||
|
const uidOfficeRoleHasRule2: string = randomString();
|
||||||
|
|
||||||
|
const uidRoleHasRule1: string = randomString();
|
||||||
|
const uidRoleHasRule2: string = randomString();
|
||||||
|
|
||||||
const uidDeedHasDocumentType1: string = randomString();
|
const uidDeedHasDocumentType1: string = randomString();
|
||||||
const uidDeedHasDocumentType2: string = randomString();
|
const uidDeedHasDocumentType2: string = randomString();
|
||||||
const uidDeedHasDocumentType3: string = randomString();
|
const uidDeedHasDocumentType3: string = randomString();
|
||||||
@ -1688,6 +1700,57 @@ import {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const officeRoleHasRules: OfficesRolesHasRules[] = [
|
||||||
|
{
|
||||||
|
uid: uidOfficeRoleHasRule1,
|
||||||
|
office_uid: uidOffice1,
|
||||||
|
role_uid: uidRole1,
|
||||||
|
rule_uid: uidRule1,
|
||||||
|
created_at: new Date(),
|
||||||
|
updated_at: new Date(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
uid: uidOfficeRoleHasRule2,
|
||||||
|
office_uid: uidOffice1,
|
||||||
|
role_uid: uidRole2,
|
||||||
|
rule_uid: uidRule2,
|
||||||
|
created_at: new Date(),
|
||||||
|
updated_at: new Date(),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const roleHasRules: RolesHasRules[] = [
|
||||||
|
{
|
||||||
|
uid: uidRoleHasRule1,
|
||||||
|
role_uid: uidRole1,
|
||||||
|
rule_uid: uidRule2,
|
||||||
|
created_at: new Date(),
|
||||||
|
updated_at: new Date(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
uid: uidRoleHasRule2,
|
||||||
|
role_uid: uidRole2,
|
||||||
|
rule_uid: uidRule1,
|
||||||
|
created_at: new Date(),
|
||||||
|
updated_at: new Date(),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const rules: Rules[] = [
|
||||||
|
{
|
||||||
|
uid: uidRule1,
|
||||||
|
name: 'GET users',
|
||||||
|
created_at: new Date(),
|
||||||
|
updated_at: new Date(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
uid: uidRule2,
|
||||||
|
name: 'GET offices',
|
||||||
|
created_at: new Date(),
|
||||||
|
updated_at: new Date(),
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
const deedTypeHasDocumentTypes: DeedTypeHasDocumentTypes[] = [
|
const deedTypeHasDocumentTypes: DeedTypeHasDocumentTypes[] = [
|
||||||
{
|
{
|
||||||
uid: uidDeedTypeHasDocumentType1,
|
uid: uidDeedTypeHasDocumentType1,
|
||||||
@ -1868,6 +1931,10 @@ import {
|
|||||||
await prisma.roles.create({ data: role });
|
await prisma.roles.create({ data: role });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const rule of rules) {
|
||||||
|
await prisma.rules.create({ data: rule });
|
||||||
|
}
|
||||||
|
|
||||||
for (const user of users) {
|
for (const user of users) {
|
||||||
await prisma.users.create({ data: user });
|
await prisma.users.create({ data: user });
|
||||||
}
|
}
|
||||||
@ -1899,6 +1966,14 @@ import {
|
|||||||
await prisma.officeFolderHasCustomers.create({ data: officeFolderHasCustomer });
|
await prisma.officeFolderHasCustomers.create({ data: officeFolderHasCustomer });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const officeRoleHasRule of officeRoleHasRules) {
|
||||||
|
await prisma.officesRolesHasRules.create({ data: officeRoleHasRule });
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const roleHasRule of roleHasRules) {
|
||||||
|
await prisma.rolesHasRules.create({ data: roleHasRule });
|
||||||
|
}
|
||||||
|
|
||||||
for (const deedHasDocumentType of deedHasDocumentTypes) {
|
for (const deedHasDocumentType of deedHasDocumentTypes) {
|
||||||
await prisma.deedHasDocumentTypes.create({ data: deedHasDocumentType });
|
await prisma.deedHasDocumentTypes.create({ data: deedHasDocumentType });
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,17 @@ export default class RolesRepository extends BaseRepository {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
if (role.office_role_has_rules) {
|
||||||
|
createArgs.data.office_role_has_rules = {
|
||||||
|
createMany: {
|
||||||
|
data: role.office_role_has_rules.rules.map((relation) => ({
|
||||||
|
office_uid: role.office_role_has_rules!.office.uid!,
|
||||||
|
rule_uid: relation.uid!,
|
||||||
|
})),
|
||||||
|
skipDuplicates: true,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
return this.model.create(createArgs);
|
return this.model.create(createArgs);
|
||||||
}
|
}
|
||||||
@ -66,11 +77,12 @@ export default class RolesRepository extends BaseRepository {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
if(role.office_role_has_rules) {
|
if (role.office_role_has_rules) {
|
||||||
updateArgs.data.office_role_has_rules = {
|
updateArgs.data.office_role_has_rules = {
|
||||||
deleteMany: { role_uid: role.uid },
|
deleteMany: { role_uid: role.uid },
|
||||||
createMany: {
|
createMany: {
|
||||||
data: role.office_role_has_rules.rules.map((relation) => ({
|
data: role.office_role_has_rules.rules.map((relation) => ({
|
||||||
|
office_uid: role.office_role_has_rules!.office.uid!,
|
||||||
rule_uid: relation.uid!,
|
rule_uid: relation.uid!,
|
||||||
})),
|
})),
|
||||||
skipDuplicates: true,
|
skipDuplicates: true,
|
||||||
|
16
src/common/system/OpenIdInterface.ts
Normal file
16
src/common/system/OpenIdInterface.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
export type Payload = {
|
||||||
|
sub: string;
|
||||||
|
email: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type Tokens = {
|
||||||
|
access_token: string;
|
||||||
|
expires_in: number;
|
||||||
|
id_token: string;
|
||||||
|
token_type: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default interface OpenIdInterface {
|
||||||
|
verifyIdToken(signingKey: string): Promise<Payload>;
|
||||||
|
getSigningKeys(jwksUri: string): Promise<string[]>;
|
||||||
|
}
|
@ -11,6 +11,7 @@ import { BackendVariables } from "@Common/config/variables/Variables";
|
|||||||
//import fileHandler from "@App/middlewares/FileHandler";
|
//import fileHandler from "@App/middlewares/FileHandler";
|
||||||
import multer from "multer";
|
import multer from "multer";
|
||||||
|
|
||||||
|
|
||||||
const storage = multer.memoryStorage();
|
const storage = multer.memoryStorage();
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
|
65
src/services/common/AuthService/AuthService.ts
Normal file
65
src/services/common/AuthService/AuthService.ts
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
import jwt, { VerifyCallback } from "jsonwebtoken";
|
||||||
|
import BaseService from "@Services/BaseService";
|
||||||
|
import "reflect-metadata";
|
||||||
|
import { BackendVariables } from "@Common/config/variables/Variables";
|
||||||
|
import { Service } from "typedi";
|
||||||
|
import UsersService from "@Services/super-admin/UsersService/UsersService";
|
||||||
|
|
||||||
|
export type UserPayload = {
|
||||||
|
uid: string;
|
||||||
|
idNot: string;
|
||||||
|
office_idNot: string;
|
||||||
|
role: string;
|
||||||
|
rules: string[];
|
||||||
|
};
|
||||||
|
|
||||||
|
@Service()
|
||||||
|
export default class AuthService extends BaseService {
|
||||||
|
constructor(protected variables: BackendVariables, private userService: UsersService) {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async getUserPayload(id: string): Promise<UserPayload> {
|
||||||
|
const user: any = (
|
||||||
|
await this.userService.get({
|
||||||
|
where: { idNot: id },
|
||||||
|
include: {
|
||||||
|
role: { include: { role_has_rules: { include: { rule: true } }, office_role_has_rules: { include: { rule: true } } } },
|
||||||
|
office_membership: true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
)[0];
|
||||||
|
|
||||||
|
if (!user) throw new Error("User not found");
|
||||||
|
|
||||||
|
let rules: string[] = [];
|
||||||
|
if (user.role.office_role_has_rules.length) {
|
||||||
|
user.role.office_role_has_rules.forEach((relation: any) => {
|
||||||
|
if (relation.office_uid === user.office_membership.uid) rules.push(relation.rule.name);
|
||||||
|
});
|
||||||
|
return { uid: user.uid, idNot: user.idNot, office_idNot: user.office_membership.idNot, role: user.role.name, rules: rules };
|
||||||
|
}
|
||||||
|
if (!rules.length) {
|
||||||
|
user.role.role_has_rules.forEach((relation: any) => {
|
||||||
|
rules.push(relation.rule.name);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return { uid: user.uid, idNot: user.idNot, office_idNot: user.office_membership.idNot, role: user.role.name, rules: rules };
|
||||||
|
}
|
||||||
|
|
||||||
|
public generateAccessToken(user: any): string {
|
||||||
|
return jwt.sign({ ...user }, this.variables.ACCESS_TOKEN_SECRET, { expiresIn: "15m" });
|
||||||
|
}
|
||||||
|
|
||||||
|
public generateRefreshToken(user: any): string {
|
||||||
|
return jwt.sign({ ...user }, this.variables.REFRESH_TOKEN_SECRET, { expiresIn: "1h" });
|
||||||
|
}
|
||||||
|
|
||||||
|
public verifyAccessToken(token: string, callback?: VerifyCallback) {
|
||||||
|
return jwt.verify(token, this.variables.ACCESS_TOKEN_SECRET, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
public verifyRefreshToken(token: string, callback?: VerifyCallback) {
|
||||||
|
return jwt.verify(token, this.variables.REFRESH_TOKEN_SECRET, callback);
|
||||||
|
}
|
||||||
|
}
|
@ -1,69 +0,0 @@
|
|||||||
import jwt, { VerifyCallback } from "jsonwebtoken";
|
|
||||||
import BaseService from "@Services/BaseService";
|
|
||||||
import "reflect-metadata";
|
|
||||||
import { BackendVariables } from "@Common/config/variables/Variables";
|
|
||||||
import { Service } from "typedi";
|
|
||||||
|
|
||||||
type IdNotTokens = {
|
|
||||||
access_token: string;
|
|
||||||
id_token: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
@Service()
|
|
||||||
export default class AuthService extends BaseService {
|
|
||||||
|
|
||||||
constructor(protected variables: BackendVariables) {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description : Get IdNot id_token and access_token
|
|
||||||
* @throws {Error} If jwt pair cannot be get
|
|
||||||
*/
|
|
||||||
public async getUserFromIdNotTokens(code: string) {
|
|
||||||
const tokens = await this.getIdNotTokens(code);
|
|
||||||
return jwt.decode(tokens.id_token);
|
|
||||||
}
|
|
||||||
|
|
||||||
private async getIdNotTokens(code: string): Promise<IdNotTokens> {
|
|
||||||
const url = new URL(
|
|
||||||
this.variables.IDNOT_CONNEXION_URL.concat("?") +
|
|
||||||
new URLSearchParams({
|
|
||||||
client_id: this.variables.IDNOT_CLIENT_ID,
|
|
||||||
client_secret: this.variables.IDNOT_CLIENT_SECRET,
|
|
||||||
redirect_uri: this.variables.IDNOT_REDIRECT_URL,
|
|
||||||
code: code,
|
|
||||||
grant_type: "authorization_code",
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
try {
|
|
||||||
const headers = new Headers({
|
|
||||||
"Content-Type": "application/x-www-form-urlencoded",
|
|
||||||
});
|
|
||||||
const res = await fetch(url, {
|
|
||||||
method: "POST",
|
|
||||||
headers: headers,
|
|
||||||
});
|
|
||||||
const data = await res.json();
|
|
||||||
return data as IdNotTokens;
|
|
||||||
} catch (error) {
|
|
||||||
throw new Error();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public generateAccessToken(user: any) {
|
|
||||||
return jwt.sign({...user}, this.variables.ACCESS_TOKEN_SECRET, { expiresIn: "15m" });
|
|
||||||
}
|
|
||||||
|
|
||||||
public generateRefreshToken(user: any) {
|
|
||||||
return jwt.sign({...user}, this.variables.REFRESH_TOKEN_SECRET, { expiresIn: "1h" });
|
|
||||||
}
|
|
||||||
|
|
||||||
public verifyAccessToken(token: string, callback?: VerifyCallback) {
|
|
||||||
return jwt.verify(token, this.variables.ACCESS_TOKEN_SECRET, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
public verifyRefreshToken(token: string, callback?: VerifyCallback) {
|
|
||||||
return jwt.verify(token, this.variables.REFRESH_TOKEN_SECRET, callback);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user