summaryrefslogtreecommitdiffstats
path: root/api4/user.go
diff options
context:
space:
mode:
authorCarlos Tadeu Panato Junior <ctadeu@gmail.com>2017-02-24 14:27:47 +0100
committerJoram Wilander <jwawilander@gmail.com>2017-02-24 08:27:47 -0500
commit7fc5dc236aa2437e81b238f65d39c2f795eac493 (patch)
tree27c84da1c0b63e181810200f0e94d29707487927 /api4/user.go
parentace228c4e52bd25dca24d1a5b35eff97740e5ea2 (diff)
downloadchat-7fc5dc236aa2437e81b238f65d39c2f795eac493.tar.gz
chat-7fc5dc236aa2437e81b238f65d39c2f795eac493.tar.bz2
chat-7fc5dc236aa2437e81b238f65d39c2f795eac493.zip
add implementation for verify email for apiv4 (#5502)
Diffstat (limited to 'api4/user.go')
-rw-r--r--api4/user.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/api4/user.go b/api4/user.go
index 4c40ef4b4..94891d11c 100644
--- a/api4/user.go
+++ b/api4/user.go
@@ -27,6 +27,7 @@ func InitUser() {
BaseRoutes.User.Handle("/password", ApiSessionRequired(updatePassword)).Methods("PUT")
BaseRoutes.Users.Handle("/password/reset", ApiHandler(resetPassword)).Methods("POST")
BaseRoutes.Users.Handle("/password/reset/send", ApiHandler(sendPasswordReset)).Methods("POST")
+ BaseRoutes.User.Handle("/email/verify", ApiHandler(verify)).Methods("POST")
BaseRoutes.Users.Handle("/login", ApiHandler(login)).Methods("POST")
BaseRoutes.Users.Handle("/logout", ApiHandler(logout)).Methods("POST")
@@ -550,3 +551,34 @@ func getAudits(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
}
+
+func verify(c *Context, w http.ResponseWriter, r *http.Request) {
+ props := model.MapFromJson(r.Body)
+
+ userId := props["uid"]
+ if len(userId) != 26 {
+ c.SetInvalidParam("uid")
+ return
+ }
+
+ hashedId := props["hid"]
+ if len(hashedId) == 0 {
+ c.SetInvalidParam("hid")
+ return
+ }
+
+ hashed := model.HashPassword(hashedId)
+ if model.ComparePassword(hashed, userId+utils.Cfg.EmailSettings.InviteSalt) {
+ if c.Err = app.VerifyUserEmail(userId); c.Err != nil {
+ return
+ } else {
+ c.LogAudit("Email Verified")
+ ReturnStatusOK(w)
+ return
+ }
+ }
+
+ c.Err = model.NewLocAppError("verifyEmail", "api.user.verify_email.bad_link.app_error", nil, "")
+ c.Err.StatusCode = http.StatusBadRequest
+ return
+}