@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 2.57 kB
JavaScript
import e from"../../../constants/constants.mjs";import t from"../../../libs/repositories/role-translations.mjs";import n from"../../../utils/security-audit/sort-role-snapshot.mjs";import r from"../../security-audit/serialize-role-value.mjs";import i from"../../../libs/formatters/index.mjs";const a=e=>[...e].sort((e,t)=>e-t),o=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]),s=e=>{let t=n(e.currentRoles),r=a(t.map(e=>e.id)),i=e.roleIds===void 0?r:a(e.roleIds),s=e.roleIds!==void 0&&o(r,i)===!1,c=e.canUpdateSuperAdmin&&e.superAdmin!==void 0?e.superAdmin:e.currentSuperAdmin,l=e.currentSuperAdmin!==c;return{emailChange:e.normalizedEmail!==void 0&&e.normalizedEmail!==e.currentEmail?{previousValue:e.currentEmail,newValue:e.normalizedEmail}:void 0,roleChange:s||l?{previousRoles:t,nextRoleIds:i,rolesChanged:s,previousSuperAdmin:e.currentSuperAdmin,nextSuperAdmin:c}:void 0}},c=async(e,r)=>{if(r.rolesChanged===!1)return{error:void 0,data:r.previousRoles};if(r.nextRoleIds.length===0)return{error:void 0,data:[]};let i=await new t(e.db.client,e.config.db).selectMultiple({select:[`role_id`,`name`],where:[{key:`role_id`,operator:`in`,value:r.nextRoleIds},{key:`locale_code`,operator:`=`,value:e.config.localization.defaultLocale}],validation:{enabled:!0}});return i.error?i:{error:void 0,data:n(i.data.map(e=>({id:e.role_id,name:e.name??``})))}},l=async(t,n)=>{let a=s({currentEmail:n.currentUser.email,currentRoles:n.currentUser.roles,currentSuperAdmin:i.formatBoolean(n.currentUser.superAdmin),normalizedEmail:n.normalizedEmail,roleIds:n.roleIds,superAdmin:n.superAdmin,canUpdateSuperAdmin:n.canUpdateSuperAdmin}),o=[];if(a.emailChange&&o.push({userId:n.userId,action:e.securityAudit.actions.emailChange,performedBy:n.performedBy,previousValue:a.emailChange.previousValue,newValue:a.emailChange.newValue}),n.passwordChanged&&o.push({userId:n.userId,action:e.securityAudit.actions.passwordChange,performedBy:n.performedBy,previousValue:e.securityAudit.redactedValue,newValue:e.securityAudit.redactedValue}),a.roleChange){let i=await c(t,a.roleChange);if(i.error)return i;let[s,l]=await Promise.all([r(t,{roles:a.roleChange.previousRoles,superAdmin:a.roleChange.previousSuperAdmin}),r(t,{roles:i.data,superAdmin:a.roleChange.nextSuperAdmin})]);if(s.error)return s;if(l.error)return l;o.push({userId:n.userId,action:e.securityAudit.actions.roleChange,performedBy:n.performedBy,previousValue:s.data,newValue:l.data})}return{error:void 0,data:{emailChange:a.emailChange,logs:o}}};export{l as default};
//# sourceMappingURL=prepare-update-single-audit-logs.mjs.map