UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.

81 lines (80 loc) 4.25 kB
import User, { IProjectUser, IUser } from '../types/user'; import { IAccessInfo, IRole, IRoleWithPermissions, IRoleWithProject, IUserPermission, IUserRole } from '../types/stores/access-store'; import { IUnleashStores } from '../types/stores'; import { IAvailablePermissions, ICustomRole, IPermission, IRoleData, IUserWithRole, RoleName } from '../types/model'; import { IGroupModelWithProjectRole } from '../types/group'; import { GroupService } from './group-service'; interface IRoleCreation { name: string; description: string; permissions?: IPermission[]; } export interface IRoleValidation { name: string; description?: string; permissions?: Pick<IPermission, 'id' | 'environment'>[]; } interface IRoleUpdate { id: number; name: string; description: string; permissions?: IPermission[]; } export declare class AccessService { private store; private userStore; private roleStore; private groupService; private environmentStore; private logger; constructor({ accessStore, userStore, roleStore, environmentStore, }: Pick<IUnleashStores, 'accessStore' | 'userStore' | 'roleStore' | 'environmentStore'>, { getLogger }: { getLogger: Function; }, groupService: GroupService); /** * Used to check if a user has access to the requested resource * * @param user * @param permission * @param projectId */ hasPermission(user: User, permission: string, projectId?: string, environment?: string): Promise<boolean>; getPermissionsForUser(user: IUser): Promise<IUserPermission[]>; getPermissions(): Promise<IAvailablePermissions>; addUserToRole(userId: number, roleId: number, projectId: string): Promise<void>; addGroupToRole(groupId: number, roleId: number, createdBy: string, projectId: string): Promise<void>; addAccessToProject(users: IAccessInfo[], groups: IAccessInfo[], projectId: string, roleId: number, createdBy: string): Promise<void>; getRoleByName(roleName: string): Promise<IRole>; setUserRootRole(userId: number, role: number | RoleName): Promise<void>; getUserRootRoles(userId: number): Promise<IRoleWithProject[]>; removeUserFromRole(userId: number, roleId: number, projectId: string): Promise<void>; removeGroupFromRole(groupId: number, roleId: number, projectId: string): Promise<void>; updateUserProjectRole(userId: number, roleId: number, projectId: string): Promise<void>; updateGroupProjectRole(userId: number, roleId: number, projectId: string): Promise<void>; addPermissionToRole(roleId: number, permission: string, environment?: string): Promise<void>; removePermissionFromRole(roleId: number, permission: string, environment?: string): Promise<void>; getRoles(): Promise<IRole[]>; getRole(id: number): Promise<IRoleWithPermissions>; getRoleData(roleId: number): Promise<IRoleData>; getProjectRoles(): Promise<IRole[]>; getRolesForProject(projectId: string): Promise<IRole[]>; getRolesForUser(userId: number): Promise<IRole[]>; wipeUserPermissions(userId: number): Promise<void[]>; getUsersForRole(roleId: number): Promise<IUser[]>; getProjectUsersForRole(roleId: number, projectId?: string): Promise<IProjectUser[]>; getProjectRoleAccess(projectId: string): Promise<[IRole[], IUserWithRole[], IGroupModelWithProjectRole[]]>; createDefaultProjectRoles(owner: IUser, projectId: string): Promise<void>; removeDefaultProjectRoles(owner: User, projectId: string): Promise<void>; getRootRoleForAllUsers(): Promise<IUserRole[]>; getRootRoles(): Promise<IRole[]>; resolveRootRole(rootRole: number | RoleName): Promise<IRole>; getRootRole(roleName: RoleName): Promise<IRole>; getAllRoles(): Promise<ICustomRole[]>; createRole(role: IRoleCreation): Promise<ICustomRole>; updateRole(role: IRoleUpdate): Promise<ICustomRole>; deleteRole(id: number): Promise<void>; validateRoleIsUnique(roleName: string, existingId?: number): Promise<void>; validateRoleIsNotBuiltIn(roleId: number): Promise<void>; validateRole(role: IRoleValidation, existingId?: number): Promise<IRoleCreation>; isChangeRequestsEnabled(project: string, environment: string): Promise<boolean>; } export {};