mirror of
https://github.com/pomerium/pomerium.git
synced 2025-08-06 10:21:05 +02:00
internal/directory/okta: store directory information by user id (#991)
Same as #988
This commit is contained in:
parent
a042bb7b82
commit
1e3c381e1e
1 changed files with 9 additions and 12 deletions
|
@ -101,22 +101,22 @@ func (p *Provider) UserGroups(ctx context.Context) ([]*directory.User, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
userEmailToGroups := map[string][]string{}
|
userIDToGroups := map[string][]string{}
|
||||||
for groupID, groupName := range groupIDToName {
|
for groupID, groupName := range groupIDToName {
|
||||||
emails, err := p.getGroupMemberEmails(ctx, groupID)
|
ids, err := p.getGroupMemberIDs(ctx, groupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
for _, email := range emails {
|
for _, id := range ids {
|
||||||
userEmailToGroups[email] = append(userEmailToGroups[email], groupName)
|
userIDToGroups[id] = append(userIDToGroups[id], groupName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var users []*directory.User
|
var users []*directory.User
|
||||||
for userEmail, groups := range userEmailToGroups {
|
for userID, groups := range userIDToGroups {
|
||||||
sort.Strings(groups)
|
sort.Strings(groups)
|
||||||
users = append(users, &directory.User{
|
users = append(users, &directory.User{
|
||||||
Id: databroker.GetUserID(Name, userEmail),
|
Id: databroker.GetUserID(Name, userID),
|
||||||
Groups: groups,
|
Groups: groups,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ func (p *Provider) getGroups(ctx context.Context) (map[string]string, error) {
|
||||||
return groups, nil
|
return groups, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Provider) getGroupMemberEmails(ctx context.Context, groupID string) ([]string, error) {
|
func (p *Provider) getGroupMemberIDs(ctx context.Context, groupID string) ([]string, error) {
|
||||||
var emails []string
|
var emails []string
|
||||||
|
|
||||||
usersURL := p.cfg.providerURL.ResolveReference(&url.URL{
|
usersURL := p.cfg.providerURL.ResolveReference(&url.URL{
|
||||||
|
@ -164,10 +164,7 @@ func (p *Provider) getGroupMemberEmails(ctx context.Context, groupID string) ([]
|
||||||
}).String()
|
}).String()
|
||||||
for usersURL != "" {
|
for usersURL != "" {
|
||||||
var out []struct {
|
var out []struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
Profile struct {
|
|
||||||
Email string `json:"email"`
|
|
||||||
} `json:"profile"`
|
|
||||||
}
|
}
|
||||||
hdrs, err := p.apiGet(ctx, usersURL, &out)
|
hdrs, err := p.apiGet(ctx, usersURL, &out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -175,7 +172,7 @@ func (p *Provider) getGroupMemberEmails(ctx context.Context, groupID string) ([]
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, el := range out {
|
for _, el := range out {
|
||||||
emails = append(emails, el.Profile.Email)
|
emails = append(emails, el.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
usersURL = getNextLink(hdrs)
|
usersURL = getNextLink(hdrs)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue