@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 2.64 kB
JavaScript
import{copy as e}from"../../../libs/i18n/copy.mjs";import t from"../../../constants/constants.mjs";import n from"../../../utils/helpers/get-base-url.mjs";import r from"../../../libs/repositories/auth-states.mjs";import i from"../../../libs/repositories/user-tokens.mjs";import a from"../../../libs/repositories/users.mjs";import o from"../../../utils/helpers/hash-user-token.mjs";import s from"../../../libs/auth-providers/get-available-providers.mjs";import c from"../../../libs/auth-providers/get-adapter.mjs";import l from"../../../libs/auth-providers/helpers/build-callback-redirect-url.mjs";import u from"../../../libs/formatters/index.mjs";import{randomUUID as d}from"node:crypto";import{addMilliseconds as f}from"date-fns";const p=async(p,m)=>{let h=new i(p.db.client,p.config.db),g=new r(p.db.client,p.config.db),_=new a(p.db.client,p.config.db),v=s(p.config).providers.find(e=>e.key===m.providerKey);if(!v)return{error:{type:`basic`,status:404,name:e(`server:core.auth.providers.not.found.name`),message:e(`server:core.auth.providers.not.found.message`)},data:void 0};let y;if(m.invitationToken){let n=await h.selectSingle({select:[`id`,`user_id`,`expiry_date`],where:[{key:`token`,operator:`=`,value:o(m.invitationToken)},{key:`token_type`,operator:`=`,value:t.userTokens.invitation},{key:`expiry_date`,operator:`>`,value:new Date().toISOString()},{key:`revoked_at`,operator:`is`,value:null},{key:`consumed_at`,operator:`is`,value:null}],validation:{enabled:!0,defaultError:{status:404,message:e(`server:core.tokens.not.found.message`)}}});if(n.error)return n;let r=await _.selectSingle({select:[`invitation_accepted`],where:[{key:`id`,operator:`=`,value:n.data.user_id}],validation:{enabled:!0,defaultError:{status:404,message:e(`server:core.user.not.found.message`)}}});if(r.error)return r;if(u.formatBoolean(r.data.invitation_accepted))return{error:{type:`basic`,status:400,name:e(`server:core.auth.invitations.user.already.accepted.name`),message:e(`server:core.auth.invitations.user.already.accepted.message`)},data:void 0};y=n.data.id}let b=d(),x=await g.createSingle({data:{state:b,provider_key:m.providerKey,invitation_token_id:y,invitation_token:m.actionType===t.authState.actionTypes.invitation?m.invitationToken:void 0,action_type:m.actionType,authenticated_user_id:m.authenticatedUserId,expiry_date:f(new Date,t.authState.ttl).toISOString(),redirect_path:m.redirectPath}});if(x.error)return x;let S=c(v);if(S.error)return S;let C=await S.data.getAuthUrl({redirectUri:l(n(p),m.providerKey),state:b});return C.error?C:{error:void 0,data:{redirectUrl:C.data}}};export{p as default};
//# sourceMappingURL=initiate.mjs.map