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.

Feature: Organization Settings

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.

  • Organisasjonsinnstillinger og terminologikonfigurasjon Aktivitetsoversikt og grunnleggende statistikk 2 innloggede brukerroller: Organisasjonsadministrator, Global Administrator.
  • Orgs 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