OrganizationSettingsService
Component Detail
Service Layer
medium complexity
backend
0
Dependencies
0
Dependents
2
Entities
0
Integrations
Description
Business logic layer for reading and updating organization-wide configuration. Enforces role-based access so only administrators can mutate settings, and emits audit trail entries for every change including support access grants. Validates all incoming settings against domain constraints before persisting.
organization-settings-service
Sources & reasoning
Explicitly listed in the MVP Admin Web Portal scope (line 325) as a required day-one capability. The support-access grant detail (line 258-259) adds a compliance-critical dimension that belongs in this feature rather than a separate security feature, since it is surfaced inside Organization Settings.
-
docs/source/likeperson.md · line 325-328Organisasjonsinnstillinger og terminologikonfigurasjon Aktivitetsoversikt og grunnleggende statistikk 2 innloggede brukerroller: Organisasjonsadministrator, Global Administrator.
-
docs/source/likeperson.md · line 258-259Orgs can grant a Global Admin *time-bounded* support access via a flag in Organization Settings (e.g. "Allow Norse support access until {date}"); revoking the flag or hitting the expiry immediately removes access.
Responsibilities
- Validate and apply organization settings updates with domain rule enforcement
- Enforce administrator role requirement via role-based-access-control integration
- Issue time-bounded support access grants and record session start/end to audit trail
- Publish change events for downstream consumers (e.g. locale propagation)
- Return current effective settings with resolved defaults
Interfaces
getSettings(orgId: string): Promise<OrganizationSettings>
updateSettings(orgId: string, patch: Partial<OrganizationSettings>, actorId: string): Promise<OrganizationSettings>
grantSupportAccess(orgId: string, durationHours: number, actorId: string): Promise<SupportAccessGrant>
revokeSupportAccess(orgId: string, grantId: string, actorId: string): Promise<void>
getActiveSupportGrants(orgId: string): Promise<SupportAccessGrant[]>
Related Data Entities (2)
Data entities managed by this component