@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 3.34 kB
JavaScript
import{copy as e}from"../../../../i18n/copy.mjs";import t from"../../../../../constants/constants.mjs";import n from"../../../../repositories/auth-states.mjs";import r from"../../../../../services/auth/access-token/generate-token.mjs";import i from"../../../../../utils/helpers/url-add-path.mjs";import a from"../../../../../services/auth/providers/error-redirect-url.mjs";import o from"../../../../../services/auth/providers/oidc-callback.mjs";import s from"../../../utils/create-service-context.mjs";import c from"../../../../../services/auth/refresh-token/generate-token.mjs";import l from"../../../../../utils/services/service-wrapper.mjs";import u from"../../../../../services/user-logins/create-single.mjs";import d from"../../../middleware/rate-limiter.mjs";import f from"../../../middleware/validate.mjs";import p from"../../../openapi/index.mjs";import{controllerSchemas as m}from"../../../../../schemas/auth.mjs";import h from"../../../utils/build-error-url.mjs";import g from"../../../utils/get-request-base-url.mjs";import{minutesToMilliseconds as _}from"date-fns";import{createFactory as v}from"hono/factory";import{describeRoute as y}from"hono-openapi";const b=v().createHandlers(y({description:`Handle OAuth callback from authentication provider.`,tags:[`auth`],summary:`OIDC Provider Authentication Callback`,responses:p.responses(),parameters:p.parameters({params:m.providerOIDCCallback.params,query:m.providerOIDCCallback.query.string})}),d({mode:`ip`,limit:t.rateLimit.scopes.sensitive.limit,scope:t.rateLimit.scopes.sensitive.scopeKey,windowMs:_(1)}),f(`param`,m.providerOIDCCallback.params),f(`query`,m.providerOIDCCallback.query.string),async d=>{let{providerKey:f}=d.req.valid(`param`),{code:p,state:m}=d.req.valid(`query`),_=s(d),v=new n(_.db.client,_.config.db),y=async()=>{await v.updateMultiple({data:{invitation_token:null},where:[{key:`state`,operator:`=`,value:m},{key:`provider_key`,operator:`=`,value:f}]})},b=await l(a,{transaction:!1,defaultError:{type:`basic`,name:e(`server:core.routes.callback.auth.error.name`),message:e(`server:core.routes.callback.auth.error.message`)}})(_,{providerKey:f,state:m});if(b.error){let e=i(g(d),t.authState.defaultRedirectPath);return await y(),d.redirect(h(e,b.error,_.translate))}let x=await l(o,{transaction:!0,defaultError:{type:`basic`,name:e(`server:core.routes.callback.auth.error.name`),message:e(`server:core.routes.callback.auth.error.message`)}})(_,{providerKey:f,code:p,state:m});if(x.error)return await y(),d.redirect(h(b.data.redirectUrl,x.error,_.translate));if(x.data.grantAuthentication){let[t,n]=await Promise.all([c(d,x.data.userId),r(d,x.data.userId)]);if(t.error)return await y(),d.redirect(h(b.data.redirectUrl,t.error,_.translate));if(n.error)return await y(),d.redirect(h(b.data.redirectUrl,n.error,_.translate));let i=d.get(`runtimeContext`).getConnectionInfo(d),a=d.req.header(`user-agent`)||null,o=await l(u,{transaction:!1,defaultError:{type:`basic`,name:e(`server:core.routes.login.error.name`),message:e(`server:core.routes.login.error.message`)}})(_,{userId:x.data.userId,tokenId:t.data.tokenId,authMethod:f,ipAddress:i.address??null,userAgent:a});if(o.error)return await y(),d.redirect(h(b.data.redirectUrl,o.error,_.translate))}return await y(),d.redirect(x.data.redirectUrl)});export{b as default};
//# sourceMappingURL=oidc-callback.mjs.map