summaryrefslogtreecommitdiffstats
path: root/api4/user.go
diff options
context:
space:
mode:
authorRuzette Tanyag <ruzette@users.noreply.github.com>2017-02-08 05:00:16 -0500
committerJoram Wilander <jwawilander@gmail.com>2017-02-08 02:00:16 -0800
commit0162d8ad08815b9b833fc651c7e185eab48cbbb2 (patch)
tree384c0032d766ad4a017a8a232590709134df8462 /api4/user.go
parent5462f0119edb788428f90fc61c8651e4a8cd9ad1 (diff)
downloadchat-0162d8ad08815b9b833fc651c7e185eab48cbbb2.tar.gz
chat-0162d8ad08815b9b833fc651c7e185eab48cbbb2.tar.bz2
chat-0162d8ad08815b9b833fc651c7e185eab48cbbb2.zip
Implement GET `/users/username/{username}` endpoint for APIv4 (#5310)
* added get user by username endpoint * added get user by username unit test and driver * changed username length to 22 characters max * changed Params to UserName to Username * reorganized get user by username and get user by email formatting in model/client4
Diffstat (limited to 'api4/user.go')
-rw-r--r--api4/user.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/api4/user.go b/api4/user.go
index 348ccf46c..d8d071cd2 100644
--- a/api4/user.go
+++ b/api4/user.go
@@ -30,6 +30,7 @@ func InitUser() {
BaseRoutes.Users.Handle("/login", ApiHandler(login)).Methods("POST")
BaseRoutes.Users.Handle("/logout", ApiHandler(logout)).Methods("POST")
+ BaseRoutes.UserByUsername.Handle("", ApiSessionRequired(getUserByUsername)).Methods("GET")
BaseRoutes.UserByEmail.Handle("", ApiSessionRequired(getUserByEmail)).Methods("GET")
}
@@ -93,6 +94,34 @@ func getUser(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
+func getUserByUsername(c *Context, w http.ResponseWriter, r *http.Request) {
+ c.RequireUsername()
+ if c.Err != nil {
+ return
+ }
+
+ // No permission check required
+
+ var user *model.User
+ var err *model.AppError
+
+ if user, err = app.GetUserByUsername(c.Params.Username); err != nil {
+ c.Err = err
+ return
+ }
+
+ etag := user.Etag(utils.Cfg.PrivacySettings.ShowFullName, utils.Cfg.PrivacySettings.ShowEmailAddress)
+
+ if HandleEtag(etag, "Get User", w, r) {
+ return
+ } else {
+ app.SanitizeProfile(user, c.IsSystemAdmin())
+ w.Header().Set(model.HEADER_ETAG_SERVER, etag)
+ w.Write([]byte(user.ToJson()))
+ return
+ }
+}
+
func getUserByEmail(c *Context, w http.ResponseWriter, r *http.Request) {
c.RequireEmail()
if c.Err != nil {