From 3354bbd16bb4a6b0b5ebf10fe5425bd7ff26200d Mon Sep 17 00:00:00 2001 From: Bryan Frimin Date: Wed, 11 Mar 2026 11:33:12 +0100 Subject: [PATCH] Fix mapping google workspace Signed-off-by: Bryan Frimin --- pkg/iam/scim/bridge/client/client.go | 4 ++++ .../scim/bridge/provider/googleworkspace/provider.go | 11 ++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pkg/iam/scim/bridge/client/client.go b/pkg/iam/scim/bridge/client/client.go index 33b828b41..d727b6826 100644 --- a/pkg/iam/scim/bridge/client/client.go +++ b/pkg/iam/scim/bridge/client/client.go @@ -46,6 +46,7 @@ type ( EnterpriseOrganization string `json:"-"` Division string `json:"-"` EmployeeNumber string `json:"-"` + UserType string `json:"-"` ManagerValue string `json:"-"` PreferredLanguage string `json:"-"` } @@ -229,6 +230,9 @@ func buildUserPayload(user *User) map[string]any { if user.ExternalID != "" { payload["externalId"] = user.ExternalID } + if user.UserType != "" { + payload["userType"] = user.UserType + } if user.PreferredLanguage != "" { payload["preferredLanguage"] = user.PreferredLanguage } diff --git a/pkg/iam/scim/bridge/provider/googleworkspace/provider.go b/pkg/iam/scim/bridge/provider/googleworkspace/provider.go index ff0926a06..26c573e63 100644 --- a/pkg/iam/scim/bridge/provider/googleworkspace/provider.go +++ b/pkg/iam/scim/bridge/provider/googleworkspace/provider.go @@ -89,10 +89,11 @@ func (p *Provider) ListUsers(ctx context.Context) (scimclient.Users, error) { GivenName: u.Name.GivenName, FamilyName: u.Name.FamilyName, Active: !u.Suspended && !u.Archived, + ExternalID: u.Id, } p.extractOrganizationFields(u.Organizations, &user) - p.extractExternalID(u.ExternalIds, &user) + p.extractEmployeeNumber(u.ExternalIds, &user) p.extractRelations(u.Relations, &user) p.extractPreferredLanguage(u.Languages, &user) @@ -147,10 +148,10 @@ func (p *Provider) extractOrganizationFields(raw interface{}, user *scimclient.U user.Department = org.Department user.CostCenter = org.CostCenter user.EnterpriseOrganization = org.Name - user.Division = org.Description + user.UserType = org.Description } -func (p *Provider) extractExternalID(raw interface{}, user *scimclient.User) { +func (p *Provider) extractEmployeeNumber(raw interface{}, user *scimclient.User) { if raw == nil { return } @@ -167,13 +168,13 @@ func (p *Provider) extractExternalID(raw interface{}, user *scimclient.User) { for _, id := range ids { if id.Type == "organization" && id.Value != "" { - user.ExternalID = id.Value + user.EmployeeNumber = id.Value return } } if len(ids) > 0 && ids[0].Value != "" { - user.ExternalID = ids[0].Value + user.EmployeeNumber = ids[0].Value } }