From 1998dad3c543937b877fb8bc202f94b37c5cd658 Mon Sep 17 00:00:00 2001 From: Yanis JEDRZEJCZAK Date: Tue, 23 Apr 2024 17:06:42 +0200 Subject: [PATCH 1/6] Fix envs on crons --- .github/workflows/ppd.yml | 2 +- .github/workflows/prd.yml | 2 +- .github/workflows/stg.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ppd.yml b/.github/workflows/ppd.yml index 085af1e9..eff21432 100644 --- a/.github/workflows/ppd.yml +++ b/.github/workflows/ppd.yml @@ -210,7 +210,7 @@ jobs: env_string=$(echo $env_string | sed 's/ $//') scw container container update ${{ env.CONTAINER_ID }} $env_string env: - ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + ENV_VARS: ${{ secrets.ENV }} SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} diff --git a/.github/workflows/prd.yml b/.github/workflows/prd.yml index 4be80445..d19ff352 100644 --- a/.github/workflows/prd.yml +++ b/.github/workflows/prd.yml @@ -208,7 +208,7 @@ jobs: env_string=$(echo $env_string | sed 's/ $//') scw container container update ${{ env.CONTAINER_ID }} $env_string env: - ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + ENV_VARS: ${{ secrets.ENV }} SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} diff --git a/.github/workflows/stg.yml b/.github/workflows/stg.yml index 6db2e297..b4ceffe2 100644 --- a/.github/workflows/stg.yml +++ b/.github/workflows/stg.yml @@ -208,7 +208,7 @@ jobs: env_string=$(echo $env_string | sed 's/ $//') scw container container update ${{ env.CONTAINER_ID }} $env_string env: - ENV_VARS: ${{ secrets.ENV_LECOFFRE }} + ENV_VARS: ${{ secrets.ENV }} SCW_ACCESS_KEY: ${{ secrets.SCW_ACCESS_KEY_LECOFFRE }} SCW_SECRET_KEY: ${{ secrets.SCW_SECRET_KEY_LECOFFRE }} SCW_DEFAULT_PROJECT_ID: ${{ env.PROJECT_ID_LECOFFRE }} From 3686edb1ce53cf5a6ef23743126286e291fb5ecd Mon Sep 17 00:00:00 2001 From: Vins Date: Tue, 23 Apr 2024 17:48:35 +0200 Subject: [PATCH 2/6] Test --- src/app/api/idnot/UserController.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/api/idnot/UserController.ts b/src/app/api/idnot/UserController.ts index 4135f211..d5ad7924 100644 --- a/src/app/api/idnot/UserController.ts +++ b/src/app/api/idnot/UserController.ts @@ -128,6 +128,7 @@ export default class UserController extends ApiController { payload.rules = manageSubscriptionRules[0].rules!.map((rule) => rule.name) || []; isSubscribed = true; } + if (!isSubscribed) { this.httpUnauthorized(response, "User not subscribed"); From 5b31f74e33098f2a57698edb05fa6d3e73f391c6 Mon Sep 17 00:00:00 2001 From: Vins Date: Tue, 23 Apr 2024 17:51:52 +0200 Subject: [PATCH 3/6] test log for stg --- src/app/api/idnot/UserController.ts | 16 +++++++++++++--- src/services/common/IdNotService/IdNotService.ts | 8 ++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/app/api/idnot/UserController.ts b/src/app/api/idnot/UserController.ts index d5ad7924..63490c17 100644 --- a/src/app/api/idnot/UserController.ts +++ b/src/app/api/idnot/UserController.ts @@ -36,10 +36,14 @@ 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); + const idNotToken = await this.idNotService.getIdNotToken(code); + console.log("idNotToken", idNotToken); + if (!idNotToken) { this.httpValidationError(response, "IdNot token undefined"); @@ -73,7 +77,9 @@ export default class UserController extends ApiController { } let isSubscribed = false; - const subscriptions = await this.subscriptionsService.get({ where: { office_uid: userHydrated.office_membership?.uid } }); + const subscriptions = await this.subscriptionsService.get({ where: { office_uid: userHydrated.office_membership?.uid } }); + console.log("subscriptions", subscriptions); + if (!subscriptions || subscriptions.length === 0 || subscriptions[0]?.status === ESubscriptionStatus.INACTIVE) { isSubscribed = false; @@ -117,6 +123,8 @@ export default class UserController extends ApiController { await this.idNotService.updateOffice(user.office_uid); const payload = await this.authService.getUserJwtPayload(user.idNot); + console.log("payload", payload); + if(!payload) return; @@ -126,9 +134,11 @@ export default class UserController extends ApiController { if(!manageSubscriptionRules[0]) return; payload.rules = manageSubscriptionRules[0].rules!.map((rule) => rule.name) || []; + console.log("payload with subscription rules", payload); + isSubscribed = true; } - + if (!isSubscribed) { this.httpUnauthorized(response, "User not subscribed"); diff --git a/src/services/common/IdNotService/IdNotService.ts b/src/services/common/IdNotService/IdNotService.ts index 9820fd86..4a843917 100644 --- a/src/services/common/IdNotService/IdNotService.ts +++ b/src/services/common/IdNotService/IdNotService.ts @@ -121,14 +121,22 @@ export default class IdNotService extends BaseService { code: code, grant_type: "authorization_code", }); + console.log(this.variables.IDNOT_BASE_URL + this.variables.IDNOT_CONNEXION_URL + "?" + query); + const token = await fetch(this.variables.IDNOT_BASE_URL + this.variables.IDNOT_CONNEXION_URL + "?" + query, { method: "POST" }); + console.log(token); + if(token.status !== 200) console.error(await token.text()); const decodedToken = (await token.json()) as IIdNotToken; + console.log("decodedToken", decodedToken); + const decodedIdToken = jwt.decode(decodedToken.id_token) as IdNotJwtPayload; + console.log("decodedIdToken", decodedIdToken); + return decodedIdToken; From 98ecd404343ff1da0ab4bdc86e3e108fbd77c18b Mon Sep 17 00:00:00 2001 From: Vins Date: Tue, 23 Apr 2024 18:02:55 +0200 Subject: [PATCH 4/6] More test log --- src/app/api/idnot/UserController.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/app/api/idnot/UserController.ts b/src/app/api/idnot/UserController.ts index 63490c17..d5683cac 100644 --- a/src/app/api/idnot/UserController.ts +++ b/src/app/api/idnot/UserController.ts @@ -130,7 +130,11 @@ export default class UserController extends ApiController { if(!isSubscribed && userHydrated.role?.name === "admin" || userHydrated.role?.name === "super-admin"){ const manageSubscriptionRulesEntity = await this.rulesGroupsService.get({ where: { name: "Gestion de l'abonnement" }, include: { rules: true } }); + console.log("manageSubscriptionRulesEntity", manageSubscriptionRulesEntity); + const manageSubscriptionRules = RulesGroup.hydrateArray(manageSubscriptionRulesEntity, { strategy: "excludeAll" }); + console.log("manageSubscriptionRules", manageSubscriptionRules); + if(!manageSubscriptionRules[0]) return; payload.rules = manageSubscriptionRules[0].rules!.map((rule) => rule.name) || []; From 577edf556677d3452e53ab7cc9e947b82caf6230 Mon Sep 17 00:00:00 2001 From: Vins Date: Wed, 24 Apr 2024 08:50:12 +0200 Subject: [PATCH 5/6] logs --- src/app/api/idnot/UserController.ts | 28 +++++-------------- src/entries/App.ts | 2 ++ .../common/IdNotService/IdNotService.ts | 9 +----- 3 files changed, 10 insertions(+), 29 deletions(-) diff --git a/src/app/api/idnot/UserController.ts b/src/app/api/idnot/UserController.ts index d5683cac..f151c8f6 100644 --- a/src/app/api/idnot/UserController.ts +++ b/src/app/api/idnot/UserController.ts @@ -35,15 +35,11 @@ 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"]; - console.log("code", code); - + const code = req.params["code"]; if (!code) throw new Error("code is required"); - const idNotToken = await this.idNotService.getIdNotToken(code); - console.log("idNotToken", idNotToken); - + const idNotToken = await this.idNotService.getIdNotToken(code); if (!idNotToken) { this.httpValidationError(response, "IdNot token undefined"); @@ -77,9 +73,7 @@ export default class UserController extends ApiController { } let isSubscribed = false; - const subscriptions = await this.subscriptionsService.get({ where: { office_uid: userHydrated.office_membership?.uid } }); - console.log("subscriptions", subscriptions); - + const subscriptions = await this.subscriptionsService.get({ where: { office_uid: userHydrated.office_membership?.uid } }); if (!subscriptions || subscriptions.length === 0 || subscriptions[0]?.status === ESubscriptionStatus.INACTIVE) { isSubscribed = false; @@ -122,24 +116,16 @@ export default class UserController extends ApiController { await this.idNotService.updateOffice(user.office_uid); - const payload = await this.authService.getUserJwtPayload(user.idNot); - console.log("payload", payload); - + const payload = await this.authService.getUserJwtPayload(user.idNot); if(!payload) return; if(!isSubscribed && userHydrated.role?.name === "admin" || userHydrated.role?.name === "super-admin"){ - const manageSubscriptionRulesEntity = await this.rulesGroupsService.get({ where: { name: "Gestion de l'abonnement" }, include: { rules: true } }); - console.log("manageSubscriptionRulesEntity", manageSubscriptionRulesEntity); - - const manageSubscriptionRules = RulesGroup.hydrateArray(manageSubscriptionRulesEntity, { strategy: "excludeAll" }); - console.log("manageSubscriptionRules", manageSubscriptionRules); - + const manageSubscriptionRulesEntity = await this.rulesGroupsService.get({ where: { name: "Gestion de l'abonnement" }, include: { rules: true } }); + const manageSubscriptionRules = RulesGroup.hydrateArray(manageSubscriptionRulesEntity, { strategy: "excludeAll" }); if(!manageSubscriptionRules[0]) return; - payload.rules = manageSubscriptionRules[0].rules!.map((rule) => rule.name) || []; - console.log("payload with subscription rules", payload); - + payload.rules = manageSubscriptionRules[0].rules!.map((rule) => rule.name) || []; isSubscribed = true; } diff --git a/src/entries/App.ts b/src/entries/App.ts index 5dd1bd04..e04e9db3 100644 --- a/src/entries/App.ts +++ b/src/entries/App.ts @@ -15,6 +15,8 @@ const storage = multer.memoryStorage(); (async () => { try { const variables = await Container.get(BackendVariables).validate(); + console.log(variables.DATABASE_NAME); + const port = variables.APP_PORT; const rootUrl = variables.APP_ROOT_URL; const label = variables.APP_LABEL ?? "Unknown Service"; diff --git a/src/services/common/IdNotService/IdNotService.ts b/src/services/common/IdNotService/IdNotService.ts index 4a843917..7104c4c5 100644 --- a/src/services/common/IdNotService/IdNotService.ts +++ b/src/services/common/IdNotService/IdNotService.ts @@ -121,22 +121,15 @@ export default class IdNotService extends BaseService { code: code, grant_type: "authorization_code", }); - console.log(this.variables.IDNOT_BASE_URL + this.variables.IDNOT_CONNEXION_URL + "?" + query); const token = await fetch(this.variables.IDNOT_BASE_URL + this.variables.IDNOT_CONNEXION_URL + "?" + query, { method: "POST" }); - console.log(token); - if(token.status !== 200) console.error(await token.text()); const decodedToken = (await token.json()) as IIdNotToken; - console.log("decodedToken", decodedToken); - - - const decodedIdToken = jwt.decode(decodedToken.id_token) as IdNotJwtPayload; - console.log("decodedIdToken", decodedIdToken); + const decodedIdToken = jwt.decode(decodedToken.id_token) as IdNotJwtPayload; return decodedIdToken; From f70085a7aca13279355d90d8b2fb6abbf1420631 Mon Sep 17 00:00:00 2001 From: Vins Date: Wed, 24 Apr 2024 09:50:26 +0200 Subject: [PATCH 6/6] Fixed login --- src/app/api/admin/OfficeRolesController.ts | 4 +--- src/app/api/idnot/UserController.ts | 3 ++- src/common/config/variables/Variables.ts | 8 -------- src/common/databases/seeders/seeder.ts | 2 ++ src/entries/App.ts | 4 +--- 5 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/app/api/admin/OfficeRolesController.ts b/src/app/api/admin/OfficeRolesController.ts index 649e4ade..29cec7ad 100644 --- a/src/app/api/admin/OfficeRolesController.ts +++ b/src/app/api/admin/OfficeRolesController.ts @@ -124,9 +124,7 @@ export default class OfficeRolesController extends ApiController { return; } - if (req.body.rules) { - console.log(req.body.rules); - + if (req.body.rules) { const allRules = await this.rulesService.get({ where: { namespace: "global", diff --git a/src/app/api/idnot/UserController.ts b/src/app/api/idnot/UserController.ts index f151c8f6..5d8bc8e4 100644 --- a/src/app/api/idnot/UserController.ts +++ b/src/app/api/idnot/UserController.ts @@ -121,7 +121,8 @@ export default class UserController extends ApiController { if(!isSubscribed && userHydrated.role?.name === "admin" || userHydrated.role?.name === "super-admin"){ - const manageSubscriptionRulesEntity = await this.rulesGroupsService.get({ where: { name: "Gestion de l'abonnement" }, include: { rules: true } }); + const manageSubscriptionRulesEntity = await this.rulesGroupsService.get({ where: { uid: "94343601-04c8-44ef-afb9-3047597528a9" }, include: { rules: true } }); + console.log(manageSubscriptionRulesEntity); const manageSubscriptionRules = RulesGroup.hydrateArray(manageSubscriptionRulesEntity, { strategy: "excludeAll" }); if(!manageSubscriptionRules[0]) return; diff --git a/src/common/config/variables/Variables.ts b/src/common/config/variables/Variables.ts index 4ff86cab..ac3179db 100644 --- a/src/common/config/variables/Variables.ts +++ b/src/common/config/variables/Variables.ts @@ -157,12 +157,6 @@ export class BackendVariables { @IsNotEmpty() public readonly STRIPE_UNLIMITED_ANNUAL_SUBSCRIPTION_PRICE_ID!: string; - @IsNotEmpty() - public readonly STRIPE_PAYMENT_SUCCESS_URL!: string; - - @IsNotEmpty() - public readonly STRIPE_PAYMENT_CANCEL_URL!: string; - @IsNotEmpty() public readonly IDNOT_PROD_BASE_URL!: string; @@ -219,8 +213,6 @@ export class BackendVariables { this.STRIPE_STANDARD_ANNUAL_SUBSCRIPTION_PRICE_ID = process.env["STRIPE_STANDARD_ANNUAL_SUBSCRIPTION_PRICE_ID"]!; this.STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID = process.env["STRIPE_UNLIMITED_SUBSCRIPTION_PRICE_ID"]!; this.STRIPE_UNLIMITED_ANNUAL_SUBSCRIPTION_PRICE_ID = process.env["STRIPE_UNLIMITED_ANNUAL_SUBSCRIPTION_PRICE_ID"]!; - this.STRIPE_PAYMENT_SUCCESS_URL = process.env["STRIPE_PAYMENT_SUCCESS_URL"]!; - this.STRIPE_PAYMENT_CANCEL_URL = process.env["STRIPE_PAYMENT_CANCEL_URL"]!; this.IDNOT_PROD_BASE_URL = process.env["IDNOT_PROD_BASE_URL"]!; } public async validate(groups?: string[]) { diff --git a/src/common/databases/seeders/seeder.ts b/src/common/databases/seeders/seeder.ts index 70b74df4..ce7da8bb 100644 --- a/src/common/databases/seeders/seeder.ts +++ b/src/common/databases/seeders/seeder.ts @@ -874,6 +874,7 @@ export default async function main() { }, { name: "Gestion de l'abonnement", + uid: "94343601-04c8-44ef-afb9-3047597528a9", created_at: new Date(), updated_at: new Date(), rules : [ @@ -1973,6 +1974,7 @@ export default async function main() { for (const ruleGroup of rulesGroups) { await prisma.rulesGroups.create({ data: { + uid: ruleGroup.uid, name: ruleGroup.name, rules: { connect: ruleGroup.rules?.map((rule) => ({ diff --git a/src/entries/App.ts b/src/entries/App.ts index e04e9db3..d94c9766 100644 --- a/src/entries/App.ts +++ b/src/entries/App.ts @@ -14,9 +14,7 @@ const storage = multer.memoryStorage(); (async () => { try { - const variables = await Container.get(BackendVariables).validate(); - console.log(variables.DATABASE_NAME); - + const variables = await Container.get(BackendVariables).validate(); const port = variables.APP_PORT; const rootUrl = variables.APP_ROOT_URL; const label = variables.APP_LABEL ?? "Unknown Service";