update
This commit is contained in:
@@ -15,13 +15,24 @@ export class RoleManager {
|
||||
this.receptionRef = receptionRefArg;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create, change, or delete a role for a user in an organization.
|
||||
* Supports both old single-role and new multi-role patterns.
|
||||
*/
|
||||
public async modifyRoleForUserAtOrg(optionsArg: {
|
||||
action: 'create' | 'change' | 'delete';
|
||||
userId: string;
|
||||
organizationId: string;
|
||||
role: plugins.idpInterfaces.data.IRole['data']['role'];
|
||||
/** @deprecated Use `roles` instead */
|
||||
role?: string;
|
||||
/** Array of roles to assign */
|
||||
roles?: string[];
|
||||
}) {
|
||||
let returnRole: Role;
|
||||
|
||||
// Support both old single role and new roles array
|
||||
const roles = optionsArg.roles || (optionsArg.role ? [optionsArg.role] : ['viewer']);
|
||||
|
||||
switch (optionsArg.action) {
|
||||
case 'create':
|
||||
returnRole = new this.CRole();
|
||||
@@ -29,9 +40,35 @@ export class RoleManager {
|
||||
returnRole.data = {
|
||||
userId: optionsArg.userId,
|
||||
organizationId: optionsArg.organizationId,
|
||||
role: optionsArg.role,
|
||||
roles: roles,
|
||||
};
|
||||
await returnRole.save();
|
||||
break;
|
||||
|
||||
case 'change':
|
||||
returnRole = await this.CRole.getInstance({
|
||||
data: {
|
||||
userId: optionsArg.userId,
|
||||
organizationId: optionsArg.organizationId,
|
||||
},
|
||||
});
|
||||
if (returnRole) {
|
||||
returnRole.data.roles = roles;
|
||||
await returnRole.save();
|
||||
}
|
||||
break;
|
||||
|
||||
case 'delete':
|
||||
returnRole = await this.CRole.getInstance({
|
||||
data: {
|
||||
userId: optionsArg.userId,
|
||||
organizationId: optionsArg.organizationId,
|
||||
},
|
||||
});
|
||||
if (returnRole) {
|
||||
await returnRole.delete();
|
||||
}
|
||||
break;
|
||||
}
|
||||
return returnRole;
|
||||
}
|
||||
@@ -54,4 +91,13 @@ export class RoleManager {
|
||||
});
|
||||
return roles;
|
||||
}
|
||||
|
||||
public async getAllRolesForOrg(organizationId: string) {
|
||||
const roles = await this.CRole.getInstances({
|
||||
data: {
|
||||
organizationId: organizationId
|
||||
}
|
||||
});
|
||||
return roles;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user