UNPKG

authenzify

Version:

server to manage authentication authorization of users and more

146 lines (123 loc) 3.59 kB
import { verifyExistence } from '../util/util.js' const psFnList = [ 'findPermission', 'findPermissions', 'createPermission', 'deletePermission', 'findPermissionByName', 'findPermissionsByNames', ] const psgFnList = [ 'findGroup', 'findGroups', 'deleteGroup', 'createGroup', 'findPermissionsGroupsByNames', ] export class PermissionsService { #iDalPermissionsService #iDalPermissionsGroupsService constructor(iDalPermissionsService, iDalPermissionsGroupsService) { verifyExistence(iDalPermissionsService, psFnList) verifyExistence(iDalPermissionsGroupsService, psgFnList) this.#iDalPermissionsService = iDalPermissionsService this.#iDalPermissionsGroupsService = iDalPermissionsGroupsService } async createPermission(permissionDetails) { const permission = await this.#iDalPermissionsService.createPermission(permissionDetails) return permission } async findPermission({ id }) { const permission = await this.#iDalPermissionsService.findPermission({ id, }) return permission } async findPermissions(filter) { const permissions = await this.#iDalPermissionsService.findPermissions(filter) return permissions } async deletePermission({ id }) { const permission = await this.#iDalPermissionsService.deletePermission({ id, }) return permission } async createPermissionsGroup(permissionDetails) { const permission = await this.#iDalPermissionsGroupsService.createGroup(permissionDetails) return permission } async findPermissionsGroups({ tenantId, filter }) { const permissionsGroups = await this.#iDalPermissionsGroupsService.findGroups({ filter, tenantId, }) return permissionsGroups } async findPermissionsGroup({ tenantId, id }) { const permissionGroups = await this.#iDalPermissionsGroupsService.findGroup( { tenantId, id, }, ) return permissionGroups } async deletePermissionsGroup({ tenantId, id }) { const permission = await this.#iDalPermissionsGroupsService.deleteGroup({ id, tenantId, }) return permission } async findPermissionsByNames({ permissionNames }) { const permissionsByNames = await this.#iDalPermissionsService.findPermissionsByNames({ permissionNames, }) return permissionsByNames } async findPermissionsGroupsByNames({ tenantId, names }) { const permissionsGroupsByNames = await this.#iDalPermissionsGroupsService.findPermissionsGroupsByNames({ tenantId, names, }) return permissionsGroupsByNames } async findPermissionByName({ name }) { const permission = await this.#iDalPermissionsService.findPermissionByName({ name, }) return permission } async initializePermissions(permissions) { const existingPermissions = await this.findPermissionsByNames({ permissionNames: permissions.map(({ name }) => name), }) await Promise.all( permissions .filter( ({ name }) => !existingPermissions.length || !existingPermissions.find( (existingPermission) => existingPermission.name === name, ), ) .map(({ name, description, isDeleted, isBase }) => { return this.createPermission({ name, isBase, isDeleted, description, }) }), ) const permissionsUpdated = await this.findPermissions() return permissionsUpdated } }