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.48 kB
import{copy as e}from"../../libs/i18n/copy.mjs";import t from"../../constants/constants.mjs";import{decrypt as n}from"../../utils/helpers/encrypt-decrypt.mjs";import r from"../../libs/repositories/client-integrations.mjs";import{decodeApiKey as i}from"../../utils/client-integrations/encode-api-key.mjs";import a from"../../libs/formatters/index.mjs";import{timingSafeEqual as o}from"node:crypto";import{scrypt as s}from"@noble/hashes/scrypt.js";const c=async(c,l)=>{let u=new r(c.db.client,c.config.db),{key:d,apiKey:f}=i(l.apiKey);if(!f)return{error:{message:e(`server:core.client.integrations.api.key.missing`)},data:void 0};if(!d)return{error:{message:e(`server:core.client.integrations.key.missing`)},data:void 0};let p=await u.selectSingleByKeyWithScopes({key:d,validation:{enabled:!0,defaultError:{message:e(`server:core.client.integrations.not.found`)}}});if(p.error)return p;if(!a.formatBoolean(p.data.enabled))return{error:{message:e(`server:core.client.integrations.disabled`)},data:void 0};let m=n(p.data.secret,c.config.secrets.encryption),h=Buffer.from(s(f,m,t.scrypt)).toString(`base64`),g=Buffer.from(h,`utf8`),_=Buffer.from(p.data.api_key,`utf8`);return(g.length===_.length&&o(g,_))===!1?{error:{message:e(`server:core.client.integrations.api.key.invalid`)},data:void 0}:{error:void 0,data:{id:p.data.id,key:p.data.key,scopes:(p.data.scopes||[]).map(e=>e.scope),tenantKey:p.data.tenant_key??null}}};export{c as default}; //# sourceMappingURL=verify-api-key.mjs.map