From 0a353e6e411af71513b357087947da300d7acf5d Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 13 Oct 2025 11:29:45 +0800 Subject: [PATCH] Add Yao custom fields to ID token claims - Enhanced the SignIDToken method to include additional Yao-specific fields such as tenant_id, team_id, is_owner, and team details in the token claims. - Improved the structure of claims to support team information, ensuring comprehensive metadata is included in the generated tokens. --- openapi/oauth/signing.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/openapi/oauth/signing.go b/openapi/oauth/signing.go index fb3da8d6..385ac21f 100644 --- a/openapi/oauth/signing.go +++ b/openapi/oauth/signing.go @@ -566,6 +566,42 @@ func (s *Service) SignIDToken(clientID, scope string, expiresIn int, userdata *t claims["updated_at"] = *userdata.UpdatedAt } + // Add Yao custom fields with namespace + if userdata.YaoTenantID != "" { + claims["yao:tenant_id"] = userdata.YaoTenantID + } + if userdata.YaoTeamID != "" { + claims["yao:team_id"] = userdata.YaoTeamID + } + if userdata.YaoIsOwner != nil { + claims["yao:is_owner"] = *userdata.YaoIsOwner + } + // Add Yao team info if present + if userdata.YaoTeam != nil { + teamMap := make(map[string]interface{}) + if userdata.YaoTeam.TeamID != "" { + teamMap["team_id"] = userdata.YaoTeam.TeamID + } + if userdata.YaoTeam.Logo != "" { + teamMap["logo"] = userdata.YaoTeam.Logo + } + if userdata.YaoTeam.Name != "" { + teamMap["name"] = userdata.YaoTeam.Name + } + if userdata.YaoTeam.OwnerID != "" { + teamMap["owner_id"] = userdata.YaoTeam.OwnerID + } + if userdata.YaoTeam.Description != "" { + teamMap["description"] = userdata.YaoTeam.Description + } + if userdata.YaoTeam.UpdatedAt != nil { + teamMap["updated_at"] = *userdata.YaoTeam.UpdatedAt + } + if len(teamMap) > 0 { + claims["yao:team"] = teamMap + } + } + // Add scope if provided (useful for determining which claims to include) if scope != "" { claims["scope"] = scope