mirror of
https://github.com/minio/minio.git
synced 2025-11-25 12:06:10 -05:00
fix: handle array policies in JWT claim (#10041)
PR #10014 was not complete as only handled policy claims partially.
This commit is contained in:
@@ -47,23 +47,36 @@ func GetPoliciesFromClaims(claims map[string]interface{}, policyClaimName string
|
||||
if !ok {
|
||||
return s, false
|
||||
}
|
||||
pnames, ok := pname.([]string)
|
||||
pnames, ok := pname.([]interface{})
|
||||
if !ok {
|
||||
pnameStr, ok := pname.(string)
|
||||
if ok {
|
||||
pnames = strings.Split(pnameStr, ",")
|
||||
} else {
|
||||
return s, false
|
||||
for _, pname := range strings.Split(pnameStr, ",") {
|
||||
pname = strings.TrimSpace(pname)
|
||||
if pname == "" {
|
||||
// ignore any empty strings, considerate
|
||||
// towards some user errors.
|
||||
continue
|
||||
}
|
||||
s.Add(pname)
|
||||
}
|
||||
return s, true
|
||||
}
|
||||
return s, false
|
||||
}
|
||||
for _, pname := range pnames {
|
||||
pname = strings.TrimSpace(pname)
|
||||
if pname == "" {
|
||||
// ignore any empty strings, considerate
|
||||
// towards some user errors.
|
||||
continue
|
||||
pnameStr, ok := pname.(string)
|
||||
if ok {
|
||||
for _, pnameStr := range strings.Split(pnameStr, ",") {
|
||||
pnameStr = strings.TrimSpace(pnameStr)
|
||||
if pnameStr == "" {
|
||||
// ignore any empty strings, considerate
|
||||
// towards some user errors.
|
||||
continue
|
||||
}
|
||||
s.Add(pnameStr)
|
||||
}
|
||||
}
|
||||
s.Add(pname)
|
||||
}
|
||||
return s, true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user