fix: use the userinfo endpoint for oidc
This commit is contained in:
parent
d9314887fb
commit
5f6460f42f
@ -126,15 +126,40 @@ export async function finishAuthFlow(oidc: OidcConfig, options: FlowOptions) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
subject: claims.sub,
|
subject: user.sub,
|
||||||
name: claims.name ? String(claims.name) : 'Anonymous',
|
name: getName(user, claims),
|
||||||
email: claims.email ? String(claims.email) : undefined,
|
email: user.email ?? claims.email?.toString(),
|
||||||
username: claims.preferred_username
|
username: user.preferred_username ?? claims.preferred_username?.toString(),
|
||||||
? String(claims.preferred_username)
|
|
||||||
: undefined,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getName(user: client.UserInfoResponse, claims: client.IDToken) {
|
||||||
|
if (user.name) {
|
||||||
|
return user.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (claims.name && typeof claims.name === 'string') {
|
||||||
|
return claims.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user.given_name && user.family_name) {
|
||||||
|
return `${user.given_name} ${user.family_name}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user.preferred_username) {
|
||||||
|
return user.preferred_username;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
claims.preferred_username &&
|
||||||
|
typeof claims.preferred_username === 'string'
|
||||||
|
) {
|
||||||
|
return claims.preferred_username;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'Anonymous';
|
||||||
|
}
|
||||||
|
|
||||||
export function formatError(error: unknown) {
|
export function formatError(error: unknown) {
|
||||||
if (error instanceof client.ResponseBodyError) {
|
if (error instanceof client.ResponseBodyError) {
|
||||||
return {
|
return {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user