UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

2 lines 3.65 kB
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../libs/repositories/role-permissions.mjs";import n from"../../libs/repositories/role-translations.mjs";import r from"../../libs/repositories/roles.mjs";import{getTenantConfig as i}from"../../utils/helpers/tenants.mjs";import{invalidateAuthCache as a}from"../auth/helpers/auth-cache.mjs";import{isCorePermission as o}from"../../libs/permission/registry.mjs";import s from"./checks/check-role-access.mjs";import{getTranslationValue as c,prepareRoleTranslations as l}from"./helpers/role-translations.mjs";import u from"./validate-permissions.mjs";import d from"../../libs/formatters/index.mjs";const f=async(f,p)=>{let m=new r(f.db.client,f.config.db),h=new n(f.db.client,f.config.db),g=f.config.i18n.defaultLocale,_=new Set(f.config.i18n.locales.map(e=>e.code)),v=c(p.name,g),y=c(p.description,g),[b,x]=await Promise.all([s(f,{id:p.id}),p.permissions===void 0?void 0:u(f,{permissions:p.permissions})]);if(b.error)return b;if(x?.error)return x;if(d.formatBoolean(b.data.locked))return{error:{type:`basic`,message:e(`server:core.permissions.denied`),status:403},data:void 0};let S=p.tenantKey===void 0?b.data.tenant_key:p.tenantKey;if(p.tenantKey!==void 0&&!p.authSuperAdmin||f.request.tenantKey!=null&&b.data.tenant_key!==null&&b.data.tenant_key!==f.request.tenantKey&&!p.authSuperAdmin)return{error:{type:`basic`,message:e(`server:core.permissions.denied`),status:403},data:void 0};if(p.name!==void 0&&(!v||v.length<2))return{error:{type:`basic`,message:e(`server:core.errors.validation.message`),status:400,errors:{name:{code:`invalid`,message:e(`server:core.fields.validation.required`)}}},data:void 0};if(S!==null&&i(f.config,S)===void 0)return{error:{type:`basic`,message:e(`server:core.tenants.unknown`,{data:{key:S}}),status:400},data:void 0};let C=v==null?void 0:await m.selectRoleIdByTranslationName({name:v,localeCode:g,tenantKey:S,excludeRoleId:p.id});if(C?.error)return C;if(v!=null&&C?.data!==void 0)return{error:{type:`basic`,message:e(`server:core.validation.unique.message`),status:400,errors:{name:{code:`invalid`,message:e(`server:core.validation.unique.message`)}}},data:void 0};let w={updated_at:new Date().toISOString()};p.tenantKey!==void 0&&(w.tenant_key=p.tenantKey);let T=await m.updateSingle({data:w,where:[{key:`id`,operator:`=`,value:p.id}],returning:[`id`],validation:{enabled:!0}});if(T.error)return T;if(await a(f),p.name!==void 0||p.description!==void 0){let e=b.data.translations?.filter(e=>e.locale_code!==null&&_.has(e.locale_code)).map(e=>({localeCode:e.locale_code,value:e.name}))??[],t=b.data.translations?.filter(e=>e.locale_code!==null&&_.has(e.locale_code)).map(e=>({localeCode:e.locale_code,value:e.description}))??[],n=c(e,g),r=c(t,g),i=l({name:p.name??e,description:p.description??t,roleId:p.id});i.every(e=>e.locale_code!==g)&&i.push({role_id:p.id,locale_code:g,name:p.name===void 0?n??null:v??null,description:p.description===void 0?r??null:y??null});let a=await h.deleteMultiple({where:[{key:`role_id`,operator:`=`,value:p.id}],returning:[`id`]});if(a.error)return a;if(i.length>0){let e=await h.upsertMultiple({data:i,returning:[`id`],validation:{enabled:!0}});if(e.error)return e}}if(x?.data!==void 0){let e=new t(f.db.client,f.config.db),n=await e.deleteMultiple({where:[{key:`role_id`,operator:`=`,value:p.id}],returning:[`id`],validation:{enabled:!0}});if(n.error)return n;if(x.data.length>0){let t=await e.createMultiple({data:x.data.map(e=>({role_id:p.id,permission:e.permission,core:o(e.permission)}))});if(t.error)return t}}return await a(f),{error:void 0,data:void 0}};export{f as default}; //# sourceMappingURL=update-single.mjs.map