summaryrefslogtreecommitdiffstats
path: root/api4/user.go
diff options
context:
space:
mode:
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) {