From 18e11a70b5a32fbbda0b17f0b2d35a0ced66d660 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 28 Nov 2020 16:47:29 +0000 Subject: [PATCH] delete session command --- src/bunker.go | 1 + src/sessions_api.go | 19 ++++++++++++++++++- src/sessions_db.go | 6 ++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/bunker.go b/src/bunker.go index 5bb6b30..ea78cfe 100644 --- a/src/bunker.go +++ b/src/bunker.go @@ -221,6 +221,7 @@ func (e mainEnv) setupRouter() *httprouter.Router { router.GET("/v1/session/:session", e.getSession) router.POST("/v1/session/:session", e.createSession) + router.DELETE("/v1/session/:session", e.deleteSession) //router.POST("/v1/sessions/:mode/:address", e.newUserSession) router.GET("/v1/sessions/:mode/:address", e.getUserSessions) diff --git a/src/sessions_api.go b/src/sessions_api.go index 4d2015e..078e1c8 100644 --- a/src/sessions_api.go +++ b/src/sessions_api.go @@ -61,7 +61,24 @@ func (e mainEnv) createSession(w http.ResponseWriter, r *http.Request, ps httpro w.Header().Set("Content-Type", "application/json; charset=utf-8") w.WriteHeader(200) fmt.Fprintf(w, `{"status":"ok","session":"%s"}`, session) - return +} + +func (e mainEnv) deleteSession(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { + session := ps.ByName("session") + event := audit("delete session", session, "session", session) + defer func() { event.submit(e.db) }() + if enforceUUID(w, session, event) == false { + //returnError(w, r, "bad session format", nil, event) + return + } + authResult := e.enforceAdmin(w, r) + if authResult == "" { + return + } + e.db.deleteSession(session) + w.Header().Set("Content-Type", "application/json; charset=utf-8") + w.WriteHeader(200) + fmt.Fprintf(w, `{"status":"ok"}`) } func (e mainEnv) newUserSession(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { diff --git a/src/sessions_db.go b/src/sessions_db.go index bbc7f73..be6882e 100644 --- a/src/sessions_db.go +++ b/src/sessions_db.go @@ -109,3 +109,9 @@ func (dbobj dbcon) getUserSessionsByToken(userTOKEN string, offset int32, limit return results, count, err } + +func (dbobj dbcon) deleteSession(sessionUUID string) (bool, error) { + dbobj.store.DeleteRecord(storage.TblName.Sessions, "session", sessionUUID) + return true, nil +} +