UNPKG

@lucidcms/core

Version:

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

2 lines 5.55 kB
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/user-auth-providers.mjs";import i from"../../../../libs/repositories/user-tokens.mjs";import a from"../../../../libs/repositories/users.mjs";import o from"../../../../utils/helpers/url-add-path.mjs";import s from"../../../../libs/formatters/index.mjs";const c=async(c,l)=>{let u=new r(c.db.client,c.config.db),d=new i(c.db.client,c.config.db),f=new a(c.db.client,c.config.db),p=o(n(c),l.redirectPath??t.authState.defaultRedirectPath);if(l.actionType===t.authState.actionTypes.invitation&&l.invitationTokenId){let[n,r]=await Promise.all([d.selectUserInvitation({id:l.invitationTokenId,validation:{enabled:!0,defaultError:{status:404,message:e(`server:core.auth.invitations.token.not.found.message`)}}}),u.selectSingle({select:[`user_id`],where:[{key:`provider_key`,operator:`=`,value:l.providerKey},{key:`provider_user_id`,operator:`=`,value:l.providerUserId}]})]);if(n.error)return n;if(r.error)return r;if(s.formatBoolean(n.data.user_is_deleted))return{error:{status:400,name:e(`server:core.auth.providers.user.is.deleted.name`),message:e(`server:core.auth.providers.user.is.deleted.message`)}};if(s.formatBoolean(n.data.user_is_locked))return{error:{status:401,name:e(`server:core.auth.providers.user.is.locked.name`),message:e(`server:core.auth.providers.user.is.locked.message`)}};if(s.formatBoolean(n.data.user_invitation_accepted))return{error:{status:400,name:e(`server:core.auth.providers.user.invitation.accepted.message`),message:e(`server:core.auth.providers.user.invitation.accepted.message`)}};if(r.data&&n.data.user_id!==r.data.user_id)return{error:{status:400,name:e(`server:core.auth.providers.user.id.mismatch.name`),message:e(`server:core.auth.providers.user.id.mismatch.message`)}};let i=new Date().toISOString(),a=await d.updateSingle({data:{consumed_at:i,revoked_at:i,revoke_reason:t.userTokenRevokeReasons.invitationAccepted,expiry_date:i},where:[{key:`id`,operator:`=`,value:l.invitationTokenId},{key:`token_type`,operator:`=`,value:t.userTokens.invitation},{key:`expiry_date`,operator:`>`,value:i},{key:`revoked_at`,operator:`is`,value:null},{key:`consumed_at`,operator:`is`,value:null}],returning:[`id`]});if(a.error)return a;if(!a.data)return{error:{status:404,message:e(`server:core.auth.invitations.token.not.found.message`)},data:void 0};let[o,c]=await Promise.all([r.data?void 0:u.createSingle({data:{user_id:n.data.user_id,provider_key:l.providerKey,provider_user_id:l.providerUserId,linked_at:new Date().toISOString(),updated_at:new Date().toISOString()}}),f.updateSingle({where:[{key:`id`,operator:`=`,value:n.data.user_id}],data:{first_name:n.data.user_first_name?void 0:l.firstName,last_name:n.data.user_last_name?void 0:l.lastName,invitation_accepted:!0,updated_at:new Date().toISOString()}})]);return o?.error?o:c.error?c:{error:void 0,data:{userId:n.data.user_id,redirectUrl:p,grantAuthentication:!0}}}if(l.actionType===t.authState.actionTypes.authLink){if(!l.authenticatedUserId)return{error:{status:401,name:e(`server:core.auth.providers.link.user.not.authenticated.message`),message:e(`server:core.auth.providers.link.user.not.authenticated.message`)},data:void 0};let t=await u.selectUserAuthProvider({providerKey:l.providerKey,providerUserId:l.providerUserId});if(t.error)return t;if(t.data&&s.formatBoolean(t.data.user_is_deleted))return{error:{status:404,name:e(`server:core.auth.providers.user.is.deleted.name`),message:e(`server:core.auth.providers.user.is.deleted.message`)},data:void 0};if(t.data&&s.formatBoolean(t.data.user_is_locked))return{error:{status:401,name:e(`server:core.auth.providers.user.is.locked.name`),message:e(`server:core.auth.providers.user.is.locked.message`)},data:void 0};if(t.data&&t.data.user_id!==l.authenticatedUserId)return{error:{status:400,name:e(`server:core.auth.providers.user.id.mismatch.name`),message:e(`server:core.auth.providers.user.id.mismatch.message`)},data:void 0};if(t.data&&t.data.user_id===l.authenticatedUserId)return{error:{status:400,name:e(`server:core.auth.providers.already.linked.name`),message:e(`server:core.auth.providers.already.linked.message`)},data:void 0};let[n,r]=await Promise.all([u.createSingle({data:{user_id:l.authenticatedUserId,provider_key:l.providerKey,provider_user_id:l.providerUserId,linked_at:new Date().toISOString(),updated_at:new Date().toISOString()}}),f.updateSingle({where:[{key:`id`,operator:`=`,value:l.authenticatedUserId}],data:{updated_at:new Date().toISOString()}})]);return n.error?n:r.error?r:{error:void 0,data:{userId:l.authenticatedUserId,redirectUrl:p,grantAuthentication:!1}}}let m=await u.selectUserAuthProvider({providerKey:l.providerKey,providerUserId:l.providerUserId,validation:{enabled:!0,defaultError:{status:404,name:e(`server:core.auth.providers.user.not.found.name`),message:e(`server:core.auth.providers.user.not.found.message`)}}});return m.error?m:s.formatBoolean(m.data.user_is_deleted)?{error:{status:404,name:e(`server:core.auth.providers.user.is.deleted.name`),message:e(`server:core.auth.providers.user.is.deleted.message`)},data:void 0}:s.formatBoolean(m.data.user_is_locked)?{error:{status:401,name:e(`server:core.auth.providers.user.is.locked.name`),message:e(`server:core.auth.providers.user.is.locked.message`)},data:void 0}:{error:void 0,data:{userId:m.data.user_id,redirectUrl:p,grantAuthentication:!0}}};export{c as default}; //# sourceMappingURL=process-provider-auth.mjs.map