@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 3.07 kB
JavaScript
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../libs/repositories/document-publish-operations.mjs";import n from"../collections/get-single-instance.mjs";import{hasCollectionPermission as r}from"./helpers/index.mjs";import i from"./helpers/create-event.mjs";import a from"./helpers/normalize-comment.mjs";import o from"./notifications.mjs";const s=async(s,c)=>{let l=new t(s.db.client,s.config.db),u=await l.selectSingleDetailed({tenantKey:s.request.tenantKey,where:[{key:`lucid_document_publish_operations.id`,operator:`=`,value:c.id}]});if(u.error)return u;if(u.data?.status!==`pending`)return{error:{type:`basic`,message:e(`server:core.publish.requests.not.pending`),status:400},data:void 0};let d=n(s,{key:u.data.collection_key});if(d.error)return d;if(!r({user:c.user,collection:d.data,action:`review`}))return{error:{type:`basic`,name:e(`server:core.collections.permission.error.name`),message:e(`server:core.collections.permission.error.message`,{data:{collection:u.data.collection_key,action:`review`}}),status:403},data:void 0};let f=a(c.comment);if(d.data.getData.review?.comments.decision===`required`&&!f.text)return{error:{type:`basic`,message:e(`server:core.publish.requests.decision.comment.required`),status:400},data:void 0};let p=new Date().toISOString(),m=await l.updateSingle({where:[{key:`id`,operator:`=`,value:u.data.id}],data:{status:`rejected`,execution_status:`cancelled`,decided_by:c.user.id,decision_comment:f.value,decided_at:p,updated_at:p}});if(m.error)return m;let h=await i(s,{operation:u.data,collectionInstance:d.data,event:{type:`rejected`,userId:c.user.id,comment:f.text,metadata:{}}});if(h.error)return h;let g=u.data.requested_by&&u.data.requested_by_email?[{id:u.data.requested_by,email:u.data.requested_by_email}]:[],_=await o(s,{operationId:u.data.id,collectionKey:u.data.collection_key,documentId:u.data.document_id,recipients:g,title:e(`server:core.publish.requests.rejected.title`),message:e(`server:core.publish.requests.rejected.message`,{data:{user:c.user.email,collection:u.data.collection_key,documentId:u.data.document_id}}),dedupeAction:`rejected`,comment:{label:e(`server:core.publish.requests.email.decision.comment`),value:f.text,html:f.html},details:[{label:e(`server:core.publish.requests.email.detail.release`),value:`#${u.data.id}`},{label:e(`server:core.publish.requests.email.detail.collection`),value:u.data.collection_key},{label:e(`server:core.publish.requests.email.detail.document`),value:`#${u.data.document_id}`},{label:e(`server:core.publish.requests.email.detail.target`),value:u.data.target},{label:e(`server:core.publish.requests.email.detail.requested.by`),value:u.data.requested_by_email},{label:e(`server:core.publish.requests.email.detail.rejected.by`),value:c.user.email},{label:e(`server:core.publish.requests.email.detail.scheduled.for`),value:u.data.scheduled_at},{label:e(`server:core.publish.requests.email.detail.scheduled.timezone`),value:u.data.scheduled_timezone}]});return _.error?_:{error:void 0,data:void 0}};export{s as default};
//# sourceMappingURL=reject.mjs.map