@lucidcms/core
Version:
The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.
2 lines • 2.23 kB
JavaScript
import{copy as e}from"../../../i18n/copy.mjs";import t from"../../../../constants/constants.mjs";import n from"../../../../utils/errors/lucid-api-error.mjs";import r from"../../../../services/auth/access-token/generate-token.mjs";import i from"../../../../services/auth/login.mjs";import a from"../../utils/create-service-context.mjs";import o from"../../../../services/auth/refresh-token/generate-token.mjs";import s from"../../../../utils/services/service-wrapper.mjs";import c from"../../../../services/user-logins/create-single.mjs";import l from"../../middleware/rate-limiter.mjs";import u from"../../middleware/validate.mjs";import d from"../../middleware/validate-csrf.mjs";import f from"../../openapi/index.mjs";import{controllerSchemas as p}from"../../../../schemas/auth.mjs";import{minutesToMilliseconds as m}from"date-fns";import{createFactory as h}from"hono/factory";import{describeRoute as g}from"hono-openapi";const _=h().createHandlers(g({description:`Authenticates a user and sets a refresh and access token as httpOnly cookies.`,tags:[`auth`],summary:`Login`,responses:f.responses(),parameters:f.parameters({headers:{csrf:!0}}),requestBody:f.requestBody(p.login.body)}),d,l({mode:`ip`,limit:t.rateLimit.scopes.sensitive.limit,scope:t.rateLimit.scopes.sensitive.scopeKey,windowMs:m(1)}),u(`json`,p.login.body),async t=>{let{usernameOrEmail:l,password:u}=t.req.valid(`json`),d=a(t),f=await s(i,{transaction:!1,defaultError:{type:`basic`,code:`login`,name:e(`server:core.routes.login.error.name`),message:e(`server:core.routes.login.error.message`)}})(d,{usernameOrEmail:l,password:u});if(f.error)throw new n(f.error);let[p,m]=await Promise.all([o(t,f.data.id),r(t,f.data.id)]);if(p.error)throw new n(p.error);if(m.error)throw new n(m.error);let h=t.get(`runtimeContext`).getConnectionInfo(t),g=t.req.header(`user-agent`)||null,_=await s(c,{transaction:!1,defaultError:{type:`basic`,name:e(`server:core.routes.login.error.name`),message:e(`server:core.routes.login.error.message`)}})(d,{userId:f.data.id,tokenId:p.data.tokenId,authMethod:`password`,ipAddress:h.address??null,userAgent:g});if(_.error)throw new n(_.error);return t.status(204),t.body(null)});export{_ as default};
//# sourceMappingURL=login.mjs.map