3
0

Client returns array of roles on auth

This commit is contained in:
Peter Grlica 2023-03-21 12:54:03 +01:00
parent 89423c60b0
commit 9759e84a04
No known key found for this signature in database
2 changed files with 34 additions and 1 deletions

View File

@ -502,8 +502,9 @@ func (h AuthHandlers) oauth2PublicKeys(w http.ResponseWriter, r *http.Request) {
func SubSplit(ti oauth2def.TokenInfo, data map[string]interface{}) {
userIdWithRoles := strings.SplitN(ti.GetUserID(), " ", 2)
data["sub"] = userIdWithRoles[0]
if len(userIdWithRoles) > 1 {
data["roles"] = userIdWithRoles[1]
data["roles"] = strings.Split(userIdWithRoles[1], " ")
}
}

View File

@ -146,3 +146,35 @@ func Test_generateIdToken(t *testing.T) {
req.NoError(err)
req.NotEmpty(signed)
}
func Test_SubSplitRoles(t *testing.T) {
type (
exp struct {
id string
i string
ii []string
}
)
var (
req = require.New(t)
ti = &oauth2models.Token{}
d = make(map[string]interface{})
tii = []exp{
{id: "1", i: "1", ii: []string{}},
{id: "1 2", i: "1", ii: []string{"2"}},
{id: "1 2 33 444", i: "1", ii: []string{"2", "33", "444"}},
}
)
for _, v := range tii {
ti.SetUserID(v.id)
SubSplit(ti, d)
req.Equal(v.i, d["sub"])
if _, is := d["roles"]; is {
req.Equal(v.ii, d["roles"])
}
}
}