fix(openid): Merge VikunjaGroups and ExtraSettingsLinks from userinfo

When `forceuserinfo: true`, `mergeClaims` discards `vikunja_groups`
and `extra_settings_links` claims fetched from the userinfo endpoint,
failing team sync for opaque tokens.

Fixes team sync for OIDC providers using opaque tokens.
This commit is contained in:
MidoriKurage
2026-03-23 12:31:15 +08:00
committed by kolaente
parent 4dd18e379e
commit 68a74416a4

View File

@@ -397,6 +397,14 @@ func mergeClaims(cl *claims, cl2 *claims, forceUserInfo bool) error {
cl.Picture = cl2.Picture
}
if (forceUserInfo && len(cl2.VikunjaGroups) > 0) || len(cl.VikunjaGroups) == 0 {
cl.VikunjaGroups = cl2.VikunjaGroups
}
if (forceUserInfo && len(cl2.ExtraSettingsLinks) > 0) || len(cl.ExtraSettingsLinks) == 0 {
cl.ExtraSettingsLinks = cl2.ExtraSettingsLinks
}
if cl.Email == "" {
return &user.ErrNoOpenIDEmailProvided{}
}