Update oidc-callback.ts

This commit is contained in:
Lloyd Owen
2026-03-24 11:48:20 +00:00
parent dfda629b12
commit 2e2d5d1dff
+25 -5
View File
@@ -67,9 +67,8 @@ export async function loader({ request, context }: Route.LoaderArgs) {
? `${userInfo.given_name} ${userInfo.family_name}` ? `${userInfo.given_name} ${userInfo.family_name}`
: (userInfo.preferred_username ?? "SSO User")); : (userInfo.preferred_username ?? "SSO User"));
const picture = const picture = await (async () => {
context.config.oidc?.profile_picture_source === "gravatar" if (context.config.oidc?.profile_picture_source === "gravatar") {
? (() => {
if (!userInfo.email) { if (!userInfo.email) {
return undefined; return undefined;
} }
@@ -77,8 +76,29 @@ export async function loader({ request, context }: Route.LoaderArgs) {
const emailHash = userInfo.email.trim().toLowerCase(); const emailHash = userInfo.email.trim().toLowerCase();
const hash = createHash("sha256").update(emailHash).digest("hex"); const hash = createHash("sha256").update(emailHash).digest("hex");
return `https://www.gravatar.com/avatar/${hash}?s=200&d=identicon&r=x`; return `https://www.gravatar.com/avatar/${hash}?s=200&d=identicon&r=x`;
})() }
: userInfo.picture;
if (!userInfo.picture) {
return undefined;
}
try {
const response = await fetch(userInfo.picture, {
headers: { Authorization: `Bearer ${tokens.access_token}` },
});
if (response.ok) {
const contentType = response.headers.get("content-type");
if (contentType?.startsWith("image/")) {
const buffer = await response.arrayBuffer();
const base64 = Buffer.from(buffer).toString("base64");
return `data:${contentType};base64,${base64}`;
}
}
} catch {}
return userInfo.picture;
})();
const userId = await context.auth.findOrCreateUser(claims.sub, { const userId = await context.auth.findOrCreateUser(claims.sub, {
name, name,