/
user.go
63 lines (53 loc) · 1.87 KB
/
user.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package graph
import (
"context"
"fmt"
"github.com/Azure/azure-sdk-for-go/services/graphrbac/1.6/graphrbac"
)
func UserGetByObjectId(client *graphrbac.UsersClient, ctx context.Context, objectId string) (*graphrbac.User, error) {
filter := fmt.Sprintf("objectId eq '%s'", objectId)
resp, err := client.ListComplete(ctx, filter, "")
if err != nil {
return nil, fmt.Errorf("Error listing Azure AD Users for filter %q: %+v", filter, err)
}
values := resp.Response().Value
if values == nil {
return nil, fmt.Errorf("nil values for AD Users matching %q", filter)
}
if len(*values) == 0 {
return nil, fmt.Errorf("Found no AD Users matching %q", filter)
}
if len(*values) > 2 {
return nil, fmt.Errorf("Found multiple AD Users matching %q", filter)
}
user := (*values)[0]
if user.DisplayName == nil {
return nil, fmt.Errorf("nil DisplayName for AD Users matching %q", filter)
}
if *user.ObjectID != objectId {
return nil, fmt.Errorf("objectID for AD Users matching %q does is does not match(%q!=%q)", filter, *user.ObjectID, objectId)
}
return &user, nil
}
func UserGetByMailNickname(client *graphrbac.UsersClient, ctx context.Context, mailNickname string) (*graphrbac.User, error) {
filter := fmt.Sprintf("mailNickname eq '%s'", mailNickname)
resp, err := client.ListComplete(ctx, filter, "")
if err != nil {
return nil, fmt.Errorf("Error listing Azure AD Users for filter %q: %+v", filter, err)
}
values := resp.Response().Value
if values == nil {
return nil, fmt.Errorf("nil values for AD Users matching %q", filter)
}
if len(*values) == 0 {
return nil, fmt.Errorf("Found no AD Users matching %q", filter)
}
if len(*values) > 2 {
return nil, fmt.Errorf("Found multiple AD Users matching %q", filter)
}
user := (*values)[0]
if user.DisplayName == nil {
return nil, fmt.Errorf("nil DisplayName for AD Users matching %q", filter)
}
return &user, nil
}