internal/auth/claims.go
Rama main · réplica de lectura del repositorio original.
package auth
import (
"slices"
"strings"
)
func usernameFrom(claims claimSet, keys []string) string {
for _, key := range keys {
text, ok := claims[key].(string)
if ok && text != "" {
return text
}
}
return ""
}
func groupsFrom(claims claimSet, key string) []string {
held, present := claims[key]
if !present {
return nil
}
switch value := held.(type) {
case string:
return ParseList(value)
case []string:
return slices.Clone(value)
case []any:
return stringsIn(value)
default:
return nil
}
}
func stringsIn(values []any) []string {
out := make([]string, 0, len(values))
for _, one := range values {
text, ok := one.(string)
if !ok {
continue
}
trimmed := strings.TrimSpace(text)
if trimmed == "" {
continue
}
out = append(out, trimmed)
}
return out
}
func prefixed(values []string, prefix string) []string {
if prefix == "" {
return values
}
out := make([]string, 0, len(values))
for _, one := range values {
out = append(out, prefix+one)
}
return out
}
func sessionIDFrom(claims claimSet) string {
held, ok := claims["sid"].(string)
if ok && held != "" {
return held
}
return newSessionID()
}