mirror of
https://github.com/strapi/strapi.git
synced 2025-11-13 08:38:09 +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(countUsers).toHaveBeenCalledWith();
|
||||||
expect(countRoles).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 });
|
return strapi.telemetry.send('didInviteUser', { numberOfRoles, numberOfUsers });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const sendDidUpdateRolePermissions = async () => {
|
||||||
|
return strapi.telemetry.send('didUpdateRolePermissions');
|
||||||
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
sendDidInviteUser,
|
sendDidInviteUser,
|
||||||
|
sendDidUpdateRolePermissions,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -63,6 +63,12 @@ const deleteByIds = ids => {
|
|||||||
* @returns {Promise<*[]|*>}
|
* @returns {Promise<*[]|*>}
|
||||||
*/
|
*/
|
||||||
const createMany = async permissions => {
|
const createMany = async permissions => {
|
||||||
|
try {
|
||||||
|
await validatePermissionsExist(permissions);
|
||||||
|
} catch (err) {
|
||||||
|
throw strapi.errors.badRequest('ValidationError', err);
|
||||||
|
}
|
||||||
|
|
||||||
return strapi.query('permission', 'admin').createMany(permissions);
|
return strapi.query('permission', 'admin').createMany(permissions);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -97,6 +103,9 @@ const assign = async (roleId, permissions = []) => {
|
|||||||
throw strapi.errors.badRequest('ValidationError', err);
|
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 =>
|
const permissionsWithRole = permissions.map(permission =>
|
||||||
createPermission({
|
createPermission({
|
||||||
...permission,
|
...permission,
|
||||||
@ -126,6 +135,10 @@ const assign = async (roleId, permissions = []) => {
|
|||||||
permissionsToReturn.push(...createdPermissions.map(p => ({ ...p, role: p.role.id })));
|
permissionsToReturn.push(...createdPermissions.map(p => ({ ...p, role: p.role.id })));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!isSuperAdmin && (permissionsToAdd.length || permissionsToDelete.length)) {
|
||||||
|
await strapi.admin.services.metrics.sendDidUpdateRolePermissions();
|
||||||
|
}
|
||||||
|
|
||||||
return permissionsToReturn;
|
return permissionsToReturn;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -279,6 +292,7 @@ const resetSuperAdminPermissions = async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
createMany,
|
||||||
find,
|
find,
|
||||||
deleteByRolesIds,
|
deleteByRolesIds,
|
||||||
deleteByIds,
|
deleteByIds,
|
||||||
|
|||||||
@ -233,8 +233,14 @@ const createRolesIfNoneExist = async ({ createPermissionsForAdmin = false } = {}
|
|||||||
authorPermissions.push(...getDefaultPluginPermissions({ isAuthor: true }));
|
authorPermissions.push(...getDefaultPluginPermissions({ isAuthor: true }));
|
||||||
|
|
||||||
// assign permissions to roles
|
// assign permissions to roles
|
||||||
await strapi.admin.services.permission.assign(editorRole.id, editorPermissions);
|
editorPermissions.forEach(p => {
|
||||||
await strapi.admin.services.permission.assign(authorRole.id, authorPermissions);
|
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) {
|
if (createPermissionsForAdmin) {
|
||||||
await strapi.admin.services.permission.resetSuperAdminPermissions();
|
await strapi.admin.services.permission.resetSuperAdminPermissions();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user