diff --git a/webapps/console/components/PageLayout/WorkspacePageLayout.tsx b/webapps/console/components/PageLayout/WorkspacePageLayout.tsx index cb9a8fedb..6c15e3f8e 100644 --- a/webapps/console/components/PageLayout/WorkspacePageLayout.tsx +++ b/webapps/console/components/PageLayout/WorkspacePageLayout.tsx @@ -339,7 +339,7 @@ const UserProfileButton: React.FC<{}> = () => { trigger={["click"]} >
- {user.image && user.image.indexOf("googleusercontent.com/") < 0 ? ( + {user.image ? ( ) : ( diff --git a/webapps/console/lib/nextauth.config.ts b/webapps/console/lib/nextauth.config.ts index a853d4d75..af3cc95e2 100644 --- a/webapps/console/lib/nextauth.config.ts +++ b/webapps/console/lib/nextauth.config.ts @@ -163,6 +163,9 @@ export const nextAuthConfig: NextAuthOptions = { mustChangePassword: user.mustChangePassword, externalUsername: props.profile?.["login"], loginProvider: loginProvider, + // Propagate avatar from OIDC/GitHub profile to the JWT token. + // Google OIDC uses "picture", GitHub uses "avatar_url". + picture: props.token.picture || props.profile?.["picture"] || props.profile?.["avatar_url"], ...props.token, }; }, @@ -174,6 +177,11 @@ export const nextAuthConfig: NextAuthOptions = { loginProvider: token.loginProvider, externalId: token.externalId, externalUsername: token.externalUsername, + // Pass avatar URL to session so UI can render provider profile photos + user: { + ...session.user, + image: (token.picture as string | undefined) || session.user?.image, + }, }; }, },