summaryrefslogtreecommitdiffstats
path: root/api4/user.go
diff options
context:
space:
mode:
authorRuzette Tanyag <ruzette@users.noreply.github.com>2017-02-07 11:54:07 -0500
committerChristopher Speller <crspeller@gmail.com>2017-02-07 11:54:07 -0500
commitd91fea65188a51dd41976cad47f9c8ebacd75a04 (patch)
tree792f8563d04957c1ddf56a731821051c8466eba7 /api4/user.go
parent5cc30fa06149e1291deed6f53de53ecf25600d2c (diff)
downloadchat-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.go34
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) {