authenzify
Version:
server to manage authentication authorization of users and more
146 lines (123 loc) • 3.59 kB
JavaScript
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
}
}