UNPKG

@lucidcms/core

Version:

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

2 lines 1.66 kB
import e from"../../../constants/constants.mjs";import t from"../../../libs/repositories/user-tokens.mjs";import n from"../../../libs/kv/cache-keys.mjs";import r from"../../../utils/helpers/hash-user-token.mjs";import i from"../../../libs/http/utils/create-service-context.mjs";import a from"./clear-token.mjs";import o from"../../../utils/helpers/is-request-secure.mjs";import{randomBytes as s}from"node:crypto";import{getCookie as c,setCookie as l}from"hono/cookie";import{sign as u}from"hono/jwt";const d=async(d,f)=>{let p=c(d,e.cookies.refreshToken),m=await a(d,{revokeReason:e.refreshTokenRevokeReasons.rotated,consume:!0});if(m.error)return m;let h=d.get(`config`),g=new t(d.get(`database`).client,h.db),_=Date.now(),v=s(8).toString(`hex`),y=await u({id:f,exp:Math.floor(_/1e3)+e.refreshTokenExpiration,iat:Math.floor(_/1e3),nonce:v},h.secrets.refreshToken,e.jwt.algorithm),b=r(y),x=await g.createSingle({data:{user_id:f,token:b,token_type:e.userTokens.refresh,expiry_date:new Date(Date.now()+e.refreshTokenExpiration*1e3).toISOString()},returning:[`id`],validation:{enabled:!0}});if(x.error)return x;if(p){let t=r(p),n=await g.updateMultiple({data:{replaced_by_token_id:x.data.id},where:[{key:`token`,operator:`=`,value:t},{key:`token_type`,operator:`=`,value:e.userTokens.refresh}]});if(n.error)return n}l(d,e.cookies.refreshToken,y,{maxAge:e.refreshTokenExpiration,httpOnly:!0,secure:o(d),sameSite:`strict`,path:`/`});let S=i(d);return await S.kv.set(S,{key:n.auth.refresh(y),value:{user_id:f},expirationTtl:e.refreshTokenExpiration,hash:!0}),{error:void 0,data:{tokenId:x.data.id}}};export{d as default}; //# sourceMappingURL=generate-token.mjs.map