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,
+ },
};
},
},