Update /users role response to omit users

pull/960/head
Chris Goller 2017-03-02 18:24:14 -06:00
parent c2b56a8403
commit efdecf3e06
1 changed files with 26 additions and 4 deletions
server

View File

@ -58,10 +58,27 @@ type sourceUser struct {
type enterpriseSourceUser struct {
Username string `json:"name"` // Username for new account
Permissions chronograf.Permissions `json:"permissions"` // Account's permissions
Roles []roleResponse `json:"roles"` // Roles if source uses them
Roles []userRoleResponse `json:"roles"` // Roles if source uses them
Links selfLinks `json:"links"` // Links are URI locations related to user
}
type userRoleResponse struct {
Name string `json:"name"`
Permissions chronograf.Permissions `json:"permissions"`
Links selfLinks `json:"links"`
}
func newUserRoleResponse(srcID int, res *chronograf.Role) userRoleResponse {
if res.Permissions == nil {
res.Permissions = make(chronograf.Permissions, 0)
}
return userRoleResponse{
Name: res.Name,
Permissions: res.Permissions,
Links: newSelfLinks(srcID, "roles", res.Name),
}
}
type selfLinks struct {
Self string `json:"self"` // Self link mapping to this resource
}
@ -73,17 +90,21 @@ func sourceUserResponse(u *chronograf.User, srcID int, hasRoles bool) interface{
if len(perms) == 0 {
perms = make([]chronograf.Permission, 0)
}
// If the source supports roles, we return all
// associated with this user
if hasRoles {
res := enterpriseSourceUser{
Username: u.Name,
Permissions: perms,
Roles: make([]roleResponse, 0),
Roles: make([]userRoleResponse, 0),
Links: newSelfLinks(srcID, "users", u.Name),
}
if len(u.Roles) > 0 {
rr := make([]roleResponse, len(u.Roles))
rr := make([]userRoleResponse, len(u.Roles))
for i, role := range u.Roles {
rr[i] = newRoleResponse(srcID, &role)
rr[i] = newUserRoleResponse(srcID, &role)
}
res.Roles = rr
}
@ -97,6 +118,7 @@ func sourceUserResponse(u *chronograf.User, srcID int, hasRoles bool) interface{
}
return &res
}
func newSelfLinks(id int, parent, resource string) selfLinks {
httpAPISrcs := "/chronograf/v1/sources"
u := &url.URL{Path: resource}