mirror of
https://github.com/steveiliop56/tinyauth.git
synced 2025-10-28 20:55:42 +00:00
fix: handle type string for oauth groups
This commit is contained in:
@@ -2,10 +2,10 @@ package constants
|
|||||||
|
|
||||||
// Claims are the OIDC supported claims (prefered username is included for convinience)
|
// Claims are the OIDC supported claims (prefered username is included for convinience)
|
||||||
type Claims struct {
|
type Claims struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
PreferredUsername string `json:"preferred_username"`
|
PreferredUsername string `json:"preferred_username"`
|
||||||
Groups []string `json:"groups"`
|
Groups any `json:"groups"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Version information
|
// Version information
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ func (h *Handlers) OAuthCallbackHandler(c *gin.Context) {
|
|||||||
Name: name,
|
Name: name,
|
||||||
Email: user.Email,
|
Email: user.Email,
|
||||||
Provider: providerName.Provider,
|
Provider: providerName.Provider,
|
||||||
OAuthGroups: strings.Join(user.Groups, ","),
|
OAuthGroups: utils.CoalesceToString(user.Groups),
|
||||||
})
|
})
|
||||||
|
|
||||||
// Check if we have a redirect URI
|
// Check if we have a redirect URI
|
||||||
|
|||||||
@@ -327,3 +327,15 @@ func DeriveKey(secret string, info string) (string, error) {
|
|||||||
encodedKey := base64.StdEncoding.EncodeToString(key)
|
encodedKey := base64.StdEncoding.EncodeToString(key)
|
||||||
return encodedKey, nil
|
return encodedKey, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CoalesceToString(value any) string {
|
||||||
|
switch v := value.(type) {
|
||||||
|
case []string:
|
||||||
|
return strings.Join(v, ",")
|
||||||
|
case string:
|
||||||
|
return v
|
||||||
|
default:
|
||||||
|
log.Warn().Interface("value", value).Msg("Unsupported type, returning empty string")
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -511,3 +511,38 @@ func TestDeriveKey(t *testing.T) {
|
|||||||
t.Fatalf("Expected %v, got %v", expected, result)
|
t.Fatalf("Expected %v, got %v", expected, result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCoalesceToString(t *testing.T) {
|
||||||
|
t.Log("Testing coalesce to string with a string")
|
||||||
|
|
||||||
|
value := "test"
|
||||||
|
expected := "test"
|
||||||
|
|
||||||
|
result := utils.CoalesceToString(value)
|
||||||
|
|
||||||
|
if result != expected {
|
||||||
|
t.Fatalf("Expected %v, got %v", expected, result)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Log("Testing coalesce to string with a slice of strings")
|
||||||
|
|
||||||
|
valueSlice := []string{"test1", "test2"}
|
||||||
|
expected = "test1,test2"
|
||||||
|
|
||||||
|
result = utils.CoalesceToString(valueSlice)
|
||||||
|
|
||||||
|
if result != expected {
|
||||||
|
t.Fatalf("Expected %v, got %v", expected, result)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Log("Testing coalesce to string with an unsupported type")
|
||||||
|
|
||||||
|
valueUnsupported := 12345
|
||||||
|
expected = ""
|
||||||
|
|
||||||
|
result = utils.CoalesceToString(valueUnsupported)
|
||||||
|
|
||||||
|
if result != expected {
|
||||||
|
t.Fatalf("Expected %v, got %v", expected, result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user