Service Layer medium complexity backend
0
Dependencies
0
Dependents
9
Entities
0
Integrations

Description

Business logic layer that coordinates reading and writing organization settings. Applies authorization checks to ensure only permitted roles can modify settings, and orchestrates persistence through the repository. Handles locale normalization and module configuration validation before committing changes.

Feature: Organization Settings

organization-settings-service

Sources & reasoning

Phase 1 MVP admin scope (line 327) explicitly lists 'Organisasjonsinnstillinger'. admin-organization is always-on (line 241), making this non-deferrable. The support-access grant (line 259) is a hard tenant-isolation requirement across all organizations.

  • docs/source/likeperson.md · line 327-328
    Organisasjonsinnstillinger og terminologikonfigurasjon
  • docs/source/likeperson.md · line 241
    Admin Web Portal: admin-dashboard, admin-user-management, admin-organization, admin-security. admin-organization is always-on because it hosts the Feature Toggles UI itself
  • docs/source/likeperson.md · line 259
    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

  • Authorize settings read and write operations against the caller's role
  • Validate and normalize locale preferences and contact detail formats
  • Coordinate support-access grant logic including expiry and audit logging
  • Validate module-level configuration values against allowed schemas
  • Return structured settings objects to the UI layer

Interfaces

getSettings(orgId: string): Promise<OrganizationSettings>
updateSettings(orgId: string, data: OrganizationSettingsInput, actorId: string): Promise<OrganizationSettings>
grantSupportAccess(orgId: string, actorId: string, expiresAt: Date): Promise<void>
revokeSupportAccess(orgId: string, actorId: string): Promise<void>
validateModuleConfig(config: ModuleConfig): ValidationResult