Files
pulse-signage/src/web/routes/settings/users/form-view-model.js
T
lzstealth 98f969ca0f
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile, web, pulse-signage-web) (push) Successful in 1m47s
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile.player, player, pulse-signage-player) (push) Successful in 31s
Release v2.11.1
2026-09-04 15:43:55 +01:00

75 lines
2.7 KiB
JavaScript

// Shared user form view-model helpers.
function normalizeSelectedRoleIds(selectedRoleIds) {
return new Set((Array.isArray(selectedRoleIds) ? selectedRoleIds : []).map(function (roleId) {
return Number(roleId);
}).filter(function (roleId) {
return Number.isInteger(roleId) && roleId > 0;
}));
}
function mapRolesForForm(roles, selectedRoleIds) {
const selectedIds = normalizeSelectedRoleIds(selectedRoleIds);
return (Array.isArray(roles) ? roles : []).map(function (role) {
return Object.assign({}, role, {
isSelected: selectedIds.has(Number(role.id))
});
});
}
function buildUsersAddViewModel(message, currentUser, roles, formValues, messageVariant) {
return {
title: 'Add user',
active: 'users',
userManagementMenuOpen: true,
isEdit: false,
formId: 'user-form',
formAction: '/settings/users',
footerSaveUrl: '/settings/users',
footerCancelUrl: '/settings/users',
footerDeleteUrl: '',
footerDeleteDisabled: true,
footerDeleteTitle: 'Delete is available after the user has been created.',
footerShowDelete: true,
message: message,
messageVariant: messageVariant || 'success',
currentUser: currentUser || null,
roles: mapRolesForForm(roles, []),
formValues: formValues || {},
formAttrs: 'data-async-save data-async-save-close-url="/settings/users" data-async-save-new-redirect="response-url" data-async-save-new-url="/settings/users/new"'
};
}
function buildUsersEditViewModel(user, message, currentUser, roles, sessions) {
return {
title: 'Edit user',
active: 'users',
userManagementMenuOpen: true,
isEdit: true,
formId: 'user-profile-form',
formAction: '/settings/users/' + user.id + '/username',
formAttrs: 'data-async-save data-async-save-close-url="/settings/users"',
footerSaveUrl: '/settings/users/' + user.id + '/username',
footerCancelUrl: '/settings/users',
footerDeleteUrl: '/settings/users/' + user.id + '/delete',
footerDeleteDisabled: Boolean(user && user.inUse),
footerDeleteConfirmMessage: 'Delete this user?',
footerDeleteTitle: user && user.inUse ? 'Delete is disabled while this user is the only account left.' : '',
footerShowDelete: true,
showSaveSecondaryActions: true,
message: message,
currentUser: currentUser || null,
user: user,
sessions: Array.isArray(sessions) ? sessions : [],
inUse: Boolean(user && user.inUse),
roles: mapRolesForForm(roles, user && user.roleIds),
formAttrs: 'data-async-save data-async-save-close-url="/settings/users" data-async-save-new-url="/settings/users/new"'
};
}
module.exports = {
mapRolesForForm: mapRolesForForm,
buildUsersAddViewModel: buildUsersAddViewModel,
buildUsersEditViewModel: buildUsersEditViewModel
};