summaryrefslogtreecommitdiffstats
path: root/model
diff options
context:
space:
mode:
authorAdrian Carolli <adrian.caarolli@gmail.com>2018-01-11 16:30:55 -0500
committerJoram Wilander <jwawilander@gmail.com>2018-01-11 16:30:55 -0500
commitb1d13a2d897147de8290a03e624efe4000dc9aa7 (patch)
treea75464c6eb48b753c96d7210254ff6985c7e4a4c /model
parent1d9efd0e39a9663bb2fbf52b3353fe21ac3b6954 (diff)
downloadchat-b1d13a2d897147de8290a03e624efe4000dc9aa7.tar.gz
chat-b1d13a2d897147de8290a03e624efe4000dc9aa7.tar.bz2
chat-b1d13a2d897147de8290a03e624efe4000dc9aa7.zip
[PLT-7793] Add /users/tokens/search endpoint (#8088)
* Add /users/tokens/search endpoint + tests * Fix check-style * Unnecessary deletion
Diffstat (limited to 'model')
-rw-r--r--model/client4.go10
-rw-r--r--model/user_access_token_search.go35
-rw-r--r--model/user_access_token_search_test.go19
3 files changed, 64 insertions, 0 deletions
diff --git a/model/client4.go b/model/client4.go
index 3f3439ebe..88645ec74 100644
--- a/model/client4.go
+++ b/model/client4.go
@@ -1092,6 +1092,16 @@ func (c *Client4) RevokeUserAccessToken(tokenId string) (bool, *Response) {
}
}
+// SearchUserAccessTokens returns user access tokens matching the provided search term.
+func (c *Client4) SearchUserAccessTokens(search *UserAccessTokenSearch) ([]*UserAccessToken, *Response) {
+ if r, err := c.DoApiPost(c.GetUsersRoute()+"/tokens/search", search.ToJson()); err != nil {
+ return nil, BuildErrorResponse(r, err)
+ } else {
+ defer closeBody(r)
+ return UserAccessTokenListFromJson(r.Body), BuildResponse(r)
+ }
+}
+
// DisableUserAccessToken will disable a user access token by id. Must have the
// 'revoke_user_access_token' permission and if disabling for another user, must have the
// 'edit_other_users' permission.
diff --git a/model/user_access_token_search.go b/model/user_access_token_search.go
new file mode 100644
index 000000000..1b0146edb
--- /dev/null
+++ b/model/user_access_token_search.go
@@ -0,0 +1,35 @@
+// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package model
+
+import (
+ "encoding/json"
+ "io"
+)
+
+type UserAccessTokenSearch struct {
+ Term string `json:"term"`
+}
+
+// ToJson convert a UserAccessTokenSearch to json string
+func (c *UserAccessTokenSearch) ToJson() string {
+ b, err := json.Marshal(c)
+ if err != nil {
+ return ""
+ }
+
+ return string(b)
+}
+
+// UserAccessTokenSearchJson decodes the input and returns a UserAccessTokenSearch
+func UserAccessTokenSearchFromJson(data io.Reader) *UserAccessTokenSearch {
+ decoder := json.NewDecoder(data)
+ var cs UserAccessTokenSearch
+ err := decoder.Decode(&cs)
+ if err == nil {
+ return &cs
+ }
+
+ return nil
+}
diff --git a/model/user_access_token_search_test.go b/model/user_access_token_search_test.go
new file mode 100644
index 000000000..15a53f536
--- /dev/null
+++ b/model/user_access_token_search_test.go
@@ -0,0 +1,19 @@
+// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package model
+
+import (
+ "strings"
+ "testing"
+)
+
+func TestUserAccessTokenSearchJson(t *testing.T) {
+ userAccessTokenSearch := UserAccessTokenSearch{Term: NewId()}
+ json := userAccessTokenSearch.ToJson()
+ ruserAccessTokenSearch := UserAccessTokenSearchFromJson(strings.NewReader(json))
+
+ if userAccessTokenSearch.Term != ruserAccessTokenSearch.Term {
+ t.Fatal("Terms do not match")
+ }
+}