src/app/services/security/authz/permittable-group-id-mapper.ts (104 lines of code) (raw):

/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import { FimsPermissionDescriptor } from './fims-permission-descriptor'; import { IdentityPermittableGroupIds } from '../../identity/domain/permittable-group-ids.model'; import { OfficePermittableGroupIds } from '../../office/domain/permittable-group-ids.model'; import { CustomerPermittableGroupIds } from '../../customer/domain/permittable-group-ids'; import { AccountingPermittableGroupIds } from '../../accounting/domain/permittable-group-ids'; import { PortfolioPermittableGroupIds } from '../../portfolio/domain/permittable-group-ids'; import { GroupPermittableGroupIds } from '../../group/domain/permittable-group-ids'; import { PermissionId } from './permission-id.type'; import { Injectable } from '@angular/core'; import { DepositAccountPermittableGroupIds } from '../../depositAccount/domain/permittable-group-ids'; import { TellerPermittableGroupIds } from '../../teller/domain/permittable-group-ids'; import { ReportingPermittableGroupIds } from '../../reporting/domain/permittable-group-ids'; import { ChequePermittableGroupIds } from '../../cheque/domain/permittable-group-ids'; import { PayrollPermittableGroupIds } from '../../payroll/domain/permittable-group-ids'; interface PermittableGroupMap { [s: string]: FimsPermissionDescriptor; } /** * Maps permittable group ids to internal keys */ @Injectable() export class PermittableGroupIdMapper { private _permittableGroupMap: PermittableGroupMap = {}; constructor() { this._permittableGroupMap[OfficePermittableGroupIds.EMPLOYEE_MANAGEMENT] = { id: 'office_employees', label: 'Employees' }; this._permittableGroupMap[OfficePermittableGroupIds.OFFICE_MANAGEMENT] = { id: 'office_offices', label: 'Offices' }; this._permittableGroupMap[OfficePermittableGroupIds.SELF_MANAGEMENT] = { id: 'office_self', label: 'User created resources(Offices & Employees)' }; this._permittableGroupMap[IdentityPermittableGroupIds.IDENTITY_MANAGEMENT] = { id: 'identity_identities', label: 'Identities' }; this._permittableGroupMap[IdentityPermittableGroupIds.ROLE_MANAGEMENT] = { id: 'identity_roles', label: 'Roles' }; this._permittableGroupMap[IdentityPermittableGroupIds.SELF_MANAGEMENT] = { id: 'identity_self', label: 'User created resources(Identity & Roles)' }; this._permittableGroupMap[GroupPermittableGroupIds.GROUP_MANAGEMENT] = { id: 'group_groups', label: 'Groups' }; this._permittableGroupMap[GroupPermittableGroupIds.GROUP_DEFINITION] = { id: 'group_definition', label: 'Group definition' }; this._permittableGroupMap[CustomerPermittableGroupIds.CUSTOMER_MANAGEMENT] = { id: 'customer_customers', label: 'Members' }; this._permittableGroupMap[CustomerPermittableGroupIds.TASK_MANAGEMENT] = { id: 'customer_tasks', label: 'Tasks' }; this._permittableGroupMap[CustomerPermittableGroupIds.CATALOG_MANAGEMENT] = { id: 'catalog_catalogs', label: 'Custom fields' }; this._permittableGroupMap[CustomerPermittableGroupIds.IDENTITY_CARD_MANAGEMENT] = { id: 'customer_identifications', label: 'Member identification cards' }; this._permittableGroupMap[CustomerPermittableGroupIds.PORTRAIT_MANAGEMENT] = { id: 'customer_portrait', label: 'Member portrait' }; this._permittableGroupMap[CustomerPermittableGroupIds.CUSTOMER_DOCUMENT] = { id: 'customer_documents', label: 'Member documents' }; this._permittableGroupMap[AccountingPermittableGroupIds.ACCOUNT_MANAGEMENT] = { id: 'accounting_accounts', label: 'Accounts' }; this._permittableGroupMap[AccountingPermittableGroupIds.JOURNAL_MANAGEMENT] = { id: 'accounting_journals', label: 'Journal' }; this._permittableGroupMap[AccountingPermittableGroupIds.LEDGER_MANAGEMENT] = { id: 'accounting_ledgers', label: 'Ledger' }; this._permittableGroupMap[AccountingPermittableGroupIds.TRANSACTION_TYPES] = { id: 'accounting_tx_types', label: 'Transaction types' }; this._permittableGroupMap[AccountingPermittableGroupIds.THOTH_INCOME_STMT] = { id: 'accounting_income_statement', label: 'Income statement' }; this._permittableGroupMap[AccountingPermittableGroupIds.THOTH_FIN_CONDITION] = { id: 'accounting_fin_condition', label: 'Financial condition' }; this._permittableGroupMap[PortfolioPermittableGroupIds.PRODUCT_OPERATIONS_MANAGEMENT] = { id: 'portfolio_product_operations', label: 'Loan product operations' }; this._permittableGroupMap[PortfolioPermittableGroupIds.PRODUCT_LOSS_PROVISIONING_MANAGEMENT] = { id: 'portfolio_loss_provision', label: 'Loan loss provision' }; this._permittableGroupMap[PortfolioPermittableGroupIds.PRODUCT_MANAGEMENT] = { id: 'portfolio_products', label: 'Loan products' }; this._permittableGroupMap[PortfolioPermittableGroupIds.CASE_MANAGEMENT] = { id: 'portfolio_cases', label: 'Member loans' }; this._permittableGroupMap[PortfolioPermittableGroupIds.CASE_DOCUMENT_MANAGEMENT] = { id: 'portfolio_documents', label: 'Member loan documents' }; this._permittableGroupMap[DepositAccountPermittableGroupIds.DEFINITION_MANAGEMENT] = { id: 'deposit_definitions', label: 'Deposit account management' }; this._permittableGroupMap[DepositAccountPermittableGroupIds.INSTANCE_MANAGEMENT] = { id: 'deposit_instances', label: 'Deposit account for members' }; this._permittableGroupMap[TellerPermittableGroupIds.TELLER_MANAGEMENT] = { id: 'teller_management', label: 'Teller management' }; this._permittableGroupMap[TellerPermittableGroupIds.TELLER_OPERATION] = { id: 'teller_operations', label: 'Teller operations' }; this._permittableGroupMap[ReportingPermittableGroupIds.REPORT_MANAGEMENT] = { id: 'reporting_management', label: 'Report management' }; this._permittableGroupMap[ChequePermittableGroupIds.CHEQUE_TRANSACTION] = { id: 'cheque_transaction', label: 'Cheque transaction' }; this._permittableGroupMap[ChequePermittableGroupIds.CHEQUE_MANAGEMENT] = { id: 'cheque_management', label: 'Cheque management' }; this._permittableGroupMap[PayrollPermittableGroupIds.CONFIGURATION] = { id: 'payroll_configuration', label: 'Payroll configuration' }; this._permittableGroupMap[PayrollPermittableGroupIds.DISTRIBUTION] = { id: 'payroll_distribution', label: 'Payroll distribution' }; } public map(permittableGroupId: string): FimsPermissionDescriptor { const descriptor: FimsPermissionDescriptor = this._permittableGroupMap[permittableGroupId]; if (!descriptor) { console.warn(`Could not find permission descriptor for permittable group id '${permittableGroupId}'`); } return descriptor; } public isValid(id: PermissionId): boolean { for (const key in this._permittableGroupMap) { if (this._permittableGroupMap.hasOwnProperty(key)) { const descriptor: FimsPermissionDescriptor = this._permittableGroupMap[key]; if (descriptor.id === id) { return true; } } } return false; } }