mirror of
https://github.com/strapi/strapi.git
synced 2025-11-01 18:33:55 +00:00
add didUpdateRolePermissions event
Signed-off-by: Pierre Noël <petersg83@gmail.com>
This commit is contained in:
parent
fad9fda318
commit
afa67add2b
@ -23,4 +23,15 @@ describe('Metrics', () => {
|
||||
expect(countUsers).toHaveBeenCalledWith();
|
||||
expect(countRoles).toHaveBeenCalledWith();
|
||||
});
|
||||
|
||||
test('sendDidUpdateRolePermissions', async () => {
|
||||
const send = jest.fn(() => Promise.resolve());
|
||||
global.strapi = {
|
||||
telemetry: { send },
|
||||
};
|
||||
|
||||
await metricsService.sendDidUpdateRolePermissions();
|
||||
|
||||
expect(send).toHaveBeenCalledWith('didUpdateRolePermissions');
|
||||
});
|
||||
});
|
||||
|
||||
@ -6,6 +6,11 @@ const sendDidInviteUser = async () => {
|
||||
return strapi.telemetry.send('didInviteUser', { numberOfRoles, numberOfUsers });
|
||||
};
|
||||
|
||||
const sendDidUpdateRolePermissions = async () => {
|
||||
return strapi.telemetry.send('didUpdateRolePermissions');
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
sendDidInviteUser,
|
||||
sendDidUpdateRolePermissions,
|
||||
};
|
||||
|
||||
@ -63,6 +63,12 @@ const deleteByIds = ids => {
|
||||
* @returns {Promise<*[]|*>}
|
||||
*/
|
||||
const createMany = async permissions => {
|
||||
try {
|
||||
await validatePermissionsExist(permissions);
|
||||
} catch (err) {
|
||||
throw strapi.errors.badRequest('ValidationError', err);
|
||||
}
|
||||
|
||||
return strapi.query('permission', 'admin').createMany(permissions);
|
||||
};
|
||||
|
||||
@ -97,6 +103,9 @@ const assign = async (roleId, permissions = []) => {
|
||||
throw strapi.errors.badRequest('ValidationError', err);
|
||||
}
|
||||
|
||||
const superAdmin = await strapi.admin.services.role.getSuperAdmin();
|
||||
const isSuperAdmin = superAdmin && superAdmin.id === roleId;
|
||||
|
||||
const permissionsWithRole = permissions.map(permission =>
|
||||
createPermission({
|
||||
...permission,
|
||||
@ -126,6 +135,10 @@ const assign = async (roleId, permissions = []) => {
|
||||
permissionsToReturn.push(...createdPermissions.map(p => ({ ...p, role: p.role.id })));
|
||||
}
|
||||
|
||||
if (!isSuperAdmin && (permissionsToAdd.length || permissionsToDelete.length)) {
|
||||
await strapi.admin.services.metrics.sendDidUpdateRolePermissions();
|
||||
}
|
||||
|
||||
return permissionsToReturn;
|
||||
};
|
||||
|
||||
@ -279,6 +292,7 @@ const resetSuperAdminPermissions = async () => {
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
createMany,
|
||||
find,
|
||||
deleteByRolesIds,
|
||||
deleteByIds,
|
||||
|
||||
@ -233,8 +233,14 @@ const createRolesIfNoneExist = async ({ createPermissionsForAdmin = false } = {}
|
||||
authorPermissions.push(...getDefaultPluginPermissions({ isAuthor: true }));
|
||||
|
||||
// assign permissions to roles
|
||||
await strapi.admin.services.permission.assign(editorRole.id, editorPermissions);
|
||||
await strapi.admin.services.permission.assign(authorRole.id, authorPermissions);
|
||||
editorPermissions.forEach(p => {
|
||||
p.role = editorRole.id;
|
||||
});
|
||||
authorPermissions.forEach(p => {
|
||||
p.role = authorRole.id;
|
||||
});
|
||||
await strapi.admin.services.permission.createMany(editorPermissions);
|
||||
await strapi.admin.services.permission.createMany(authorPermissions);
|
||||
|
||||
if (createPermissionsForAdmin) {
|
||||
await strapi.admin.services.permission.resetSuperAdminPermissions();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user