From 4b92b2a8df75d60b43c29e03615c3a5a2d9745ea Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Sun, 14 Dec 2025 16:41:38 +0000 Subject: [PATCH] entitlements factory --- server/src/init/services.ts | 4 +++- server/src/services/business/AuthService.ts | 15 ++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/server/src/init/services.ts b/server/src/init/services.ts index 8146050d9..8db628453 100644 --- a/server/src/init/services.ts +++ b/server/src/init/services.ts @@ -31,6 +31,7 @@ import { StripeService, BillingService, } from "@/services/index.js"; +import { EntitlementsFactory } from "@/services/system/EntitlementsService.js"; export const initServices = async () => { const checkService = new CheckService(); @@ -64,7 +65,8 @@ export const initServices = async () => { maintenanceService ); const jobQueue = await JobQueue.create(jobGenerator); - const authService = new AuthService(jobQueue); + const entitlementsProvider = EntitlementsFactory.create(); + const authService = new AuthService(jobQueue, entitlementsProvider); const monitorService = new MonitorService(jobQueue); const queueService = new QueueService(jobQueue); const teamService = new TeamService(jobQueue); diff --git a/server/src/services/business/AuthService.ts b/server/src/services/business/AuthService.ts index 16caeaa5c..1764515ee 100644 --- a/server/src/services/business/AuthService.ts +++ b/server/src/services/business/AuthService.ts @@ -22,8 +22,8 @@ import { IJobQueue } from "../infrastructure/JobQueue.js"; import { hashPassword } from "@/utils/JWTUtils.js"; import { Plans } from "@/types/entitlements.js"; import { PERMISSIONS } from "@/types/permissions.js"; -import { EntitlementsFactory } from "@/services/system/EntitlementsService.js"; import type { Entitlements } from "@/types/entitlements.js"; +import type { IEntitlementsProvider } from "@/services/system/EntitlementsService.js"; const SERVICE_NAME = "AuthService"; @@ -68,9 +68,11 @@ export interface IAuthService { class AuthService implements IAuthService { public SERVICE_NAME: string; private jobQueue: IJobQueue; - constructor(jobQueue: IJobQueue) { + private entitlementsProvider: IEntitlementsProvider; + constructor(jobQueue: IJobQueue, entitlementsProvider: IEntitlementsProvider) { this.SERVICE_NAME = SERVICE_NAME; this.jobQueue = jobQueue; + this.entitlementsProvider = entitlementsProvider; } me = async (userId: string) => { @@ -120,6 +122,10 @@ class AuthService implements IAuthService { }; }); + const entitlements: Entitlements = await this.entitlementsProvider.getForOrg( + org._id.toString() + ); + const returnableUser: IUserReturnable = { id: user._id.toString(), email: user.email, @@ -131,7 +137,7 @@ class AuthService implements IAuthService { permissions: orgRoles?.permissions || [], }, teams: returnableTeams, - entitlements: org.entitlements, + entitlements, }; return returnableUser; @@ -510,8 +516,7 @@ class AuthService implements IAuthService { orgId: orgMembership.orgId.toString(), }; - const provider = EntitlementsFactory.create(); - const entitlements: Entitlements = await provider.getForOrg( + const entitlements: Entitlements = await this.entitlementsProvider.getForOrg( org._id.toString() );