summaryrefslogtreecommitdiffstats
path: root/api4/user.go
diff options
context:
space:
mode:
authorSaturnino Abril <saturnino.abril@gmail.com>2017-04-18 00:06:33 +0900
committerChristopher Speller <crspeller@gmail.com>2017-04-17 11:06:33 -0400
commit742bab6429aeb1b581275da3c06af99fe293baab (patch)
treef5fb57770677d09081061eccbaf23d4a7fab6f9d /api4/user.go
parenta2f5ad0d1422001a0fbbad4dd0004faf5244ea55 (diff)
downloadchat-742bab6429aeb1b581275da3c06af99fe293baab.tar.gz
chat-742bab6429aeb1b581275da3c06af99fe293baab.tar.bz2
chat-742bab6429aeb1b581275da3c06af99fe293baab.zip
APIv4 PUT /users/{user_id}/active (#6118)
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 05216ff40..70182c1ab 100644
--- a/api4/user.go
+++ b/api4/user.go
@@ -32,6 +32,7 @@ func InitUser() {
BaseRoutes.User.Handle("/patch", ApiSessionRequired(patchUser)).Methods("PUT")
BaseRoutes.User.Handle("", ApiSessionRequired(deleteUser)).Methods("DELETE")
BaseRoutes.User.Handle("/roles", ApiSessionRequired(updateUserRoles)).Methods("PUT")
+ BaseRoutes.User.Handle("/active", ApiSessionRequired(updateUserActive)).Methods("PUT")
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")
@@ -587,6 +588,37 @@ func updateUserRoles(c *Context, w http.ResponseWriter, r *http.Request) {
ReturnStatusOK(w)
}
+func updateUserActive(c *Context, w http.ResponseWriter, r *http.Request) {
+ c.RequireUserId()
+ if c.Err != nil {
+ return
+ }
+
+ props := model.StringInterfaceFromJson(r.Body)
+
+ active, ok := props["active"].(bool)
+ if !ok {
+ c.SetInvalidParam("active")
+ return
+ }
+
+ // true when you're trying to de-activate yourself
+ isSelfDeactive := !active && c.Params.UserId == c.Session.UserId
+
+ if !isSelfDeactive && !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM) {
+ c.Err = model.NewLocAppError("updateUserActive", "api.user.update_active.permissions.app_error", nil, "userId="+c.Params.UserId)
+ c.Err.StatusCode = http.StatusForbidden
+ return
+ }
+
+ if ruser, err := app.UpdateActiveNoLdap(c.Params.UserId, active); err != nil {
+ c.Err = err
+ } else {
+ c.LogAuditWithUserId(ruser.Id, fmt.Sprintf("active=%v", active))
+ ReturnStatusOK(w)
+ }
+}
+
func checkUserMfa(c *Context, w http.ResponseWriter, r *http.Request) {
props := model.MapFromJson(r.Body)