From 84d36140fd4701c24a9b508bce516d2e213fac8b Mon Sep 17 00:00:00 2001 From: Vins Date: Tue, 23 Apr 2024 10:54:08 +0200 Subject: [PATCH 1/2] fix admin without subscription --- src/app/api/idnot/UserController.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/app/api/idnot/UserController.ts b/src/app/api/idnot/UserController.ts index 44a62b42..58fd5f64 100644 --- a/src/app/api/idnot/UserController.ts +++ b/src/app/api/idnot/UserController.ts @@ -5,12 +5,13 @@ import { Service } from "typedi"; import AuthService, { IUserJwtPayload } from "@Services/common/AuthService/AuthService"; import IdNotService from "@Services/common/IdNotService/IdNotService"; -import User from "le-coffre-resources/dist/Admin"; +import User, { RulesGroup } from "le-coffre-resources/dist/Admin"; import UsersService from "@Services/super-admin/UsersService/UsersService"; import SubscriptionsService from "@Services/admin/SubscriptionsService/SubscriptionsService.ts"; import { ESubscriptionStatus } from "@prisma/client"; import SeatsService from "@Services/admin/SeatsService/SeatsService"; import { EType } from "le-coffre-resources/dist/Admin/Subscription"; +import RulesGroupsService from "@Services/admin/RulesGroupsService/RulesGroupsService"; @Controller() @Service() @@ -21,6 +22,7 @@ export default class UserController extends ApiController { private userService: UsersService, private subscriptionsService: SubscriptionsService, private seatsService: SeatsService, + private rulesGroupsService: RulesGroupsService ) { super(); } @@ -100,10 +102,6 @@ export default class UserController extends ApiController { } } - if (userHydrated.role?.name === "admin" || userHydrated.role?.name === "super-admin") { - isSubscribed = true; - } - if (!isSubscribed) { this.httpUnauthorized(response, "User not subscribed"); return; @@ -124,6 +122,17 @@ export default class UserController extends ApiController { await this.idNotService.updateOffice(user.office_uid); 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 } }); + const manageSubscriptionRules = RulesGroup.hydrateArray(manageSubscriptionRulesEntity, { strategy: "excludeAll" }); + if(!manageSubscriptionRules[0]) return; + + payload.rules = manageSubscriptionRules[0].rules!.map((rule) => rule.name) || []; + } + const accessToken = this.authService.generateAccessToken(payload); const refreshToken = this.authService.generateRefreshToken(payload); From 9701ea6301de5e7d5532672f9658e014440a77af Mon Sep 17 00:00:00 2001 From: Vins Date: Tue, 23 Apr 2024 11:05:05 +0200 Subject: [PATCH 2/2] fix --- src/app/api/idnot/UserController.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/app/api/idnot/UserController.ts b/src/app/api/idnot/UserController.ts index 58fd5f64..4135f211 100644 --- a/src/app/api/idnot/UserController.ts +++ b/src/app/api/idnot/UserController.ts @@ -102,11 +102,6 @@ export default class UserController extends ApiController { } } - if (!isSubscribed) { - this.httpUnauthorized(response, "User not subscribed"); - return; - } - //Check if user is whitelisted // const isWhitelisted = await this.whitelistService.getByEmail(userHydrated.contact!.email); @@ -130,7 +125,13 @@ export default class UserController extends ApiController { const manageSubscriptionRules = RulesGroup.hydrateArray(manageSubscriptionRulesEntity, { strategy: "excludeAll" }); if(!manageSubscriptionRules[0]) return; - payload.rules = manageSubscriptionRules[0].rules!.map((rule) => rule.name) || []; + payload.rules = manageSubscriptionRules[0].rules!.map((rule) => rule.name) || []; + isSubscribed = true; + } + + if (!isSubscribed) { + this.httpUnauthorized(response, "User not subscribed"); + return; } const accessToken = this.authService.generateAccessToken(payload);