Started implementing the roles permissions

This commit is contained in:
Tiago Ribeiro
2024-10-10 19:13:18 +01:00
parent c43ab9a911
commit 55204e2ce1
67 changed files with 1357 additions and 1134 deletions

View File

@@ -11,4 +11,24 @@ export const getRolesByEntities = async (entityIDs: string[]) =>
export const getRolesByEntity = async (entityID: string) => await db.collection("roles").find<Role>({entityID}).toArray();
export const getRoles = async (ids?: string[]) => await db.collection("roles").find<Role>(!ids ? {} : {id: {$in: ids}}).toArray();
export const getRole = async (id: string) => (await db.collection("roles").findOne<Role>({id})) ?? undefined;
export const createRole = async (role: Role) => await db.collection("roles").insertOne(role)
export const deleteRole = async (id: string) => await db.collection("roles").deleteOne({id})
export const transferRole = async (previousRole: string, newRole: string) =>
await db.collection("users")
.updateMany(
{ "entities.role": previousRole },
{ $set: { 'entities.$[elem].role': newRole } },
{ arrayFilters: [{ 'elem.role': previousRole }] }
);
export const assignRoleToUsers = async (users: string[], entity: string, newRole: string) =>
await db.collection("users")
.updateMany(
{ id: { $in: users } },
{ $set: { 'entities.$[elem].role': newRole } },
{ arrayFilters: [{ 'elem.id': entity }] }
);