diff options
Diffstat (limited to 'api4/user.go')
-rw-r--r-- | api4/user.go | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/api4/user.go b/api4/user.go index ae1b2418c..07f223bd6 100644 --- a/api4/user.go +++ b/api4/user.go @@ -53,6 +53,7 @@ func (api *API) InitUser() { api.BaseRoutes.User.Handle("/sessions", api.ApiSessionRequired(getSessions)).Methods("GET") api.BaseRoutes.User.Handle("/sessions/revoke", api.ApiSessionRequired(revokeSession)).Methods("POST") + api.BaseRoutes.User.Handle("/sessions/revoke/all", api.ApiSessionRequired(revokeAllSessionsForUser)).Methods("POST") api.BaseRoutes.Users.Handle("/sessions/device", api.ApiSessionRequired(attachDeviceId)).Methods("PUT") api.BaseRoutes.User.Handle("/audits", api.ApiSessionRequired(getUserAudits)).Methods("GET") @@ -986,6 +987,25 @@ func revokeSession(c *Context, w http.ResponseWriter, r *http.Request) { ReturnStatusOK(w) } +func revokeAllSessionsForUser(c *Context, w http.ResponseWriter, r *http.Request) { + c.RequireUserId() + if c.Err != nil { + return + } + + if !app.SessionHasPermissionToUser(c.Session, c.Params.UserId) { + c.SetPermissionError(model.PERMISSION_EDIT_OTHER_USERS) + return + } + + if err := c.App.RevokeAllSessions(c.Params.UserId); err != nil { + c.Err = err + return + } + + ReturnStatusOK(w) +} + func attachDeviceId(c *Context, w http.ResponseWriter, r *http.Request) { props := model.MapFromJson(r.Body) |