diff options
author | Ruzette Tanyag <ruzette@users.noreply.github.com> | 2017-02-07 11:54:07 -0500 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2017-02-07 11:54:07 -0500 |
commit | d91fea65188a51dd41976cad47f9c8ebacd75a04 (patch) | |
tree | 792f8563d04957c1ddf56a731821051c8466eba7 /api4/user.go | |
parent | 5cc30fa06149e1291deed6f53de53ecf25600d2c (diff) | |
download | chat-d91fea65188a51dd41976cad47f9c8ebacd75a04.tar.gz chat-d91fea65188a51dd41976cad47f9c8ebacd75a04.tar.bz2 chat-d91fea65188a51dd41976cad47f9c8ebacd75a04.zip |
Implement GET `/users/email/{email}` endpoint for APIv4 (#5309)
* added get user by email endpoint for APIv4
* added get user by email endpoint unit test and driver
* removed the appended return of user ids on logout
* Added RequireEmail to validate user email. Also updated the get user by email endpoint and unit test
Diffstat (limited to 'api4/user.go')
-rw-r--r-- | api4/user.go | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/api4/user.go b/api4/user.go index 14067bdf5..cf9bb4ead 100644 --- a/api4/user.go +++ b/api4/user.go @@ -27,6 +27,8 @@ func InitUser() { BaseRoutes.Users.Handle("/login", ApiHandler(login)).Methods("POST") BaseRoutes.Users.Handle("/logout", ApiHandler(logout)).Methods("POST") + BaseRoutes.UserByEmail.Handle("", ApiSessionRequired(getUserByEmail)).Methods("GET") + } func createUser(c *Context, w http.ResponseWriter, r *http.Request) { @@ -88,6 +90,34 @@ func getUser(c *Context, w http.ResponseWriter, r *http.Request) { } } +func getUserByEmail(c *Context, w http.ResponseWriter, r *http.Request) { + c.RequireEmail() + if c.Err != nil { + return + } + + // No permission check required + + var user *model.User + var err *model.AppError + + if user, err = app.GetUserByEmail(c.Params.Email); 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 getUsers(c *Context, w http.ResponseWriter, r *http.Request) { inTeamId := r.URL.Query().Get("in_team") inChannelId := r.URL.Query().Get("in_channel") @@ -292,9 +322,7 @@ func logout(c *Context, w http.ResponseWriter, r *http.Request) { data["user_id"] = c.Session.UserId Logout(c, w, r) - if c.Err == nil { - w.Write([]byte(model.MapToJson(data))) - } + } func Logout(c *Context, w http.ResponseWriter, r *http.Request) { |