{ "version": 3, "sources": ["src/app/core/enums/permission-status.enum.ts", "src/app/core/models/zod-schemas/membership-api/get-is-member/v1/get-is-member.zod-schema.ts", "src/app/core/models/zod-schemas/proxy-api/get-is-employee/v1/get-is-employee.zod-schema.ts", "src/app/core/models/planned-maintenance.ts", "src/app/core/helpers/maintenance.helper.ts", "src/app/core/services/permission.service.ts", "src/app/core/interceptors/maintenance.interceptor.ts"], "sourcesContent": ["export enum PermissionStatus {\n ACCESS = 'ACCESS', // User has access\n MAINTENANCE = 'MAINTENANCE', // The API is in maintenance mode, can not resolve permission\n NO_ACCESS = 'NO_ACCESS', // User has no access\n UNDER_DEVELOPMENT = 'UNDER_DEVELOPMENT', // Module being developed, no permissions available\n UNRESOLVED = 'UNRESOLVED', // Could not resolve permissions\n NOT_EMPLOYEE_OR_MEMBER = 'NOT_EMPLOYEE_OR_MEMBER', // User not employee or member and should not have permission to anything\n}\n", "import { z } from 'zod';\n\nexport const getIsMemberZodSchema = z\n .object({\n member: z.boolean(),\n })\n .transform((v): { isMember: boolean } => {\n return { isMember: v.member };\n });\n", "import { z } from 'zod';\n\nexport const getIsEmployeeZodSchema = z\n .object({\n isEmployee: z.boolean(),\n })\n .transform((v): { isEmployee: boolean } => {\n return v;\n });\n", "export const plannedMaintenance = 'PLANNED_MAINTENANCE';\n", "import { HttpErrorResponse } from '@angular/common/http';\nimport { plannedMaintenance } from '@core/models/planned-maintenance';\n\nexport class MaintenanceHelper {\n static isMaintenanceResponse(response: HttpErrorResponse): boolean {\n return (\n (response.status === 502 || response.status === 503) &&\n response.error.error === plannedMaintenance\n );\n }\n}\n", "import { inject, Injectable } from '@angular/core';\nimport { catchError, combineLatest, Observable, of, switchMap } from 'rxjs';\nimport {\n FfNgxAuthService,\n FfNgxModalRef,\n FfNgxModalService,\n FfNgxRequestService,\n} from '@fagforbundet/ngx-components';\nimport { map, take } from 'rxjs/operators';\nimport { membershipApiConfig } from '@config/apis/membership/membership-api.config';\nimport { getIsMemberZodSchema } from '@core/models/zod-schemas/membership-api/get-is-member/v1/get-is-member.zod-schema';\nimport { proxyApiConfig } from '@config/apis/proxy/proxy-api.config';\nimport { getIsEmployeeZodSchema } from '@core/models/zod-schemas/proxy-api/get-is-employee/v1/get-is-employee.zod-schema';\nimport { PermissionStatus } from '@core/enums/permission-status.enum';\nimport { Router } from '@angular/router';\nimport { HttpContext, HttpErrorResponse } from '@angular/common/http';\nimport { MaintenanceHelper } from '@core/helpers/maintenance.helper';\nimport { SKIP_MAINTENANCE_INTERCEPTOR } from '@core/interceptors/maintenance.interceptor';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PermissionService {\n readonly #authService = inject(FfNgxAuthService);\n #modalRef!: FfNgxModalRef;\n readonly #modalService = inject(FfNgxModalService);\n readonly #requestService = inject(FfNgxRequestService);\n readonly #router = inject(Router);\n\n handlePermission(status: PermissionStatus): boolean {\n switch (status) {\n case PermissionStatus.ACCESS:\n return true;\n case PermissionStatus.MAINTENANCE:\n this.#router.navigate(['/dashboard']).then(() => {\n this.showAccessModal(\n 'Planlagt vedlikehold',\n `
Denne modulen er under planlagt vedlikehold.
For avklaring og spørsmål kan du kontakte brukerstøtte her.
`,\n );\n });\n\n return false;\n case PermissionStatus.NO_ACCESS:\n this.#router.navigate(['/dashboard']).then(() => {\n this.showAccessModal(\n 'Mangler tilgang',\n `Du mangler tilgang til dette verktøyet.
For avklaring og spørsmål kan du kontakte brukerstøtte her.
`,\n );\n });\n\n return false;\n case PermissionStatus.NOT_EMPLOYEE_OR_MEMBER:\n void this.#router.navigate(['/no-access']);\n return false;\n case PermissionStatus.UNDER_DEVELOPMENT:\n this.#router.navigate(['/dashboard']).then(() => {\n this.showAccessModal(\n 'Under utvikling',\n `Denne modulen er under utvikling.
For avklaring og spørsmål kan du kontakte brukerstøtte her.
`,\n );\n });\n\n return false;\n case PermissionStatus.UNRESOLVED:\n default:\n this.#router.navigate(['/dashboard']).then(() => {\n this.showAccessModal(\n 'Feil oppstod',\n `Vi fikk dessverre ikke sjekket om du har tilgang til denne modulen.
Prøv igjen, og om du fremdeles opplever problemer kan du kontakte brukerstøtte her.
`,\n );\n });\n\n return false;\n }\n }\n\n isEmployee(): Observable