diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-02-03 15:17:34 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-03 15:17:34 -0500 |
commit | 7ff2aef7facdeb025a1651ef411fceb3d81932c1 (patch) | |
tree | 7ea2f7b89e4b4c1acf3ca021377b0166089ba397 /model | |
parent | 948b557453550646ad3213cb4144055eb7db0d69 (diff) | |
download | chat-7ff2aef7facdeb025a1651ef411fceb3d81932c1.tar.gz chat-7ff2aef7facdeb025a1651ef411fceb3d81932c1.tar.bz2 chat-7ff2aef7facdeb025a1651ef411fceb3d81932c1.zip |
Implement GET /users endpoint for APIv4 (#5277)
Diffstat (limited to 'model')
-rw-r--r-- | model/authorization.go | 7 | ||||
-rw-r--r-- | model/client4.go | 44 |
2 files changed, 51 insertions, 0 deletions
diff --git a/model/authorization.go b/model/authorization.go index 56bb58913..ed38bf9b7 100644 --- a/model/authorization.go +++ b/model/authorization.go @@ -54,6 +54,7 @@ var PERMISSION_REMOVE_USER_FROM_TEAM *Permission var PERMISSION_CREATE_TEAM *Permission var PERMISSION_MANAGE_TEAM *Permission var PERMISSION_IMPORT_TEAM *Permission +var PERMISSION_VIEW_TEAM *Permission // General permission that encompases all system admin functions // in the future this could be broken up to allow access to some @@ -268,6 +269,11 @@ func InitalizePermissions() { "authentication.permissions.import_team.name", "authentication.permissions.import_team.description", } + PERMISSION_VIEW_TEAM = &Permission{ + "view_team", + "authentication.permissions.view_team.name", + "authentication.permissions.view_team.description", + } } func InitalizeRoles() { @@ -314,6 +320,7 @@ func InitalizeRoles() { []string{ PERMISSION_LIST_TEAM_CHANNELS.Id, PERMISSION_JOIN_PUBLIC_CHANNELS.Id, + PERMISSION_VIEW_TEAM.Id, }, } BuiltInRoles[ROLE_TEAM_USER.Id] = ROLE_TEAM_USER diff --git a/model/client4.go b/model/client4.go index 6ea0398d0..e189257d2 100644 --- a/model/client4.go +++ b/model/client4.go @@ -210,6 +210,50 @@ func (c *Client4) GetUser(userId, etag string) (*User, *Response) { } } +// GetUsers returns a page of users on the system. Page counting starts at 0. +func (c *Client4) GetUsers(page int, perPage int, etag string) ([]*User, *Response) { + query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage) + if r, err := c.DoApiGet(c.GetUsersRoute()+query, etag); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return UserListFromJson(r.Body), BuildResponse(r) + } +} + +// GetUsersInTeam returns a page of users on a team. Page counting starts at 0. +func (c *Client4) GetUsersInTeam(teamId string, page int, perPage int, etag string) ([]*User, *Response) { + query := fmt.Sprintf("?in_team=%v&page=%v&per_page=%v", teamId, page, perPage) + if r, err := c.DoApiGet(c.GetUsersRoute()+query, etag); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return UserListFromJson(r.Body), BuildResponse(r) + } +} + +// GetUsersInChannel returns a page of users on a team. Page counting starts at 0. +func (c *Client4) GetUsersInChannel(channelId string, page int, perPage int, etag string) ([]*User, *Response) { + query := fmt.Sprintf("?in_channel=%v&page=%v&per_page=%v", channelId, page, perPage) + if r, err := c.DoApiGet(c.GetUsersRoute()+query, etag); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return UserListFromJson(r.Body), BuildResponse(r) + } +} + +// GetUsersNotInChannel returns a page of users on a team. Page counting starts at 0. +func (c *Client4) GetUsersNotInChannel(teamId, channelId string, page int, perPage int, etag string) ([]*User, *Response) { + query := fmt.Sprintf("?in_team=%v¬_in_channel=%v&page=%v&per_page=%v", teamId, channelId, page, perPage) + if r, err := c.DoApiGet(c.GetUsersRoute()+query, etag); err != nil { + return nil, &Response{StatusCode: r.StatusCode, Error: err} + } else { + defer closeBody(r) + return UserListFromJson(r.Body), BuildResponse(r) + } +} + // GetUsersByIds returns a list of users based on the provided user ids. func (c *Client4) GetUsersByIds(userIds []string) ([]*User, *Response) { if r, err := c.DoApiPost(c.GetUsersRoute()+"/ids", ArrayToJson(userIds)); err != nil { |