From 77ddc718c516b15358bdb4b2b130f57468b902a6 Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Tue, 14 May 2024 17:13:06 +0200 Subject: [PATCH 1/4] Adding Health Check for cloud providers --- src/entries/Cron.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/entries/Cron.ts b/src/entries/Cron.ts index 760eaa9c..2ceb39da 100644 --- a/src/entries/Cron.ts +++ b/src/entries/Cron.ts @@ -4,12 +4,23 @@ import "reflect-metadata"; import { Container } from "typedi"; import { BackendVariables } from "@Common/config/variables/Variables"; import CronService from "@Services/common/CronService/CronService"; +import http from "http"; (async () => { console.info("Cron started"); try { const variables = await Container.get(BackendVariables).validate(); + + /** + * Cloud providers needs a health check endpoint to know if the server is up otherwise they will stop the app + */ + http.createServer((_req, res) => { + res.writeHead(200, {'Content-Type': 'text/plain'}); + res.write('Health check: OK'); + res.end(); + }).listen(variables.APP_PORT); + Container.get(CronService).archiveFiles(); await Container.get(CronService).updateUsers(); Container.get(CronService).checkDocumentsExpiration(); @@ -17,6 +28,7 @@ import CronService from "@Services/common/CronService/CronService"; Container.get(CronService).sendMails(); Container.get(CronService).sendRecapMails(); } + } catch (e) { console.error(e); } From e04517181b8b88622455e8fafcc93044e706ff4c Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Tue, 14 May 2024 17:13:34 +0200 Subject: [PATCH 2/4] Adding Health Check for cloud providers --- src/entries/Cron.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/entries/Cron.ts b/src/entries/Cron.ts index 760eaa9c..2ceb39da 100644 --- a/src/entries/Cron.ts +++ b/src/entries/Cron.ts @@ -4,12 +4,23 @@ import "reflect-metadata"; import { Container } from "typedi"; import { BackendVariables } from "@Common/config/variables/Variables"; import CronService from "@Services/common/CronService/CronService"; +import http from "http"; (async () => { console.info("Cron started"); try { const variables = await Container.get(BackendVariables).validate(); + + /** + * Cloud providers needs a health check endpoint to know if the server is up otherwise they will stop the app + */ + http.createServer((_req, res) => { + res.writeHead(200, {'Content-Type': 'text/plain'}); + res.write('Health check: OK'); + res.end(); + }).listen(variables.APP_PORT); + Container.get(CronService).archiveFiles(); await Container.get(CronService).updateUsers(); Container.get(CronService).checkDocumentsExpiration(); @@ -17,6 +28,7 @@ import CronService from "@Services/common/CronService/CronService"; Container.get(CronService).sendMails(); Container.get(CronService).sendRecapMails(); } + } catch (e) { console.error(e); } From 2461036035e5033f75415bcc867a0e4f70df2ff5 Mon Sep 17 00:00:00 2001 From: Vins Date: Thu, 11 Jul 2024 15:22:34 +0200 Subject: [PATCH 3/4] Logs --- src/app/api/idnot/UserController.ts | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/app/api/idnot/UserController.ts b/src/app/api/idnot/UserController.ts index 54424a04..175dff82 100644 --- a/src/app/api/idnot/UserController.ts +++ b/src/app/api/idnot/UserController.ts @@ -31,17 +31,21 @@ export default class UserController extends ApiController { @Post("/api/v1/idnot/user/:code") protected async getUserInfosFromIdnot(req: Request, response: Response) { try { - const code = req.params["code"]; + const code = req.params["code"]; + console.log("code", code); + if (!code) throw new Error("code is required"); const idNotToken = await this.idNotService.getIdNotToken(code); + console.log("idNotToken", idNotToken); if (!idNotToken) { this.httpValidationError(response, "IdNot token undefined"); return; } - const user = await this.idNotService.getOrCreateUser(idNotToken); + const user = await this.idNotService.getOrCreateUser(idNotToken); + console.log("user", user); if (!user) { this.httpUnauthorized(response, "User not found"); @@ -52,7 +56,8 @@ export default class UserController extends ApiController { //Whitelist feature //Get user with contact - const prismaUser = await this.userService.getByUid(user.uid, { contact: true, role: true, office_membership: true }); + const prismaUser = await this.userService.getByUid(user.uid, { contact: true, role: true, office_membership: true }); + console.log("prismaUser", prismaUser); if (!prismaUser) { this.httpNotFoundRequest(response, "user not found"); @@ -60,13 +65,17 @@ export default class UserController extends ApiController { } //Hydrate user to be able to use his contact - const userHydrated = User.hydrate(prismaUser, { strategy: "excludeAll" }); + const userHydrated = User.hydrate(prismaUser, { strategy: "excludeAll" }); + console.log("userHydrated", userHydrated); + if (!userHydrated.contact?.email || userHydrated.contact?.email === "") { this.httpUnauthorized(response, "Email not found"); return; } - let isSubscribed = await this.subscriptionsService.isUserSubscribed(user.uid, userHydrated.office_membership?.uid!); + let isSubscribed = await this.subscriptionsService.isUserSubscribed(user.uid, userHydrated.office_membership?.uid!); + console.log("isSubscribed", isSubscribed); + //Check if user is whitelisted // const isWhitelisted = await this.whitelistService.getByEmail(userHydrated.contact!.email); @@ -103,7 +112,9 @@ export default class UserController extends ApiController { isSubscribed = true; } - if (!isSubscribed) { + if (!isSubscribed) { + console.log("User not subscribed"); + this.httpUnauthorized(response, "User not subscribed"); return; } From d49334f0c158572dbe76b3e4d225dcce2b95352f Mon Sep 17 00:00:00 2001 From: Vins Date: Tue, 23 Jul 2024 16:14:49 +0200 Subject: [PATCH 4/4] Removed logs --- src/app/api/idnot/UserController.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/app/api/idnot/UserController.ts b/src/app/api/idnot/UserController.ts index 175dff82..ac4db9e9 100644 --- a/src/app/api/idnot/UserController.ts +++ b/src/app/api/idnot/UserController.ts @@ -32,12 +32,10 @@ export default class UserController extends ApiController { protected async getUserInfosFromIdnot(req: Request, response: Response) { try { const code = req.params["code"]; - console.log("code", code); if (!code) throw new Error("code is required"); const idNotToken = await this.idNotService.getIdNotToken(code); - console.log("idNotToken", idNotToken); if (!idNotToken) { this.httpValidationError(response, "IdNot token undefined"); @@ -45,7 +43,6 @@ export default class UserController extends ApiController { } const user = await this.idNotService.getOrCreateUser(idNotToken); - console.log("user", user); if (!user) { this.httpUnauthorized(response, "User not found"); @@ -57,7 +54,6 @@ export default class UserController extends ApiController { //Whitelist feature //Get user with contact const prismaUser = await this.userService.getByUid(user.uid, { contact: true, role: true, office_membership: true }); - console.log("prismaUser", prismaUser); if (!prismaUser) { this.httpNotFoundRequest(response, "user not found"); @@ -66,7 +62,6 @@ export default class UserController extends ApiController { //Hydrate user to be able to use his contact const userHydrated = User.hydrate(prismaUser, { strategy: "excludeAll" }); - console.log("userHydrated", userHydrated); if (!userHydrated.contact?.email || userHydrated.contact?.email === "") { @@ -74,7 +69,6 @@ export default class UserController extends ApiController { return; } let isSubscribed = await this.subscriptionsService.isUserSubscribed(user.uid, userHydrated.office_membership?.uid!); - console.log("isSubscribed", isSubscribed); //Check if user is whitelisted @@ -112,9 +106,7 @@ export default class UserController extends ApiController { isSubscribed = true; } - if (!isSubscribed) { - console.log("User not subscribed"); - + if (!isSubscribed) { this.httpUnauthorized(response, "User not subscribed"); return; }