Files
klz-cables.com/.pnpm-store/v10/files/6e/d1c2cca73e153e9642f1feab4f981320d449687537455a6760741ba6f275549e6b5387169adf3980208184a2172340b38360da0b62661bfda2524e973fa277
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

113 lines
3.6 KiB
Plaintext

import { jwtVerify } from 'jose';
import { extractJWT } from '../extractJWT.js';
async function autoLogin({ isGraphQL, payload, strategyName = 'local-jwt' }) {
if (typeof payload?.config?.admin?.autoLogin !== 'object' || payload.config.admin?.autoLogin.prefillOnly || !payload?.config?.admin?.autoLogin || !payload.config.admin?.autoLogin.email && !payload.config.admin?.autoLogin.username) {
return {
user: null
};
}
const collection = payload.collections[payload.config.admin.user];
const where = {
or: []
};
if (payload.config.admin?.autoLogin.email) {
where.or?.push({
email: {
equals: payload.config.admin?.autoLogin.email
}
});
} else if (payload.config.admin?.autoLogin.username) {
where.or?.push({
username: {
equals: payload.config.admin?.autoLogin.username
}
});
}
const user = (await payload.find({
collection: collection.config.slug,
depth: isGraphQL ? 0 : collection.config.auth.depth,
limit: 1,
pagination: false,
where
})).docs[0];
if (!user) {
return {
user: null
};
}
user.collection = collection.config.slug;
user._strategy = strategyName;
return {
user
};
}
/**
* Authentication strategy function for JWT tokens
*/ export const JWTAuthentication = async ({ headers, isGraphQL = false, payload, strategyName = 'local-jwt' })=>{
try {
const token = extractJWT({
headers,
payload
});
if (!token) {
if (headers.get('DisableAutologin') !== 'true') {
return await autoLogin({
isGraphQL,
payload,
strategyName
});
}
return {
user: null
};
}
const secretKey = new TextEncoder().encode(payload.secret);
const { payload: decodedPayload } = await jwtVerify(token, secretKey);
const collection = payload.collections[decodedPayload.collection];
const user = await payload.findByID({
id: decodedPayload.id,
collection: decodedPayload.collection,
depth: isGraphQL ? 0 : collection.config.auth.depth
});
if (user && (!collection.config.auth.verify || user._verified)) {
if (collection.config.auth.useSessions) {
const existingSession = (user.sessions || []).find(({ id })=>id === decodedPayload.sid);
if (!existingSession || !decodedPayload.sid) {
return {
user: null
};
}
user._sid = decodedPayload.sid;
}
user.collection = collection.config.slug;
user._strategy = strategyName;
return {
user
};
} else {
if (headers.get('DisableAutologin') !== 'true') {
return await autoLogin({
isGraphQL,
payload,
strategyName
});
}
return {
user: null
};
}
} catch (ignore) {
if (headers.get('DisableAutologin') !== 'true') {
return await autoLogin({
isGraphQL,
payload,
strategyName
});
}
return {
user: null
};
}
};
//# sourceMappingURL=jwt.js.map