Release v2.5.6
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
// RBAC role duplicate helpers.
|
||||
|
||||
function buildDuplicateRoleName(roleName) {
|
||||
const source = String(roleName || 'Role').trim() || 'Role';
|
||||
return 'Copy of ' + source;
|
||||
}
|
||||
|
||||
function buildDuplicateRole(role, duplicateName) {
|
||||
const source = role || {};
|
||||
return {
|
||||
id: null,
|
||||
name: String(duplicateName || buildDuplicateRoleName(source.name)).trim(),
|
||||
description: String(source.description || '').trim()
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
buildDuplicateRoleName,
|
||||
buildDuplicateRole
|
||||
};
|
||||
@@ -1,5 +1,81 @@
|
||||
// Shared RBAC form view-model helpers.
|
||||
|
||||
function normalizeSectionId(value) {
|
||||
return String(value || '').trim().toLowerCase().replace(/[^a-z0-9]+/g, '-');
|
||||
}
|
||||
|
||||
function buildPermissionSections(permissionGroups) {
|
||||
const sections = [];
|
||||
const sectionIndex = new Map();
|
||||
const actionDefinitions = [
|
||||
{ key: 'read', label: 'Read' },
|
||||
{ key: 'create', label: 'Create' },
|
||||
{ key: 'update', label: 'Update' },
|
||||
{ key: 'delete', label: 'Delete' },
|
||||
{ key: 'allow', label: 'Allow' }
|
||||
];
|
||||
|
||||
(Array.isArray(permissionGroups) ? permissionGroups : []).forEach(function (group) {
|
||||
const sectionTitle = String(group && group.categoryName || 'Permissions').trim() || 'Permissions';
|
||||
const sectionKey = normalizeSectionId(sectionTitle) || 'permissions';
|
||||
|
||||
if (!sectionIndex.has(sectionKey)) {
|
||||
sectionIndex.set(sectionKey, {
|
||||
id: sectionKey,
|
||||
title: sectionTitle,
|
||||
sectionOrder: Number(group && group.sectionOrder) || 999,
|
||||
groups: []
|
||||
});
|
||||
sections.push(sectionIndex.get(sectionKey));
|
||||
}
|
||||
|
||||
const section = sectionIndex.get(sectionKey);
|
||||
const groupPermissions = Array.isArray(group && group.permissions) ? group.permissions.slice() : [];
|
||||
const sectionGroup = Object.assign({}, group, {
|
||||
permissions: groupPermissions
|
||||
});
|
||||
|
||||
section.groups.push(sectionGroup);
|
||||
});
|
||||
|
||||
sections.forEach(function (section) {
|
||||
section.actions = actionDefinitions.map(function (actionDefinition) {
|
||||
return {
|
||||
key: actionDefinition.key,
|
||||
label: actionDefinition.label
|
||||
};
|
||||
});
|
||||
|
||||
section.groups.sort(function (left, right) {
|
||||
const leftOrder = Number(left.resourceOrder) || 999;
|
||||
const rightOrder = Number(right.resourceOrder) || 999;
|
||||
if (leftOrder !== rightOrder) {
|
||||
return leftOrder - rightOrder;
|
||||
}
|
||||
return String(left.title || '').localeCompare(String(right.title || ''));
|
||||
});
|
||||
|
||||
section.groups.forEach(function (group) {
|
||||
group.cells = section.actions.map(function (action) {
|
||||
return (Array.isArray(group.permissions) ? group.permissions : []).find(function (permission) {
|
||||
return String(permission.actionKey || '').trim().toLowerCase() === action.key;
|
||||
}) || null;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
sections.sort(function (left, right) {
|
||||
const leftOrder = Number(left.sectionOrder) || 999;
|
||||
const rightOrder = Number(right.sectionOrder) || 999;
|
||||
if (leftOrder !== rightOrder) {
|
||||
return leftOrder - rightOrder;
|
||||
}
|
||||
return String(left.title || '').localeCompare(String(right.title || ''));
|
||||
});
|
||||
|
||||
return sections;
|
||||
}
|
||||
|
||||
function buildRbacAddViewModel(message, currentUser, formValues, permissionGroups, users, pagination, messageVariant) {
|
||||
return {
|
||||
title: 'Create role',
|
||||
@@ -19,11 +95,12 @@ function buildRbacAddViewModel(message, currentUser, formValues, permissionGroup
|
||||
currentUser: currentUser || null,
|
||||
formValues: formValues || {},
|
||||
permissionGroups: permissionGroups || [],
|
||||
permissionSections: buildPermissionSections(permissionGroups),
|
||||
users: users || [],
|
||||
pagination: pagination || null,
|
||||
roleEditBasePath: '/rbac/new',
|
||||
scripts: ['js/rbac-permissions.js'],
|
||||
formAttrs: 'data-async-save data-async-save-close-url="/rbac" data-async-save-new-redirect="response-url"'
|
||||
formAttrs: 'data-async-save data-async-save-close-url="/rbac" data-async-save-new-redirect="response-url" data-async-save-new-url="/rbac/new"'
|
||||
};
|
||||
}
|
||||
|
||||
@@ -46,10 +123,12 @@ function buildRbacEditViewModel(role, message, currentUser, permissionGroups, us
|
||||
role: role,
|
||||
inUse: Boolean(role && role.inUse),
|
||||
permissionGroups: permissionGroups || [],
|
||||
permissionSections: buildPermissionSections(permissionGroups),
|
||||
users: users || [],
|
||||
pagination: pagination || null,
|
||||
roleEditBasePath: '/rbac/' + Number(role && role.id) + '/edit',
|
||||
scripts: ['js/rbac-permissions.js']
|
||||
scripts: ['js/rbac-permissions.js'],
|
||||
formAttrs: 'data-async-save data-async-save-close-url="/rbac" data-async-save-new-url="/rbac/new"'
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user