-
Notifications
You must be signed in to change notification settings - Fork 926
/
user.go
67 lines (53 loc) · 1.9 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
64
65
66
67
package v7action
import (
"code.cloudfoundry.org/cli/actor/actionerror"
"code.cloudfoundry.org/cli/api/cloudcontroller/ccerror"
"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
)
// User represents a CLI user.
// This means that v7action.User has the same fields as a ccv3.User
type User ccv3.User
// CreateUser creates a new user in UAA and registers it with cloud controller.
func (actor Actor) CreateUser(username string, password string, origin string) (User, Warnings, error) {
uaaUser, err := actor.UAAClient.CreateUser(username, password, origin)
if err != nil {
return User{}, nil, err
}
ccUser, ccWarnings, err := actor.CloudControllerClient.CreateUser(uaaUser.ID)
return User(ccUser), Warnings(ccWarnings), err
}
// GetUser gets a user in UAA with the given username and (if provided) origin.
// It returns an error if no matching user is found.
// It returns an error if multiple matching users are found.
func (actor Actor) GetUser(username, origin string) (User, error) {
uaaUsers, err := actor.UAAClient.ListUsers(username, origin)
if err != nil {
return User{}, err
}
if len(uaaUsers) == 0 {
return User{}, actionerror.UAAUserNotFoundError{Username: username}
}
if len(uaaUsers) > 1 {
var origins []string
for _, user := range uaaUsers {
origins = append(origins, user.Origin)
}
return User{}, actionerror.MultipleUAAUsersFoundError{Username: username, Origins: origins}
}
uaaUser := uaaUsers[0]
v7actionUser := User{
GUID: uaaUser.ID,
Origin: uaaUser.Origin,
}
return v7actionUser, nil
}
// DeleteUser
func (actor Actor) DeleteUser(userGuid string) (Warnings, error) {
ccWarnings, err := actor.CloudControllerClient.DeleteUser(userGuid)
// If there is an error that is not a ResourceNotFoundError
if _, ok := err.(ccerror.ResourceNotFoundError); !ok && err != nil {
return nil, err
}
_, err = actor.UAAClient.DeleteUser(userGuid)
return Warnings(ccWarnings), err
}