add more input checks and format
This commit is contained in:
parent
4e632e27ed
commit
afec5a5cea
@ -24,13 +24,13 @@ export default class UserController extends ApiController {
|
|||||||
try {
|
try {
|
||||||
const code = req.params["code"];
|
const code = req.params["code"];
|
||||||
if (!code) throw new Error("code is required");
|
if (!code) throw new Error("code is required");
|
||||||
const token = await fetch('https://qual-connexion.idnot.fr/IdPOAuth2/token/idnot_idp_v1', {method: 'POST'});
|
const token = await fetch("https://qual-connexion.idnot.fr/IdPOAuth2/token/idnot_idp_v1", { method: "POST" });
|
||||||
console.log(token);
|
console.log(token);
|
||||||
//const user = await this.authService.getUserFromIdNotTokens(code!);
|
//const user = await this.authService.getUserFromIdNotTokens(code!);
|
||||||
//success
|
//success
|
||||||
this.httpSuccess(response);
|
this.httpSuccess(response);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error)
|
console.log(error);
|
||||||
this.httpInternalError(response);
|
this.httpInternalError(response);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -46,10 +46,9 @@ export default class UserController extends ApiController {
|
|||||||
const accessToken = this.authService.generateAccessToken(payload);
|
const accessToken = this.authService.generateAccessToken(payload);
|
||||||
const refreshToken = this.authService.generateRefreshToken(payload);
|
const refreshToken = this.authService.generateRefreshToken(payload);
|
||||||
|
|
||||||
//success
|
//success
|
||||||
this.httpSuccess(response, { accessToken, refreshToken });
|
this.httpSuccess(response, { accessToken, refreshToken });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error);
|
|
||||||
this.httpInternalError(response);
|
this.httpInternalError(response);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -73,9 +72,9 @@ export default class UserController extends ApiController {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const user = userPayload as JwtPayload;
|
const user = userPayload as JwtPayload;
|
||||||
delete user.iat;
|
delete user.iat;
|
||||||
delete user!.exp;
|
delete user!.exp;
|
||||||
accessToken = this.authService.generateAccessToken(user);
|
accessToken = this.authService.generateAccessToken(user);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ export default class CustomersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all customers
|
* @description Get all customers
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/customers", [authHandler,ruleHandler])
|
@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
|
||||||
@ -42,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", [authHandler,ruleHandler])
|
@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
|
||||||
@ -68,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", [authHandler,ruleHandler])
|
@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"];
|
||||||
@ -86,7 +86,7 @@ export default class CustomersController extends ApiController {
|
|||||||
|
|
||||||
//init IUser resource with request body values
|
//init IUser resource with request body values
|
||||||
const customerEntity = Customer.hydrate<Customer>(req.body);
|
const customerEntity = Customer.hydrate<Customer>(req.body);
|
||||||
|
|
||||||
//validate user
|
//validate user
|
||||||
await validateOrReject(customerEntity, { groups: ["updateCustomer"], forbidUnknownValues: false });
|
await validateOrReject(customerEntity, { groups: ["updateCustomer"], forbidUnknownValues: false });
|
||||||
|
|
||||||
@ -109,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", [authHandler,ruleHandler])
|
@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"];
|
||||||
|
@ -21,13 +21,13 @@ 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", [authHandler,ruleHandler])
|
@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
|
||||||
const query = JSON.parse(req.query["q"] as string);
|
const query = JSON.parse(req.query["q"] as string);
|
||||||
const officeId: string = req.body.user.office_Id;
|
const officeId: string = req.body.user.office_Id;
|
||||||
const officeWhereInput: Prisma.DeedTypesWhereInput = {office: {uid: officeId}};
|
const officeWhereInput: Prisma.DeedTypesWhereInput = { office: { uid: officeId } };
|
||||||
query.where = officeWhereInput;
|
query.where = officeWhereInput;
|
||||||
|
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
@ -48,7 +48,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", [authHandler,ruleHandler,deedTypeHandler])
|
@Post("/api/v1/super-admin/deed-types", [authHandler, ruleHandler, deedTypeHandler])
|
||||||
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
|
||||||
@ -77,7 +77,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", [authHandler,ruleHandler,deedTypeHandler])
|
@Put("/api/v1/super-admin/deed-types/:uid", [authHandler, ruleHandler, deedTypeHandler])
|
||||||
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"];
|
||||||
@ -92,7 +92,7 @@ export default class DeedTypesController extends ApiController {
|
|||||||
this.httpNotFoundRequest(response, "deed type not found");
|
this.httpNotFoundRequest(response, "deed type not found");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//init DeedType resource with request body values
|
//init DeedType resource with request body values
|
||||||
const deedTypeEntity = DeedType.hydrate<DeedType>(req.body);
|
const deedTypeEntity = DeedType.hydrate<DeedType>(req.body);
|
||||||
|
|
||||||
@ -119,7 +119,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", [authHandler,ruleHandler,deedTypeHandler])
|
@Get("/api/v1/super-admin/deed-types/:uid", [authHandler, ruleHandler, deedTypeHandler])
|
||||||
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"];
|
||||||
|
@ -21,13 +21,13 @@ 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", [authHandler,ruleHandler])
|
@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
|
||||||
const query = JSON.parse(req.query["q"] as string);
|
const query = JSON.parse(req.query["q"] as string);
|
||||||
const officeId: string = req.body.user.office_Id;
|
const officeId: string = req.body.user.office_Id;
|
||||||
const officeWhereInput: Prisma.DeedsWhereInput = { deed_type: {office: {uid: officeId}}};
|
const officeWhereInput: Prisma.DeedsWhereInput = { deed_type: { office: { uid: officeId } } };
|
||||||
query.where = officeWhereInput;
|
query.where = officeWhereInput;
|
||||||
|
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
@ -48,7 +48,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", [authHandler,ruleHandler,deedHandler])
|
@Get("/api/v1/super-admin/deeds/:uid", [authHandler, ruleHandler, deedHandler])
|
||||||
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"];
|
||||||
@ -86,7 +86,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", [authHandler,ruleHandler,deedHandler])
|
@Put("/api/v1/super-admin/deeds/:uid", [authHandler, ruleHandler, deedHandler])
|
||||||
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"];
|
||||||
@ -104,9 +104,9 @@ export default class DeedsController extends ApiController {
|
|||||||
|
|
||||||
//init OfficeFolder resource with request body values
|
//init OfficeFolder resource with request body values
|
||||||
const deedEntity = Deed.hydrate<Deed>(req.body);
|
const deedEntity = Deed.hydrate<Deed>(req.body);
|
||||||
|
|
||||||
//validate folder
|
//validate folder
|
||||||
await validateOrReject(deedEntity, { groups: ["updateDeed"], forbidUnknownValues: false });
|
await validateOrReject(deedEntity, { groups: ["updateDeed"], forbidUnknownValues: false });
|
||||||
|
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
const deedEntityUpdated = await this.deedsService.update(uid, deedEntity);
|
const deedEntityUpdated = await this.deedsService.update(uid, deedEntity);
|
||||||
|
@ -21,13 +21,13 @@ export default class DocumentTypesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all document-types
|
* @description Get all document-types
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/document-types", [authHandler,ruleHandler])
|
@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
|
||||||
const query = JSON.parse(req.query["q"] as string);
|
const query = JSON.parse(req.query["q"] as string);
|
||||||
const officeId: string = req.body.user.office_Id;
|
const officeId: string = req.body.user.office_Id;
|
||||||
const officeWhereInput: Prisma.DocumentTypesWhereInput = {office: {uid: officeId}};
|
const officeWhereInput: Prisma.DocumentTypesWhereInput = { office: { uid: officeId } };
|
||||||
query.where = officeWhereInput;
|
query.where = officeWhereInput;
|
||||||
|
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
@ -49,7 +49,7 @@ export default class DocumentTypesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Create a new documentType
|
* @description Create a new documentType
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/document-types", [authHandler,ruleHandler,documentTypeHandler])
|
@Post("/api/v1/super-admin/document-types", [authHandler, ruleHandler, documentTypeHandler])
|
||||||
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
|
||||||
@ -73,7 +73,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", [authHandler,ruleHandler,documentTypeHandler])
|
@Put("/api/v1/super-admin/document-types/:uid", [authHandler, ruleHandler, documentTypeHandler])
|
||||||
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"];
|
||||||
@ -92,7 +92,7 @@ export default class DocumentTypesController extends ApiController {
|
|||||||
const documentTypeEntity = DocumentType.hydrate<DocumentType>(req.body);
|
const documentTypeEntity = DocumentType.hydrate<DocumentType>(req.body);
|
||||||
|
|
||||||
//validate user
|
//validate user
|
||||||
await validateOrReject(documentTypeEntity, { groups: ["update"] });
|
await validateOrReject(documentTypeEntity, { groups: ["updateDocumentType"] });
|
||||||
|
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
const documentTypeEntityUpdated = await this.documentTypesService.update(uid, documentTypeEntity);
|
const documentTypeEntityUpdated = await this.documentTypesService.update(uid, documentTypeEntity);
|
||||||
@ -113,7 +113,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", [authHandler,ruleHandler,documentTypeHandler])
|
@Get("/api/v1/super-admin/document-types/:uid", [authHandler, ruleHandler, documentTypeHandler])
|
||||||
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"];
|
||||||
|
@ -21,13 +21,13 @@ 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", [authHandler,ruleHandler])
|
@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
|
||||||
const query = JSON.parse(req.query["q"] as string);
|
const query = JSON.parse(req.query["q"] as string);
|
||||||
const officeId: string = req.body.user.office_Id;
|
const officeId: string = req.body.user.office_Id;
|
||||||
const officeWhereInput: Prisma.DocumentsWhereInput = { document_type: {office: {uid: officeId}}};
|
const officeWhereInput: Prisma.DocumentsWhereInput = { document_type: { office: { uid: officeId } } };
|
||||||
query.where = officeWhereInput;
|
query.where = officeWhereInput;
|
||||||
|
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
@ -48,7 +48,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", [authHandler,ruleHandler,documentHandler])
|
@Post("/api/v1/super-admin/documents", [authHandler, ruleHandler, documentHandler])
|
||||||
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
|
||||||
@ -76,7 +76,7 @@ export default class DocumentsController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Update a specific document
|
* @description Update a specific document
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/documents/:uid", [authHandler,ruleHandler,documentHandler])
|
@Put("/api/v1/super-admin/documents/:uid", [authHandler, ruleHandler, documentHandler])
|
||||||
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"];
|
||||||
@ -84,7 +84,7 @@ export default class DocumentsController extends ApiController {
|
|||||||
this.httpBadRequest(response, "No uid provided");
|
this.httpBadRequest(response, "No uid provided");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const documentFound = await this.documentsService.getByUid(uid);
|
const documentFound = await this.documentsService.getByUid(uid);
|
||||||
|
|
||||||
if (!documentFound) {
|
if (!documentFound) {
|
||||||
@ -93,7 +93,7 @@ export default class DocumentsController extends ApiController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//init Document resource with request body values
|
//init Document resource with request body values
|
||||||
const documentEntity = Document.hydrate<Document>(req.body);
|
const documentEntity = Document.hydrate<Document>(req.body);
|
||||||
|
|
||||||
//validate document
|
//validate document
|
||||||
await validateOrReject(documentEntity, { groups: ["updateDocument"] });
|
await validateOrReject(documentEntity, { groups: ["updateDocument"] });
|
||||||
@ -115,7 +115,7 @@ export default class DocumentsController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Delete a specific document
|
* @description Delete a specific document
|
||||||
*/
|
*/
|
||||||
@Delete("/api/v1/super-admin/documents/:uid", [authHandler,ruleHandler,documentHandler])
|
@Delete("/api/v1/super-admin/documents/:uid", [authHandler, ruleHandler, documentHandler])
|
||||||
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"];
|
||||||
@ -148,7 +148,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", [authHandler,ruleHandler,documentHandler])
|
@Get("/api/v1/super-admin/documents/:uid", [authHandler, ruleHandler, documentHandler])
|
||||||
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"];
|
||||||
|
@ -9,7 +9,7 @@ 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 authHandler from "@App/middlewares/AuthHandler";
|
||||||
import ruleHandler from "@App/middlewares/RulesHandler";
|
import ruleHandler from "@App/middlewares/RulesHandler";
|
||||||
import fileHandler from "@App/middlewares/FileHandler";
|
import fileHandler from "@App/middlewares/OfficeMembershipHandlers/FileHandler";
|
||||||
|
|
||||||
@Controller()
|
@Controller()
|
||||||
@Service()
|
@Service()
|
||||||
@ -22,13 +22,13 @@ 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", [authHandler,ruleHandler])
|
@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
|
||||||
const query = JSON.parse(req.query["q"] as string);
|
const query = JSON.parse(req.query["q"] as string);
|
||||||
const officeId: string = req.body.user.office_Id;
|
const officeId: string = req.body.user.office_Id;
|
||||||
const officeWhereInput: Prisma.FilesWhereInput = {document: {folder: {office: {uid: officeId}}}};
|
const officeWhereInput: Prisma.FilesWhereInput = { document: { folder: { office: { uid: officeId } } } };
|
||||||
query.where = officeWhereInput;
|
query.where = officeWhereInput;
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
const fileEntities = await this.filesService.get(query);
|
const fileEntities = await this.filesService.get(query);
|
||||||
@ -47,7 +47,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", [authHandler,ruleHandler,fileHandler])
|
@Get("/api/v1/super-admin/files/download/:uid", [authHandler, ruleHandler, fileHandler])
|
||||||
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) {
|
||||||
@ -76,7 +76,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", [authHandler,ruleHandler,fileHandler])
|
@Post("/api/v1/super-admin/files", [authHandler, ruleHandler, fileHandler])
|
||||||
protected async post(req: Request, response: Response) {
|
protected async post(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get file
|
//get file
|
||||||
@ -93,13 +93,8 @@ export default class FilesController extends ApiController {
|
|||||||
|
|
||||||
const document = await this.documentService.getByUid(fileEntity.document!.uid!);
|
const document = await this.documentService.getByUid(fileEntity.document!.uid!);
|
||||||
|
|
||||||
if(!document){
|
document!.document_status = "DEPOSITED";
|
||||||
this.httpNotFoundRequest(response, "document not found");
|
await this.documentService.update(document!.uid!, document!);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
document.document_status = "DEPOSITED";
|
|
||||||
await this.documentService.update(document.uid!, document);
|
|
||||||
|
|
||||||
//Hydrate ressource with prisma entity
|
//Hydrate ressource with prisma entity
|
||||||
const fileEntityHydrated = File.hydrate<File>(fileEntityCreated, {
|
const fileEntityHydrated = File.hydrate<File>(fileEntityCreated, {
|
||||||
@ -117,7 +112,7 @@ export default class FilesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Update a specific file
|
* @description Update a specific file
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/files/:uid", [authHandler,ruleHandler,fileHandler])
|
@Put("/api/v1/super-admin/files/:uid", [authHandler, ruleHandler, fileHandler])
|
||||||
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"];
|
||||||
@ -155,7 +150,7 @@ export default class FilesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Delete a specific File
|
* @description Delete a specific File
|
||||||
*/
|
*/
|
||||||
@Delete("/api/v1/super-admin/files/:uid", [authHandler,ruleHandler,fileHandler])
|
@Delete("/api/v1/super-admin/files/:uid", [authHandler, ruleHandler, fileHandler])
|
||||||
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"];
|
||||||
@ -193,7 +188,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", [authHandler,ruleHandler,fileHandler])
|
@Get("/api/v1/super-admin/files/:uid", [authHandler, ruleHandler, fileHandler])
|
||||||
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"];
|
||||||
|
@ -20,17 +20,17 @@ export default class OfficeFoldersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all folders
|
* @description Get all folders
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/folders", [authHandler,ruleHandler])
|
@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
|
||||||
const query = JSON.parse(req.query["q"] as string);
|
const query = JSON.parse(req.query["q"] as string);
|
||||||
const officeId: string = req.body.user.office_Id;
|
const officeId: string = req.body.user.office_Id;
|
||||||
const officeWhereInput: Prisma.OfficeFoldersWhereInput = {office: {uid: officeId}};
|
const officeWhereInput: Prisma.OfficeFoldersWhereInput = { office: { uid: officeId } };
|
||||||
query.where = officeWhereInput;
|
query.where = officeWhereInput;
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
const officeFolderEntities: OfficeFolders[] = await this.officeFoldersService.get(query);
|
const officeFolderEntities: OfficeFolders[] = await this.officeFoldersService.get(query);
|
||||||
|
|
||||||
//Hydrate ressource with prisma entity
|
//Hydrate ressource with prisma entity
|
||||||
const officeFolders = OfficeFolder.hydrateArray<OfficeFolder>(officeFolderEntities, {
|
const officeFolders = OfficeFolder.hydrateArray<OfficeFolder>(officeFolderEntities, {
|
||||||
strategy: "excludeAll",
|
strategy: "excludeAll",
|
||||||
@ -46,12 +46,12 @@ export default class OfficeFoldersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Create a new folder
|
* @description Create a new folder
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/folders", [authHandler,ruleHandler,folderHandler])
|
@Post("/api/v1/super-admin/folders", [authHandler, ruleHandler, folderHandler])
|
||||||
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
|
||||||
const officeFolderRessource = OfficeFolder.hydrate<OfficeFolder>(req.body);
|
const officeFolderRessource = OfficeFolder.hydrate<OfficeFolder>(req.body);
|
||||||
await officeFolderRessource.validateOrReject?.({ groups: ["createFolder"] , forbidUnknownValues: false });
|
await officeFolderRessource.validateOrReject?.({ groups: ["createFolder"], forbidUnknownValues: false });
|
||||||
|
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
const officeFolderEntity = await this.officeFoldersService.create(officeFolderRessource);
|
const officeFolderEntity = await this.officeFoldersService.create(officeFolderRessource);
|
||||||
@ -70,7 +70,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", [authHandler,ruleHandler,folderHandler])
|
@Put("/api/v1/super-admin/folders/:uid", [authHandler, ruleHandler, folderHandler])
|
||||||
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 +112,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", [authHandler,ruleHandler,folderHandler])
|
@Get("/api/v1/super-admin/folders/:uid", [authHandler, ruleHandler, folderHandler])
|
||||||
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"];
|
||||||
@ -151,7 +151,7 @@ export default class OfficeFoldersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Delete a specific folder
|
* @description Delete a specific folder
|
||||||
*/
|
*/
|
||||||
@Delete("/api/v1/super-admin/folders/:uid", [authHandler,ruleHandler,folderHandler])
|
@Delete("/api/v1/super-admin/folders/:uid", [authHandler, ruleHandler, folderHandler])
|
||||||
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"];
|
||||||
|
@ -20,15 +20,15 @@ export default class OfficeRolesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all officeRoles
|
* @description Get all officeRoles
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/officeRoles", [authHandler,ruleHandler])
|
@Get("/api/v1/super-admin/officeRoles", [authHandler, ruleHandler])
|
||||||
protected async get(req: Request, response: Response) {
|
protected async get(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//get query
|
//get query
|
||||||
const query = JSON.parse(req.query["q"] as string);
|
const query = JSON.parse(req.query["q"] as string);
|
||||||
const officeId: string = req.body.user.office_Id;
|
const officeId: string = req.body.user.office_Id;
|
||||||
const officeWhereInput: Prisma.OfficeRolesWhereInput = {office: {uid: officeId}};
|
const officeWhereInput: Prisma.OfficeRolesWhereInput = { office: { uid: officeId } };
|
||||||
query.where = officeWhereInput;
|
query.where = officeWhereInput;
|
||||||
|
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
const officeRolesEntities = await this.officeRolesService.get(query);
|
const officeRolesEntities = await this.officeRolesService.get(query);
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ export default class OfficeRolesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Create a new officeRole
|
* @description Create a new officeRole
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/office-roles", [authHandler,ruleHandler,officeRoleHandler])
|
@Post("/api/v1/super-admin/office-roles", [authHandler, ruleHandler, officeRoleHandler])
|
||||||
protected async getAddresses(req: Request, response: Response) {
|
protected async getAddresses(req: Request, response: Response) {
|
||||||
try {
|
try {
|
||||||
//init IOfficeRole resource with request body values
|
//init IOfficeRole resource with request body values
|
||||||
@ -74,7 +74,7 @@ export default class OfficeRolesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Modify a specific officeRole by uid
|
* @description Modify a specific officeRole by uid
|
||||||
*/
|
*/
|
||||||
@Put("/api/v1/super-admin/office-roles/:uid", [authHandler,ruleHandler,officeRoleHandler])
|
@Put("/api/v1/super-admin/office-roles/:uid", [authHandler, ruleHandler, officeRoleHandler])
|
||||||
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"];
|
||||||
@ -115,7 +115,7 @@ export default class OfficeRolesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get a specific officeRole by uid
|
* @description Get a specific officeRole by uid
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/office-roles/:uid", [authHandler,ruleHandler,officeRoleHandler])
|
@Get("/api/v1/super-admin/office-roles/:uid", [authHandler, ruleHandler, officeRoleHandler])
|
||||||
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"];
|
||||||
|
@ -37,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", [authHandler,ruleHandler])
|
@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
|
||||||
@ -60,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", [authHandler,ruleHandler])
|
@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"];
|
||||||
@ -95,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", [authHandler,ruleHandler])
|
@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"];
|
||||||
|
@ -19,7 +19,7 @@ export default class RolesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all roles
|
* @description Get all roles
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/roles", [authHandler,ruleHandler])
|
@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
|
||||||
@ -42,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", [authHandler,ruleHandler])
|
@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
|
||||||
@ -70,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", [authHandler,ruleHandler])
|
@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"];
|
||||||
@ -111,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", [authHandler,ruleHandler])
|
@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"];
|
||||||
|
@ -19,7 +19,7 @@ export default class RulesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all rules
|
* @description Get all rules
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/rules", [authHandler,ruleHandler])
|
@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
|
||||||
@ -42,15 +42,15 @@ export default class RulesController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Create a new rule
|
* @description Create a new rule
|
||||||
*/
|
*/
|
||||||
@Post("/api/v1/super-admin/rules", [authHandler,ruleHandler])
|
@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
|
||||||
const ruleEntity = Rule.hydrate<Rule>(req.body);
|
const ruleEntity = Rule.hydrate<Rule>(req.body);
|
||||||
|
|
||||||
//validate rule
|
//validate rule
|
||||||
await validateOrReject(ruleEntity, {groups: ["createRule"]});
|
await validateOrReject(ruleEntity, { groups: ["createRule"] });
|
||||||
|
|
||||||
//call service to get prisma entity
|
//call service to get prisma entity
|
||||||
const ruleEntityCreated = await this.rulesService.create(ruleEntity);
|
const ruleEntityCreated = await this.rulesService.create(ruleEntity);
|
||||||
|
|
||||||
@ -70,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", [authHandler,ruleHandler])
|
@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"];
|
||||||
@ -111,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", [authHandler,ruleHandler])
|
@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"];
|
||||||
|
@ -19,7 +19,7 @@ export default class UsersController extends ApiController {
|
|||||||
/**
|
/**
|
||||||
* @description Get all users
|
* @description Get all users
|
||||||
*/
|
*/
|
||||||
@Get("/api/v1/super-admin/users", [authHandler,ruleHandler])
|
@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
|
||||||
@ -70,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", [authHandler,ruleHandler])
|
@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"];
|
||||||
@ -111,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",[authHandler,ruleHandler])
|
@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"];
|
||||||
|
@ -14,7 +14,6 @@ import FilesController from "./api/super-admin/FilesController";
|
|||||||
import RulesController from "./api/super-admin/RulesController";
|
import RulesController from "./api/super-admin/RulesController";
|
||||||
import RolesController from "./api/super-admin/RolesController";
|
import RolesController from "./api/super-admin/RolesController";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description This allow to declare all controllers used in the application
|
* @description This allow to declare all controllers used in the application
|
||||||
*/
|
*/
|
||||||
|
@ -4,22 +4,21 @@ import { NextFunction, Request, Response } from "express";
|
|||||||
import Container from "typedi";
|
import Container from "typedi";
|
||||||
|
|
||||||
export default function authHandler(req: Request, response: Response, next: NextFunction) {
|
export default function authHandler(req: Request, response: Response, next: NextFunction) {
|
||||||
const authHeader = req.headers['authorization'];
|
const authHeader = req.headers["authorization"];
|
||||||
const token = authHeader && authHeader.split(' ')[1];
|
const token = authHeader && authHeader.split(" ")[1];
|
||||||
|
|
||||||
if (!token) {
|
if (!token) {
|
||||||
response.sendStatus(HttpCodes.UNAUTHORIZED)
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const authService = Container.get(AuthService);
|
const authService = Container.get(AuthService);
|
||||||
authService.verifyAccessToken(token, (err, userPayload) => {
|
authService.verifyAccessToken(token, (err, userPayload) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
req.body.user = userPayload
|
req.body.user = userPayload;
|
||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
import { NextFunction, Request, Response } from "express";
|
|
||||||
import multer from "multer";
|
|
||||||
|
|
||||||
export default function fileHandler(req: Request, response: Response, next: NextFunction) {
|
|
||||||
const storage = multer.memoryStorage()
|
|
||||||
const upload = multer({storage:storage}).single('file');
|
|
||||||
|
|
||||||
// Here call the upload middleware of multer
|
|
||||||
upload(req, response, function (err) {
|
|
||||||
if (err instanceof multer.MulterError) {
|
|
||||||
// A Multer error occurred when uploading.
|
|
||||||
const err = new Error('Multer error');
|
|
||||||
return next(err)
|
|
||||||
} else if (err) {
|
|
||||||
// An unknown error occurred when uploading.
|
|
||||||
const err = new Error('Server Error')
|
|
||||||
return next(err)
|
|
||||||
}
|
|
||||||
next()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -10,17 +10,19 @@ export default async function deedHandler(req: Request, response: Response, next
|
|||||||
const uid = req.path && req.path.split("/")[5];
|
const uid = req.path && req.path.split("/")[5];
|
||||||
const documentTypes: DocumentType[] = req.body.document_types;
|
const documentTypes: DocumentType[] = req.body.document_types;
|
||||||
|
|
||||||
const deedService = Container.get(DeedsService);
|
if (uid) {
|
||||||
const deed = await deedService.getOneByUidWithOffice(uid!);
|
const deedService = Container.get(DeedsService);
|
||||||
|
const deed = await deedService.getOneByUidWithOffice(uid);
|
||||||
|
|
||||||
if (!deed) {
|
if (!deed) {
|
||||||
response.sendStatus(HttpCodes.NOT_FOUND);
|
response.sendStatus(HttpCodes.NOT_FOUND);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (deed.deed_type.office.uid != officeId) {
|
if (deed.deed_type.office.uid != officeId) {
|
||||||
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (documentTypes) {
|
if (documentTypes) {
|
||||||
|
@ -11,7 +11,7 @@ export default async function deedTypeHandler(req: Request, response: Response,
|
|||||||
const documentTypes: DocumentType[] = req.body.document_types;
|
const documentTypes: DocumentType[] = req.body.document_types;
|
||||||
const office = req.body.office;
|
const office = req.body.office;
|
||||||
|
|
||||||
if(office && office.uid != officeId) {
|
if (office && office.uid != officeId) {
|
||||||
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -33,9 +33,9 @@ export default async function deedTypeHandler(req: Request, response: Response,
|
|||||||
|
|
||||||
if (documentTypes) {
|
if (documentTypes) {
|
||||||
const documentTypeService = Container.get(DocumentTypesService);
|
const documentTypeService = Container.get(DocumentTypesService);
|
||||||
documentTypes.forEach(async(documentType) => {
|
documentTypes.forEach(async (documentType) => {
|
||||||
const documentTypeWithOffice = await documentTypeService.getByUidWithOffice(documentType.uid!);
|
const documentTypeWithOffice = await documentTypeService.getByUidWithOffice(documentType.uid!);
|
||||||
if(!documentTypeWithOffice) {
|
if (!documentTypeWithOffice) {
|
||||||
response.sendStatus(HttpCodes.NOT_FOUND);
|
response.sendStatus(HttpCodes.NOT_FOUND);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import Container from "typedi";
|
|||||||
import { OfficeFolder } from "le-coffre-resources/dist/SuperAdmin";
|
import { OfficeFolder } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import DocumentsService from "@Services/super-admin/DocumentsService/DocumentsService";
|
import DocumentsService from "@Services/super-admin/DocumentsService/DocumentsService";
|
||||||
import DocumentTypesService from "@Services/super-admin/DocumentTypesService/DocumentTypesService";
|
import DocumentTypesService from "@Services/super-admin/DocumentTypesService/DocumentTypesService";
|
||||||
|
import OfficeFoldersService from "@Services/super-admin/OfficeFoldersService/OfficeFoldersService";
|
||||||
|
|
||||||
export default async function documentHandler(req: Request, response: Response, next: NextFunction) {
|
export default async function documentHandler(req: Request, response: Response, next: NextFunction) {
|
||||||
const officeId = req.body.user.office_Id;
|
const officeId = req.body.user.office_Id;
|
||||||
@ -12,15 +13,23 @@ export default async function documentHandler(req: Request, response: Response,
|
|||||||
const documentType: DocumentType = req.body.document_type;
|
const documentType: DocumentType = req.body.document_type;
|
||||||
const folder: OfficeFolder = req.body.folder;
|
const folder: OfficeFolder = req.body.folder;
|
||||||
|
|
||||||
if (folder && folder.office?.uid != officeId) {
|
if (folder) {
|
||||||
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
const officeFolderService = Container.get(OfficeFoldersService);
|
||||||
return;
|
const officeFolderWithOffice = await officeFolderService.getByUidWithOffice(folder.uid!);
|
||||||
|
if (!officeFolderWithOffice) {
|
||||||
|
response.sendStatus(HttpCodes.NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (officeFolderWithOffice.office?.uid != officeId) {
|
||||||
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (documentType) {
|
if (documentType) {
|
||||||
const documentTypeService = Container.get(DocumentTypesService);
|
const documentTypeService = Container.get(DocumentTypesService);
|
||||||
const documentTypeWithOffice = await documentTypeService.getByUidWithOffice(documentType.uid!);
|
const documentTypeWithOffice = await documentTypeService.getByUidWithOffice(documentType.uid!);
|
||||||
if(!documentTypeWithOffice) {
|
if (!documentTypeWithOffice) {
|
||||||
response.sendStatus(HttpCodes.NOT_FOUND);
|
response.sendStatus(HttpCodes.NOT_FOUND);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,6 @@ export default async function documentTypeHandler(req: Request, response: Respon
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,28 @@
|
|||||||
import HttpCodes from "@Common/system/controller-pattern/HttpCodes";
|
import HttpCodes from "@Common/system/controller-pattern/HttpCodes";
|
||||||
import { NextFunction, Request, Response } from "express";
|
import { NextFunction, Request, Response } from "express";
|
||||||
import Container from "typedi";
|
import Container from "typedi";
|
||||||
import { OfficeFolder } from "le-coffre-resources/dist/SuperAdmin";
|
|
||||||
import FilesService from "@Services/common/FilesService/FilesService";
|
import FilesService from "@Services/common/FilesService/FilesService";
|
||||||
|
import DocumentsService from "@Services/super-admin/DocumentsService/DocumentsService";
|
||||||
|
|
||||||
export default async function fileHandler(req: Request, response: Response, next: NextFunction) {
|
export default async function fileHandler(req: Request, response: Response, next: NextFunction) {
|
||||||
const officeId = req.body.user.office_Id;
|
const officeId = req.body.user.office_Id;
|
||||||
let uid = req.path && req.path.split("/")[5];
|
let uid = req.path && req.path.split("/")[5];
|
||||||
const folder: OfficeFolder = req.body.document.folder;
|
const document = req.body.document;
|
||||||
|
|
||||||
if (folder && folder.office?.uid != officeId) {
|
if (document) {
|
||||||
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
const documentService = Container.get(DocumentsService);
|
||||||
return;
|
const documentWithOffice = await documentService.getByUidWithOffice(document.uid!);
|
||||||
|
if (!documentWithOffice) {
|
||||||
|
response.sendStatus(HttpCodes.NOT_FOUND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (documentWithOffice.folder.office?.uid != officeId) {
|
||||||
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(uid === "download") uid = req.path && req.path.split("/")[6];
|
if (uid === "download") uid = req.path && req.path.split("/")[6];
|
||||||
|
|
||||||
if (uid) {
|
if (uid) {
|
||||||
const fileService = Container.get(FilesService);
|
const fileService = Container.get(FilesService);
|
||||||
@ -24,7 +32,6 @@ export default async function fileHandler(req: Request, response: Response, next
|
|||||||
response.sendStatus(HttpCodes.NOT_FOUND);
|
response.sendStatus(HttpCodes.NOT_FOUND);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file.document.folder.office.uid != officeId) {
|
if (file.document.folder.office.uid != officeId) {
|
||||||
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
return;
|
return;
|
||||||
|
@ -16,14 +16,14 @@ export default async function folderHandler(req: Request, response: Response, ne
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(deedType) {
|
if (deedType) {
|
||||||
const deedTypeService = Container.get(DeedTypesService);
|
const deedTypeService = Container.get(DeedTypesService);
|
||||||
const deedTypeWithOffice = await deedTypeService.getByUidWithOffice(deedType.uid!);
|
const deedTypeWithOffice = await deedTypeService.getByUidWithOffice(deedType.uid!);
|
||||||
if (!deedTypeWithOffice) {
|
if (!deedTypeWithOffice) {
|
||||||
response.sendStatus(HttpCodes.NOT_FOUND);
|
response.sendStatus(HttpCodes.NOT_FOUND);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(deedTypeWithOffice.office.uid != officeId) {
|
if (deedTypeWithOffice.office.uid != officeId) {
|
||||||
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -32,7 +32,9 @@ export default async function folderHandler(req: Request, response: Response, ne
|
|||||||
const officeFolderService = Container.get(OfficeFoldersService);
|
const officeFolderService = Container.get(OfficeFoldersService);
|
||||||
|
|
||||||
if (officeFolderNumber) {
|
if (officeFolderNumber) {
|
||||||
const officeFoldersWithSameNumber = await officeFolderService.get({ where: { folder_number: officeFolderNumber, office: {uid: officeId}}});
|
const officeFoldersWithSameNumber = await officeFolderService.get({
|
||||||
|
where: { folder_number: officeFolderNumber, office: { uid: officeId } },
|
||||||
|
});
|
||||||
if (officeFoldersWithSameNumber.length) {
|
if (officeFoldersWithSameNumber.length) {
|
||||||
response.sendStatus(HttpCodes.BAD_REQUEST);
|
response.sendStatus(HttpCodes.BAD_REQUEST);
|
||||||
return;
|
return;
|
||||||
|
@ -27,6 +27,6 @@ export default async function officeRoleHandler(req: Request, response: Response
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,6 @@ export default async function userHandler(req: Request, response: Response, next
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
@ -2,21 +2,20 @@ import HttpCodes from "@Common/system/controller-pattern/HttpCodes";
|
|||||||
import { NextFunction, Request, Response } from "express";
|
import { NextFunction, Request, Response } from "express";
|
||||||
|
|
||||||
export default async function ruleHandler(req: Request, response: Response, next: NextFunction) {
|
export default async function ruleHandler(req: Request, response: Response, next: NextFunction) {
|
||||||
const rules = req.body.user.rules;
|
const rules = req.body.user.rules;
|
||||||
const service = req.path && req.path.split('/')[4];
|
const service = req.path && req.path.split("/")[4];
|
||||||
const namespace = req.path && req.path.split('/')[3];
|
const namespace = req.path && req.path.split("/")[3];
|
||||||
const role = req.body.user.role;
|
const role = req.body.user.role;
|
||||||
|
|
||||||
if(namespace != 'notary' && role != namespace) {
|
if (namespace != "notary" && role != namespace) {
|
||||||
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!rules.includes(req.method + ' ' + service)) {
|
if (!rules.includes(req.method + " " + service)) {
|
||||||
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
response.sendStatus(HttpCodes.UNAUTHORIZED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,9 +86,8 @@ export class BackendVariables {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
await validateOrReject(this, validationOptions);
|
await validateOrReject(this, validationOptions);
|
||||||
}
|
} catch (error) {
|
||||||
catch(error) {
|
if (process.env["NODE_ENV"] === "development") {
|
||||||
if(process.env["NODE_ENV"] === "development") {
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
throw new Error("Some env variables are required!");
|
throw new Error("Some env variables are required!");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import 'module-alias/register';
|
import "module-alias/register";
|
||||||
import { EFolderStatus, EOfficeStatus, ECivility, ECustomerStatus, PrismaClient, Prisma } from "@prisma/client";
|
import { EFolderStatus, EOfficeStatus, ECivility, ECustomerStatus, PrismaClient, Prisma } from "@prisma/client";
|
||||||
import User, {
|
import User, {
|
||||||
Address,
|
Address,
|
||||||
@ -16,7 +16,6 @@ import User, {
|
|||||||
|
|
||||||
export default async function main() {
|
export default async function main() {
|
||||||
const prisma = new PrismaClient();
|
const prisma = new PrismaClient();
|
||||||
|
|
||||||
|
|
||||||
const randomString = () => {
|
const randomString = () => {
|
||||||
const chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
const chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
@ -824,7 +823,6 @@ export default async function main() {
|
|||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
},
|
},
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
const roles: Role[] = [
|
const roles: Role[] = [
|
||||||
@ -838,20 +836,20 @@ export default async function main() {
|
|||||||
name: "admin",
|
name: "admin",
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
rules: rules.slice(0,33),
|
rules: rules.slice(0, 33),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "notary",
|
name: "notary",
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
rules: rules.slice(0,22),
|
rules: rules.slice(0, 22),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "default",
|
name: "default",
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
rules: rules.slice(0,11),
|
rules: rules.slice(0, 11),
|
||||||
}
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const officeRoles: OfficeRole[] = [
|
const officeRoles: OfficeRole[] = [
|
||||||
@ -860,29 +858,29 @@ export default async function main() {
|
|||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
office: offices[0]!,
|
office: offices[0]!,
|
||||||
rules: rules.slice(0,40),
|
rules: rules.slice(0, 40),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "notary",
|
name: "notary",
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
office: offices[0]!,
|
office: offices[0]!,
|
||||||
rules: rules.slice(0,33),
|
rules: rules.slice(0, 33),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "deputy",
|
name: "deputy",
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
office: offices[0]!,
|
office: offices[0]!,
|
||||||
rules: rules.slice(0,22),
|
rules: rules.slice(0, 22),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "listener",
|
name: "listener",
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
updated_at: new Date(),
|
updated_at: new Date(),
|
||||||
office: offices[0]!,
|
office: offices[0]!,
|
||||||
rules: rules.slice(0,11),
|
rules: rules.slice(0, 11),
|
||||||
}
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const users: User[] = [
|
const users: User[] = [
|
||||||
@ -1385,12 +1383,12 @@ export default async function main() {
|
|||||||
office_status: EOfficeStatus.DESACTIVATED,
|
office_status: EOfficeStatus.DESACTIVATED,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
; office.uid = officeCreated.uid;
|
office.uid = officeCreated.uid;
|
||||||
}
|
}
|
||||||
for (const rule of rules) {
|
for (const rule of rules) {
|
||||||
const ruleCreated = await prisma.rules.create({
|
const ruleCreated = await prisma.rules.create({
|
||||||
data: {
|
data: {
|
||||||
name: rule.name
|
name: rule.name,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
rule.uid = ruleCreated.uid;
|
rule.uid = ruleCreated.uid;
|
||||||
@ -1607,8 +1605,8 @@ export default async function main() {
|
|||||||
connect: officeFolder.stakeholders?.map((stakeholder) => ({
|
connect: officeFolder.stakeholders?.map((stakeholder) => ({
|
||||||
uid: stakeholder.uid!,
|
uid: stakeholder.uid!,
|
||||||
})),
|
})),
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
officeFolder.uid = officeFolderCreated.uid;
|
officeFolder.uid = officeFolderCreated.uid;
|
||||||
}
|
}
|
||||||
|
@ -46,13 +46,13 @@ export default class DeedTypesRepository extends BaseRepository {
|
|||||||
})),
|
})),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return this.model.create({...createArgs, include: { document_types: true }});
|
return this.model.create({ ...createArgs, include: { document_types: true } });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description : Update data of a deed type
|
* @description : Update data of a deed type
|
||||||
*/
|
*/
|
||||||
public async update(uid: string, deedType: DeedType): Promise<DeedTypes & {document_types: DocumentTypes[]}> {
|
public async update(uid: string, deedType: DeedType): Promise<DeedTypes & { document_types: DocumentTypes[] }> {
|
||||||
const updateArgs: Prisma.DeedTypesUpdateArgs = {
|
const updateArgs: Prisma.DeedTypesUpdateArgs = {
|
||||||
where: {
|
where: {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
@ -69,12 +69,12 @@ export default class DeedTypesRepository extends BaseRepository {
|
|||||||
document_types: {
|
document_types: {
|
||||||
set: deedType.document_types?.map((documentType) => ({
|
set: deedType.document_types?.map((documentType) => ({
|
||||||
uid: documentType.uid!,
|
uid: documentType.uid!,
|
||||||
}))
|
})),
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return this.model.update({...updateArgs, include: { document_types: true }});
|
return this.model.update({ ...updateArgs, include: { document_types: true } });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -100,9 +100,9 @@ export default class DeedsRepository extends BaseRepository {
|
|||||||
uid: uid,
|
uid: uid,
|
||||||
},
|
},
|
||||||
include: {
|
include: {
|
||||||
deed_type: {include: {office: true}},
|
deed_type: { include: { office: true } },
|
||||||
document_types: {include: {office: true}},
|
document_types: { include: { office: true } },
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ export default class DocumentTypesRepository extends BaseRepository {
|
|||||||
uid: documentType.office!.uid,
|
uid: documentType.office!.uid,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return this.model.update(updateArgs);
|
return this.model.update(updateArgs);
|
||||||
@ -87,7 +87,7 @@ export default class DocumentTypesRepository extends BaseRepository {
|
|||||||
where: {
|
where: {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
},
|
},
|
||||||
include: {office: true},
|
include: { office: true },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ export default class DocumentsRepository extends BaseRepository {
|
|||||||
/**
|
/**
|
||||||
* @description : Create a document
|
* @description : Create a document
|
||||||
*/
|
*/
|
||||||
public async create(document: Document): Promise<Documents & {document_type: DocumentTypes}> {
|
public async create(document: Document): Promise<Documents & { document_type: DocumentTypes }> {
|
||||||
const createArgs: Prisma.DocumentsCreateArgs = {
|
const createArgs: Prisma.DocumentsCreateArgs = {
|
||||||
data: {
|
data: {
|
||||||
folder: {
|
folder: {
|
||||||
@ -48,7 +48,7 @@ export default class DocumentsRepository extends BaseRepository {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const documentCreated = await this.model.create({...createArgs, include: {document_type: true}});
|
const documentCreated = await this.model.create({ ...createArgs, include: { document_type: true } });
|
||||||
|
|
||||||
await this.instanceDb.documentHistory.create({
|
await this.instanceDb.documentHistory.create({
|
||||||
data: {
|
data: {
|
||||||
@ -78,7 +78,7 @@ export default class DocumentsRepository extends BaseRepository {
|
|||||||
|
|
||||||
const batchPayload = await this.model.createMany(createArgs);
|
const batchPayload = await this.model.createMany(createArgs);
|
||||||
|
|
||||||
const documentsCreated = await this.model.findMany({orderBy: {created_at: 'desc'}, take: batchPayload.count});
|
const documentsCreated = await this.model.findMany({ orderBy: { created_at: "desc" }, take: batchPayload.count });
|
||||||
|
|
||||||
const createHistoryArgs: Prisma.DocumentHistoryCreateManyArgs = {
|
const createHistoryArgs: Prisma.DocumentHistoryCreateManyArgs = {
|
||||||
data: documentsCreated.map((document) => ({
|
data: documentsCreated.map((document) => ({
|
||||||
@ -106,7 +106,7 @@ export default class DocumentsRepository extends BaseRepository {
|
|||||||
document_status: EDocumentStatus[document.document_status as keyof typeof EDocumentStatus],
|
document_status: EDocumentStatus[document.document_status as keyof typeof EDocumentStatus],
|
||||||
refused_reason: refusedReason,
|
refused_reason: refusedReason,
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -142,7 +142,7 @@ export default class DocumentsRepository extends BaseRepository {
|
|||||||
where: {
|
where: {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
},
|
},
|
||||||
include: {folder: {include: {office: true}}, document_type: {include: {office: true}}},
|
include: { folder: { include: { office: true } }, document_type: { include: { office: true } } },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ export default class FilesRepository extends BaseRepository {
|
|||||||
/**
|
/**
|
||||||
* @description : Create a file linked to a document
|
* @description : Create a file linked to a document
|
||||||
*/
|
*/
|
||||||
public async create(file: File, key: string): Promise<Files & {document: Documents}> {
|
public async create(file: File, key: string): Promise<Files & { document: Documents }> {
|
||||||
const createArgs: Prisma.FilesCreateArgs = {
|
const createArgs: Prisma.FilesCreateArgs = {
|
||||||
data: {
|
data: {
|
||||||
document: {
|
document: {
|
||||||
@ -39,16 +39,16 @@ export default class FilesRepository extends BaseRepository {
|
|||||||
file_path: file.file_path,
|
file_path: file.file_path,
|
||||||
mimetype: file.mimetype,
|
mimetype: file.mimetype,
|
||||||
size: file.size,
|
size: file.size,
|
||||||
key: key
|
key: key,
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
return this.model.create({...createArgs, include: { document: true }});
|
return this.model.create({ ...createArgs, include: { document: true } });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description : Update data of a file
|
* @description : Update data of a file
|
||||||
*/
|
*/
|
||||||
public async update(uid: string, file: File, key: string): Promise<Files& {document: Documents}> {
|
public async update(uid: string, file: File, key: string): Promise<Files & { document: Documents }> {
|
||||||
const updateArgs: Prisma.FilesUpdateArgs = {
|
const updateArgs: Prisma.FilesUpdateArgs = {
|
||||||
where: {
|
where: {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
@ -58,26 +58,26 @@ export default class FilesRepository extends BaseRepository {
|
|||||||
file_path: file.file_path,
|
file_path: file.file_path,
|
||||||
mimetype: file.mimetype,
|
mimetype: file.mimetype,
|
||||||
size: file.size,
|
size: file.size,
|
||||||
key: key
|
key: key,
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
return this.model.update({...updateArgs, include: { document: true }});
|
return this.model.update({ ...updateArgs, include: { document: true } });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description : Delete a file key and archive
|
* @description : Delete a file key and archive
|
||||||
*/
|
*/
|
||||||
public async deleteKeyAndArchive(uid: string): Promise<Files& {document: Documents}> {
|
public async deleteKeyAndArchive(uid: string): Promise<Files & { document: Documents }> {
|
||||||
const updateArgs: Prisma.FilesUpdateArgs = {
|
const updateArgs: Prisma.FilesUpdateArgs = {
|
||||||
where: {
|
where: {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
key: null,
|
key: null,
|
||||||
archived_at: new Date(Date.now())
|
archived_at: new Date(Date.now()),
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
return this.model.update({...updateArgs, include: { document: true }});
|
return this.model.update({ ...updateArgs, include: { document: true } });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -100,7 +100,7 @@ export default class FilesRepository extends BaseRepository {
|
|||||||
where: {
|
where: {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
},
|
},
|
||||||
include: {document: {include: {folder: {include: {office: true}}}}},
|
include: { document: { include: { folder: { include: { office: true } } } } },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ export default class OfficeFoldersRepository extends BaseRepository {
|
|||||||
/**
|
/**
|
||||||
* @description : Create new office folder with stakeholders
|
* @description : Create new office folder with stakeholders
|
||||||
*/
|
*/
|
||||||
public async create(officeFolder: OfficeFolder): Promise<OfficeFolders & { stakeholders: Users[]}> {
|
public async create(officeFolder: OfficeFolder): Promise<OfficeFolders & { stakeholders: Users[] }> {
|
||||||
const createArgs: Prisma.OfficeFoldersCreateArgs = {
|
const createArgs: Prisma.OfficeFoldersCreateArgs = {
|
||||||
data: {
|
data: {
|
||||||
folder_number: officeFolder.folder_number,
|
folder_number: officeFolder.folder_number,
|
||||||
@ -48,11 +48,11 @@ export default class OfficeFoldersRepository extends BaseRepository {
|
|||||||
connect: officeFolder.stakeholders?.map((stakeholder) => ({
|
connect: officeFolder.stakeholders?.map((stakeholder) => ({
|
||||||
uid: stakeholder.uid!,
|
uid: stakeholder.uid!,
|
||||||
})),
|
})),
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return this.model.create({...createArgs, include: {stakeholders: true}});
|
return this.model.create({ ...createArgs, include: { stakeholders: true } });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -120,7 +120,7 @@ export default class OfficeFoldersRepository extends BaseRepository {
|
|||||||
where: {
|
where: {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
},
|
},
|
||||||
include: {office: true},
|
include: { office: true },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ export default class OfficeRolesRepository extends BaseRepository {
|
|||||||
/**
|
/**
|
||||||
* @description : Create new officeRole with rules
|
* @description : Create new officeRole with rules
|
||||||
*/
|
*/
|
||||||
public async create(officeRole: OfficeRole): Promise<OfficeRoles & {rules: Rules[]}> {
|
public async create(officeRole: OfficeRole): Promise<OfficeRoles & { rules: Rules[] }> {
|
||||||
const createArgs: Prisma.OfficeRolesCreateArgs = {
|
const createArgs: Prisma.OfficeRolesCreateArgs = {
|
||||||
data: {
|
data: {
|
||||||
name: officeRole.name,
|
name: officeRole.name,
|
||||||
@ -44,13 +44,13 @@ export default class OfficeRolesRepository extends BaseRepository {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return this.model.create({...createArgs, include: {rules: true}});
|
return this.model.create({ ...createArgs, include: { rules: true } });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description : Update data of a officeRole with rules
|
* @description : Update data of a officeRole with rules
|
||||||
*/
|
*/
|
||||||
public async update(officeRole: OfficeRole): Promise<OfficeRoles & {rules: Rules[]}> {
|
public async update(officeRole: OfficeRole): Promise<OfficeRoles & { rules: Rules[] }> {
|
||||||
const updateArgs: Prisma.OfficeRolesUpdateArgs = {
|
const updateArgs: Prisma.OfficeRolesUpdateArgs = {
|
||||||
where: {
|
where: {
|
||||||
uid: officeRole.uid,
|
uid: officeRole.uid,
|
||||||
@ -65,7 +65,7 @@ export default class OfficeRolesRepository extends BaseRepository {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return this.model.update({...updateArgs, include: {rules: true}});
|
return this.model.update({ ...updateArgs, include: { rules: true } });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -88,7 +88,7 @@ export default class OfficeRolesRepository extends BaseRepository {
|
|||||||
where: {
|
where: {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
},
|
},
|
||||||
include: {office: true},
|
include: { office: true },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,10 +30,10 @@ export default class RulesRepository extends BaseRepository {
|
|||||||
public async create(rule: Rule): Promise<Rules> {
|
public async create(rule: Rule): Promise<Rules> {
|
||||||
const createArgs: Prisma.RulesCreateArgs = {
|
const createArgs: Prisma.RulesCreateArgs = {
|
||||||
data: {
|
data: {
|
||||||
name: rule.name
|
name: rule.name,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return this.model.create(createArgs);
|
return this.model.create(createArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,10 +46,10 @@ export default class RulesRepository extends BaseRepository {
|
|||||||
uid: rule.uid,
|
uid: rule.uid,
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
name: rule.name
|
name: rule.name,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
return this.model.update(updateArgs);
|
return this.model.update(updateArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ export default class UsersRepository extends BaseRepository {
|
|||||||
email: user.contact!.email,
|
email: user.contact!.email,
|
||||||
phone_number: user.contact?.phone_number,
|
phone_number: user.contact?.phone_number,
|
||||||
cell_phone_number: user.contact!.cell_phone_number,
|
cell_phone_number: user.contact!.cell_phone_number,
|
||||||
civility: ECivility[user.contact?.civility as keyof typeof ECivility]
|
civility: ECivility[user.contact?.civility as keyof typeof ECivility],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
role: {
|
role: {
|
||||||
@ -130,7 +130,7 @@ export default class UsersRepository extends BaseRepository {
|
|||||||
email: user.contact!.email,
|
email: user.contact!.email,
|
||||||
phone_number: user.contact?.phone_number,
|
phone_number: user.contact?.phone_number,
|
||||||
cell_phone_number: user.contact?.cell_phone_number,
|
cell_phone_number: user.contact?.cell_phone_number,
|
||||||
civility: ECivility[user.contact?.civility as keyof typeof ECivility]
|
civility: ECivility[user.contact?.civility as keyof typeof ECivility],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -155,7 +155,7 @@ export default class UsersRepository extends BaseRepository {
|
|||||||
/**
|
/**
|
||||||
* @description : Find one user
|
* @description : Find one user
|
||||||
*/
|
*/
|
||||||
public async findOneByUid(uid: string, query?: Prisma.UsersInclude){
|
public async findOneByUid(uid: string, query?: Prisma.UsersInclude) {
|
||||||
return this.model.findUnique({
|
return this.model.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
@ -167,12 +167,12 @@ export default class UsersRepository extends BaseRepository {
|
|||||||
/**
|
/**
|
||||||
* @description : Find one user with office
|
* @description : Find one user with office
|
||||||
*/
|
*/
|
||||||
public async findOneByUidWithOffice(uid: string){
|
public async findOneByUidWithOffice(uid: string) {
|
||||||
return this.model.findUnique({
|
return this.model.findUnique({
|
||||||
where: {
|
where: {
|
||||||
uid: uid,
|
uid: uid,
|
||||||
},
|
},
|
||||||
include: {office_membership: true},
|
include: { office_membership: true },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,8 +183,8 @@ export default class UsersRepository extends BaseRepository {
|
|||||||
return this.model.findUnique({
|
return this.model.findUnique({
|
||||||
where: { [providerName]: id },
|
where: { [providerName]: id },
|
||||||
include: {
|
include: {
|
||||||
role: { include: { rules: true } } ,
|
role: { include: { rules: true } },
|
||||||
office_role: { include: { rules: true } } ,
|
office_role: { include: { rules: true } },
|
||||||
office_membership: true,
|
office_membership: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@ -21,10 +21,10 @@ export type OpenIdConfig = {
|
|||||||
scopes_supported: string[];
|
scopes_supported: string[];
|
||||||
issuer: string;
|
issuer: string;
|
||||||
jwks_uri: string;
|
jwks_uri: string;
|
||||||
}
|
};
|
||||||
|
|
||||||
export default interface OpenIdInterface {
|
export default interface OpenIdInterface {
|
||||||
getOpenIdConfig(): Promise<OpenIdConfig>
|
getOpenIdConfig(): Promise<OpenIdConfig>;
|
||||||
verifyIdToken(signingKey: string): Promise<Payload>;
|
verifyIdToken(signingKey: string): Promise<Payload>;
|
||||||
getSigningKeys(jwksUri: string): Promise<string[]>;
|
getSigningKeys(jwksUri: string): Promise<string[]>;
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,7 @@ import errorHandler from "@App/middlewares/ErrorHandler";
|
|||||||
import { BackendVariables } from "@Common/config/variables/Variables";
|
import { BackendVariables } from "@Common/config/variables/Variables";
|
||||||
import multer from "multer";
|
import multer from "multer";
|
||||||
|
|
||||||
|
const storage = multer.memoryStorage();
|
||||||
const storage = multer.memoryStorage();
|
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
@ -24,7 +23,12 @@ const storage = multer.memoryStorage();
|
|||||||
label,
|
label,
|
||||||
port: parseInt(port),
|
port: parseInt(port),
|
||||||
rootUrl,
|
rootUrl,
|
||||||
middlwares: [cors({ origin: "*" }), multer({storage:storage}).single('file'), bodyParser.urlencoded({ extended: true }), bodyParser.json()],
|
middlwares: [
|
||||||
|
cors({ origin: "*" }),
|
||||||
|
multer({ storage: storage }).single("file"),
|
||||||
|
bodyParser.urlencoded({ extended: true }),
|
||||||
|
bodyParser.json(),
|
||||||
|
],
|
||||||
errorHandler,
|
errorHandler,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ import crypto from "crypto";
|
|||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class CryptoService extends BaseService {
|
export default class CryptoService extends BaseService {
|
||||||
|
|
||||||
private static readonly CRYPTO_ALGORITHM = "aes-256-ctr";
|
private static readonly CRYPTO_ALGORITHM = "aes-256-ctr";
|
||||||
|
|
||||||
constructor(protected variables: BackendVariables) {
|
constructor(protected variables: BackendVariables) {
|
||||||
@ -13,7 +12,7 @@ export default class CryptoService extends BaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private getKey(key: string) {
|
private getKey(key: string) {
|
||||||
return crypto.createHash('sha256').update(String(key)).digest('base64').slice(0, 32);
|
return crypto.createHash("sha256").update(String(key)).digest("base64").slice(0, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,7 +28,7 @@ export default class CryptoService extends BaseService {
|
|||||||
const result = Buffer.concat([iv, cipher.update(buffer), cipher.final()]);
|
const result = Buffer.concat([iv, cipher.update(buffer), cipher.final()]);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description : decrypt data with an initialization vector
|
* @description : decrypt data with an initialization vector
|
||||||
* @throws {Error} If data cannot be decrypted
|
* @throws {Error} If data cannot be decrypted
|
||||||
|
@ -6,11 +6,10 @@ import CryptoService from "../CryptoService/CryptoService";
|
|||||||
import IpfsService from "../IpfsService/IpfsService";
|
import IpfsService from "../IpfsService/IpfsService";
|
||||||
import { BackendVariables } from "@Common/config/variables/Variables";
|
import { BackendVariables } from "@Common/config/variables/Variables";
|
||||||
import { Readable } from "stream";
|
import { Readable } from "stream";
|
||||||
import {v4} from "uuid";
|
import { v4 } from "uuid";
|
||||||
import { Files, Prisma } from "@prisma/client";
|
import { Files, Prisma } from "@prisma/client";
|
||||||
import fetch from "node-fetch";
|
import fetch from "node-fetch";
|
||||||
|
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class FilesService extends BaseService {
|
export default class FilesService extends BaseService {
|
||||||
constructor(
|
constructor(
|
||||||
@ -34,7 +33,7 @@ export default class FilesService extends BaseService {
|
|||||||
* @description : Get a file by uid
|
* @description : Get a file by uid
|
||||||
* @throws {Error} If project cannot be created
|
* @throws {Error} If project cannot be created
|
||||||
*/
|
*/
|
||||||
public async getByUid(uid: string, query?: Prisma.FilesInclude) {
|
public async getByUid(uid: string, query?: Prisma.FilesInclude) {
|
||||||
return this.filesRepository.findOneByUid(uid, query);
|
return this.filesRepository.findOneByUid(uid, query);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +41,7 @@ export default class FilesService extends BaseService {
|
|||||||
* @description : Get a file by uid with office
|
* @description : Get a file by uid with office
|
||||||
* @throws {Error} If project cannot be created
|
* @throws {Error} If project cannot be created
|
||||||
*/
|
*/
|
||||||
public async getByUidWithOffice(uid: string) {
|
public async getByUidWithOffice(uid: string) {
|
||||||
return this.filesRepository.findOneByUidWithOffice(uid);
|
return this.filesRepository.findOneByUidWithOffice(uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +54,7 @@ export default class FilesService extends BaseService {
|
|||||||
if (!file?.key) return null;
|
if (!file?.key) return null;
|
||||||
const fileResult = await fetch(file.file_path);
|
const fileResult = await fetch(file.file_path);
|
||||||
const fileArrayBuffer = await fileResult.arrayBuffer();
|
const fileArrayBuffer = await fileResult.arrayBuffer();
|
||||||
return {file: file, buffer: await this.cryptoService.decrypt(Buffer.from(fileArrayBuffer), file.key)};
|
return { file: file, buffer: await this.cryptoService.decrypt(Buffer.from(fileArrayBuffer), file.key) };
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -63,14 +62,15 @@ export default class FilesService extends BaseService {
|
|||||||
* @throws {Error} If file cannot be created
|
* @throws {Error} If file cannot be created
|
||||||
*/
|
*/
|
||||||
public async create(file: File, fileData: Express.Multer.File) {
|
public async create(file: File, fileData: Express.Multer.File) {
|
||||||
const key = v4();
|
const key = v4();
|
||||||
const encryptedFile = await this.cryptoService.encrypt(fileData.buffer, key);
|
const encryptedFile = await this.cryptoService.encrypt(fileData.buffer, key);
|
||||||
const upload = await this.ipfsService.pinFile(Readable.from(encryptedFile), fileData.originalname);
|
const upload = await this.ipfsService.pinFile(Readable.from(encryptedFile), fileData.originalname);
|
||||||
const fileToCreate: File = file;
|
let fileToCreate: File = file;
|
||||||
fileToCreate.file_name = fileData.originalname;
|
fileToCreate.file_name = fileData.originalname;
|
||||||
fileToCreate.file_path = this.variables.PINATA_GATEWAY.concat(upload.IpfsHash);
|
fileToCreate.file_path = this.variables.PINATA_GATEWAY.concat(upload.IpfsHash);
|
||||||
fileToCreate.mimetype = fileData.mimetype;
|
fileToCreate.mimetype = fileData.mimetype;
|
||||||
fileToCreate.size = fileData.size;
|
fileToCreate.size = fileData.size;
|
||||||
|
fileToCreate.archived_at = null;
|
||||||
|
|
||||||
return this.filesRepository.create(fileToCreate, key);
|
return this.filesRepository.create(fileToCreate, key);
|
||||||
}
|
}
|
||||||
@ -80,7 +80,7 @@ export default class FilesService extends BaseService {
|
|||||||
* @throws {Error} If file cannot be modified
|
* @throws {Error} If file cannot be modified
|
||||||
*/
|
*/
|
||||||
public async update(uid: string, file: File): Promise<Files> {
|
public async update(uid: string, file: File): Promise<Files> {
|
||||||
const key = v4();
|
const key = v4();
|
||||||
return this.filesRepository.update(uid, file, key);
|
return this.filesRepository.update(uid, file, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,13 +91,13 @@ export default class FilesService extends BaseService {
|
|||||||
public async deleteKeyAndArchive(uid: string): Promise<Files> {
|
public async deleteKeyAndArchive(uid: string): Promise<Files> {
|
||||||
try {
|
try {
|
||||||
const fileToUnpin = await this.filesRepository.findOneByUid(uid);
|
const fileToUnpin = await this.filesRepository.findOneByUid(uid);
|
||||||
if(!fileToUnpin) throw new Error("file not found");
|
if (!fileToUnpin) throw new Error("file not found");
|
||||||
const fileHash = fileToUnpin.file_path.substring(this.variables.PINATA_GATEWAY.length);
|
const fileHash = fileToUnpin.file_path.substring(this.variables.PINATA_GATEWAY.length);
|
||||||
await this.ipfsService.unpinFile(fileHash);
|
await this.ipfsService.unpinFile(fileHash);
|
||||||
} catch(error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.filesRepository.deleteKeyAndArchive(uid);
|
return this.filesRepository.deleteKeyAndArchive(uid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ export default class FilesService extends BaseService {
|
|||||||
private ipfsClient: pinataSDK;
|
private ipfsClient: pinataSDK;
|
||||||
constructor(protected variables: BackendVariables) {
|
constructor(protected variables: BackendVariables) {
|
||||||
super();
|
super();
|
||||||
this.ipfsClient = new pinataSDK({ pinataApiKey: variables.PINATA_API_KEY, pinataSecretApiKey: variables.PINATA_API_SECRET })
|
this.ipfsClient = new pinataSDK({ pinataApiKey: variables.PINATA_API_KEY, pinataSecretApiKey: variables.PINATA_API_SECRET });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -17,7 +17,7 @@ export default class FilesService extends BaseService {
|
|||||||
* @throws {Error} If file cannot be pinned
|
* @throws {Error} If file cannot be pinned
|
||||||
*/
|
*/
|
||||||
public async pinFile(stream: Readable, fileName: string) {
|
public async pinFile(stream: Readable, fileName: string) {
|
||||||
return this.ipfsClient.pinFileToIPFS(stream, {pinataMetadata : {name: fileName}});
|
return this.ipfsClient.pinFileToIPFS(stream, { pinataMetadata: { name: fileName } });
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -20,7 +20,7 @@ export type OpenIdConfig = {
|
|||||||
scopes_supported: string[];
|
scopes_supported: string[];
|
||||||
issuer: string;
|
issuer: string;
|
||||||
jwks_uri: string;
|
jwks_uri: string;
|
||||||
}
|
};
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class OpenIdService extends BaseService {
|
export default class OpenIdService extends BaseService {
|
||||||
|
@ -38,7 +38,7 @@ export default class DocumentsService extends BaseService {
|
|||||||
* @description : Modify a document
|
* @description : Modify a document
|
||||||
* @throws {Error} If document cannot be modified
|
* @throws {Error} If document cannot be modified
|
||||||
*/
|
*/
|
||||||
public async update(uid: string, document: Document): Promise<Documents> {
|
public async update(uid: string, document: Document): Promise<Documents> {
|
||||||
return this.documentsRepository.update(uid, document);
|
return this.documentsRepository.update(uid, document);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ export default class DocumentsService extends BaseService {
|
|||||||
* @description : Delete a document
|
* @description : Delete a document
|
||||||
* @throws {Error} If document cannot be deleted
|
* @throws {Error} If document cannot be deleted
|
||||||
*/
|
*/
|
||||||
public async delete(uid: string): Promise<Documents> {
|
public async delete(uid: string): Promise<Documents> {
|
||||||
return this.documentsRepository.delete(uid);
|
return this.documentsRepository.delete(uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,9 +6,7 @@ import { Service } from "typedi";
|
|||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class DeedTypesService extends BaseService {
|
export default class DeedTypesService extends BaseService {
|
||||||
constructor(
|
constructor(private deedTypeRepository: DeedTypesRepository) {
|
||||||
private deedTypeRepository: DeedTypesRepository,
|
|
||||||
) {
|
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ export default class DocumentTypesService extends BaseService {
|
|||||||
* @description : Get a document-type by uid
|
* @description : Get a document-type by uid
|
||||||
* @throws {Error} If document-type is not found
|
* @throws {Error} If document-type is not found
|
||||||
*/
|
*/
|
||||||
public async getByUid(uid: string, query?: Prisma.DocumentTypesInclude): Promise<DocumentTypes | null> {
|
public async getByUid(uid: string, query?: Prisma.DocumentTypesInclude): Promise<DocumentTypes | null> {
|
||||||
return this.documentTypeRepository.findOneByUid(uid, query);
|
return this.documentTypeRepository.findOneByUid(uid, query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ export default class DocumentsService extends BaseService {
|
|||||||
* @description : Modify a document
|
* @description : Modify a document
|
||||||
* @throws {Error} If document cannot be modified
|
* @throws {Error} If document cannot be modified
|
||||||
*/
|
*/
|
||||||
public async update(uid: string, document: Partial<Document>, refused_reason?: string): Promise<Documents> {
|
public async update(uid: string, document: Partial<Document>, refused_reason?: string): Promise<Documents> {
|
||||||
return this.documentsRepository.update(uid, document, refused_reason);
|
return this.documentsRepository.update(uid, document, refused_reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,11 +46,11 @@ export default class DocumentsService extends BaseService {
|
|||||||
* @description : Delete a document
|
* @description : Delete a document
|
||||||
* @throws {Error} If document cannot be deleted
|
* @throws {Error} If document cannot be deleted
|
||||||
*/
|
*/
|
||||||
public async delete(uid: string): Promise<Documents> {
|
public async delete(uid: string): Promise<Documents> {
|
||||||
const documentEntity = await this.documentsRepository.findOneByUid(uid, { files: true });
|
const documentEntity = await this.documentsRepository.findOneByUid(uid, { files: true });
|
||||||
if(!documentEntity) throw new Error("document not found");
|
if (!documentEntity) throw new Error("document not found");
|
||||||
const document = Document.hydrate<Document>(documentEntity, { strategy: "excludeAll" });
|
const document = Document.hydrate<Document>(documentEntity, { strategy: "excludeAll" });
|
||||||
|
|
||||||
if (document.files && document.files.length !== 0) {
|
if (document.files && document.files.length !== 0) {
|
||||||
throw new Error("Can't delete a document with file");
|
throw new Error("Can't delete a document with file");
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { OfficeFolders } from ".prisma/client";
|
import { OfficeFolders } from ".prisma/client";
|
||||||
import OfficeFoldersRepository from "@Repositories/OfficeFoldersRepository";
|
import OfficeFoldersRepository from "@Repositories/OfficeFoldersRepository";
|
||||||
import BaseService from "@Services/BaseService";
|
import BaseService from "@Services/BaseService";
|
||||||
import { OfficeFolder } from "le-coffre-resources/dist/SuperAdmin";
|
import { OfficeFolder } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
@ -7,13 +7,12 @@ import DeedTypesService from "../DeedTypesService/DeedTypesService";
|
|||||||
import DeedsRepository from "@Repositories/DeedsRepository";
|
import DeedsRepository from "@Repositories/DeedsRepository";
|
||||||
import { Prisma } from "@prisma/client";
|
import { Prisma } from "@prisma/client";
|
||||||
|
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class OfficeFoldersService extends BaseService {
|
export default class OfficeFoldersService extends BaseService {
|
||||||
constructor(
|
constructor(
|
||||||
private officeFoldersRepository: OfficeFoldersRepository,
|
private officeFoldersRepository: OfficeFoldersRepository,
|
||||||
private deedTypeService: DeedTypesService,
|
private deedTypeService: DeedTypesService,
|
||||||
private deedRepository: DeedsRepository
|
private deedRepository: DeedsRepository,
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
@ -22,7 +21,7 @@ export default class OfficeFoldersService extends BaseService {
|
|||||||
* @description : Get all folders
|
* @description : Get all folders
|
||||||
* @throws {Error} If folders cannot be get
|
* @throws {Error} If folders cannot be get
|
||||||
*/
|
*/
|
||||||
public async get(query: Prisma.OfficeFoldersFindManyArgs) {
|
public async get(query: Prisma.OfficeFoldersFindManyArgs) {
|
||||||
return this.officeFoldersRepository.findMany(query);
|
return this.officeFoldersRepository.findMany(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,8 +31,8 @@ export default class OfficeFoldersService extends BaseService {
|
|||||||
*/
|
*/
|
||||||
public async create(officeFolderEntity: OfficeFolder): Promise<OfficeFolders> {
|
public async create(officeFolderEntity: OfficeFolder): Promise<OfficeFolders> {
|
||||||
const deedType = await this.deedTypeService.getByUid(officeFolderEntity.deed!.deed_type!.uid!);
|
const deedType = await this.deedTypeService.getByUid(officeFolderEntity.deed!.deed_type!.uid!);
|
||||||
if(!deedType) throw new Error('deed type not found');
|
if (!deedType) throw new Error("deed type not found");
|
||||||
if(deedType.archived_at) throw new Error('deed type is archived');
|
if (deedType.archived_at) throw new Error("deed type is archived");
|
||||||
const deed = await this.deedRepository.create(officeFolderEntity.deed!);
|
const deed = await this.deedRepository.create(officeFolderEntity.deed!);
|
||||||
officeFolderEntity.deed!.uid = deed.uid;
|
officeFolderEntity.deed!.uid = deed.uid;
|
||||||
return this.officeFoldersRepository.create(officeFolderEntity);
|
return this.officeFoldersRepository.create(officeFolderEntity);
|
||||||
@ -69,9 +68,9 @@ export default class OfficeFoldersService extends BaseService {
|
|||||||
*/
|
*/
|
||||||
public async delete(uid: string): Promise<OfficeFolders> {
|
public async delete(uid: string): Promise<OfficeFolders> {
|
||||||
const officeFolderEntity = await this.officeFoldersRepository.findOneByUid(uid, { customers: true });
|
const officeFolderEntity = await this.officeFoldersRepository.findOneByUid(uid, { customers: true });
|
||||||
if(!officeFolderEntity) throw new Error('office folder not found');
|
if (!officeFolderEntity) throw new Error("office folder not found");
|
||||||
const officeFolder = OfficeFolder.hydrate<OfficeFolder>(officeFolderEntity, { strategy: "excludeAll" });
|
const officeFolder = OfficeFolder.hydrate<OfficeFolder>(officeFolderEntity, { strategy: "excludeAll" });
|
||||||
|
|
||||||
if (officeFolder.customers?.length) {
|
if (officeFolder.customers?.length) {
|
||||||
throw new Error("This folder is used by customers");
|
throw new Error("This folder is used by customers");
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ import BaseService from "@Services/BaseService";
|
|||||||
import { Service } from "typedi";
|
import { Service } from "typedi";
|
||||||
import OfficeRolesRepository from "@Repositories/OfficeRolesRepository";
|
import OfficeRolesRepository from "@Repositories/OfficeRolesRepository";
|
||||||
import { OfficeRole } from "le-coffre-resources/dist/SuperAdmin";
|
import { OfficeRole } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import {Prisma, OfficeRoles } from "@prisma/client";
|
import { Prisma, OfficeRoles } from "@prisma/client";
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class OfficeRolesService extends BaseService {
|
export default class OfficeRolesService extends BaseService {
|
||||||
|
@ -3,7 +3,7 @@ import "reflect-metadata";
|
|||||||
import { Service } from "typedi";
|
import { Service } from "typedi";
|
||||||
import RolesRepository from "@Repositories/RolesRepository";
|
import RolesRepository from "@Repositories/RolesRepository";
|
||||||
import { Role } from "le-coffre-resources/dist/SuperAdmin";
|
import { Role } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import {Prisma, Roles } from "@prisma/client";
|
import { Prisma, Roles } from "@prisma/client";
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class RolesService extends BaseService {
|
export default class RolesService extends BaseService {
|
||||||
|
@ -3,7 +3,7 @@ import "reflect-metadata";
|
|||||||
import { Service } from "typedi";
|
import { Service } from "typedi";
|
||||||
import RulesRepository from "@Repositories/RulesRepository";
|
import RulesRepository from "@Repositories/RulesRepository";
|
||||||
import { Rule } from "le-coffre-resources/dist/SuperAdmin";
|
import { Rule } from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import {Prisma, Rules } from "@prisma/client";
|
import { Prisma, Rules } from "@prisma/client";
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class RulesService extends BaseService {
|
export default class RulesService extends BaseService {
|
||||||
|
@ -3,7 +3,7 @@ import "reflect-metadata";
|
|||||||
import { Service } from "typedi";
|
import { Service } from "typedi";
|
||||||
import UsersRepository from "@Repositories/UsersRepository";
|
import UsersRepository from "@Repositories/UsersRepository";
|
||||||
import User from "le-coffre-resources/dist/SuperAdmin";
|
import User from "le-coffre-resources/dist/SuperAdmin";
|
||||||
import {Prisma, Users } from "@prisma/client";
|
import { Prisma, Users } from "@prisma/client";
|
||||||
|
|
||||||
@Service()
|
@Service()
|
||||||
export default class UsersService extends BaseService {
|
export default class UsersService extends BaseService {
|
||||||
|
@ -151,7 +151,7 @@ describe("test update function", () => {
|
|||||||
|
|
||||||
describe("test get function", () => {
|
describe("test get function", () => {
|
||||||
it("should return an array of Customers", async () => {
|
it("should return an array of Customers", async () => {
|
||||||
const req = {}
|
const req = {};
|
||||||
const customers = await CustomersServiceTest.get(req);
|
const customers = await CustomersServiceTest.get(req);
|
||||||
|
|
||||||
// verify result typing
|
// verify result typing
|
||||||
|
@ -269,7 +269,7 @@ describe("test get function", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should return an array of DeedTypes per offices", async () => {
|
it("should return an array of DeedTypes per offices", async () => {
|
||||||
const deedTypesForFirstOffice = await DeedTypeServiceTest.get({ where: { office: {uid: office.uid} }, orderBy: { name: "asc" } });
|
const deedTypesForFirstOffice = await DeedTypeServiceTest.get({ where: { office: { uid: office.uid } }, orderBy: { name: "asc" } });
|
||||||
|
|
||||||
expect(deedTypesForFirstOffice.length).toEqual(1);
|
expect(deedTypesForFirstOffice.length).toEqual(1);
|
||||||
|
|
||||||
@ -279,7 +279,10 @@ describe("test get function", () => {
|
|||||||
expect(deedTypesForFirstOffice[0]?.archived_at).toBeNull();
|
expect(deedTypesForFirstOffice[0]?.archived_at).toBeNull();
|
||||||
expect(deedTypesForFirstOffice[0]?.office_uid).toEqual(office.uid);
|
expect(deedTypesForFirstOffice[0]?.office_uid).toEqual(office.uid);
|
||||||
|
|
||||||
const deedTypesForSecondOffice = await DeedTypeServiceTest.get({ where: { office: {uid: office_.uid} }, orderBy: { name: "asc" } });
|
const deedTypesForSecondOffice = await DeedTypeServiceTest.get({
|
||||||
|
where: { office: { uid: office_.uid } },
|
||||||
|
orderBy: { name: "asc" },
|
||||||
|
});
|
||||||
|
|
||||||
expect(deedTypesForSecondOffice.length).toEqual(2);
|
expect(deedTypesForSecondOffice.length).toEqual(2);
|
||||||
|
|
||||||
|
@ -241,7 +241,10 @@ describe("test get function", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should return an array of DocumentTypes per offices", async () => {
|
it("should return an array of DocumentTypes per offices", async () => {
|
||||||
const documentTypesForFirstOffice = await DocumentTypesServiceTest.get({ where: { office: {uid : office.uid }}, orderBy: { name: "asc" } });
|
const documentTypesForFirstOffice = await DocumentTypesServiceTest.get({
|
||||||
|
where: { office: { uid: office.uid } },
|
||||||
|
orderBy: { name: "asc" },
|
||||||
|
});
|
||||||
|
|
||||||
expect(documentTypesForFirstOffice.length).toEqual(1);
|
expect(documentTypesForFirstOffice.length).toEqual(1);
|
||||||
|
|
||||||
@ -252,7 +255,10 @@ describe("test get function", () => {
|
|||||||
expect(documentTypesForFirstOffice[0]?.archived_at).toBeNull();
|
expect(documentTypesForFirstOffice[0]?.archived_at).toBeNull();
|
||||||
expect(documentTypesForFirstOffice[0]?.office_uid).toEqual(office.uid);
|
expect(documentTypesForFirstOffice[0]?.office_uid).toEqual(office.uid);
|
||||||
|
|
||||||
const documentTypesForSecondOffice = await DocumentTypesServiceTest.get({ where: { office: {uid : office_.uid }}, orderBy: { name: "asc" } });
|
const documentTypesForSecondOffice = await DocumentTypesServiceTest.get({
|
||||||
|
where: { office: { uid: office_.uid } },
|
||||||
|
orderBy: { name: "asc" },
|
||||||
|
});
|
||||||
|
|
||||||
expect(documentTypesForSecondOffice.length).toEqual(2);
|
expect(documentTypesForSecondOffice.length).toEqual(2);
|
||||||
|
|
||||||
|
@ -1,7 +1,18 @@
|
|||||||
import "module-alias/register";
|
import "module-alias/register";
|
||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
import { PrismaClient } from "prisma/prisma-client";
|
import { PrismaClient } from "prisma/prisma-client";
|
||||||
import { customer, customer_, deedType, documentType, documentType_, office, officeFolder, officeFolder_, user, user_ } from "@Test/config/MockedData";
|
import {
|
||||||
|
customer,
|
||||||
|
customer_,
|
||||||
|
deedType,
|
||||||
|
documentType,
|
||||||
|
documentType_,
|
||||||
|
office,
|
||||||
|
officeFolder,
|
||||||
|
officeFolder_,
|
||||||
|
user,
|
||||||
|
user_,
|
||||||
|
} from "@Test/config/MockedData";
|
||||||
import Container from "typedi";
|
import Container from "typedi";
|
||||||
import OfficeFoldersRepository from "@Repositories/OfficeFoldersRepository";
|
import OfficeFoldersRepository from "@Repositories/OfficeFoldersRepository";
|
||||||
import OfficeFolderService from "@Services/super-admin/OfficeFoldersService/OfficeFoldersService";
|
import OfficeFolderService from "@Services/super-admin/OfficeFoldersService/OfficeFoldersService";
|
||||||
@ -12,7 +23,11 @@ import DeedsRepository from "@Repositories/DeedsRepository";
|
|||||||
|
|
||||||
const prisma = new PrismaClient();
|
const prisma = new PrismaClient();
|
||||||
|
|
||||||
const OfficeFolderServiceTest = new OfficeFolderService(Container.get(OfficeFoldersRepository), Container.get(DeedTypesService), Container.get(DeedsRepository));
|
const OfficeFolderServiceTest = new OfficeFolderService(
|
||||||
|
Container.get(OfficeFoldersRepository),
|
||||||
|
Container.get(DeedTypesService),
|
||||||
|
Container.get(DeedsRepository),
|
||||||
|
);
|
||||||
|
|
||||||
beforeAll(async () => {
|
beforeAll(async () => {
|
||||||
office.uid = (await initOffice(office)).uid;
|
office.uid = (await initOffice(office)).uid;
|
||||||
@ -48,7 +63,7 @@ describe("test create function", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("should not create a new office folder if deed type is archived", async () => {
|
it("should not create a new office folder if deed type is archived", async () => {
|
||||||
let officeFolderWithArchivatedDeedType: OfficeFolder = JSON.parse(JSON.stringify(officeFolder));
|
let officeFolderWithArchivatedDeedType: OfficeFolder = JSON.parse(JSON.stringify(officeFolder));
|
||||||
// try to create a new deed with unknown deed type
|
// try to create a new deed with unknown deed type
|
||||||
async function createOfficeFolderWithArchivedDeedType() {
|
async function createOfficeFolderWithArchivedDeedType() {
|
||||||
await OfficeFolderServiceTest.create(officeFolderWithArchivatedDeedType);
|
await OfficeFolderServiceTest.create(officeFolderWithArchivatedDeedType);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user