From 5f1d06311faf53c32ecc4dc1fedc385bc3ff075e Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 22 May 2021 21:48:28 +0200 Subject: [PATCH] add func deleteExpiredSessions --- routers/api/v1/user/user.go | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/routers/api/v1/user/user.go b/routers/api/v1/user/user.go index 3ed7c76..23cc7cb 100644 --- a/routers/api/v1/user/user.go +++ b/routers/api/v1/user/user.go @@ -264,23 +264,22 @@ func isSessionIdValid(sessionId string) (bool, error) { db, err := database.GetDatabase() if db == nil || err != nil { - log.Warn("DB error:", err) return false, err } defer db.Close() - var expires string + deleteExpiredSessions(db) - err = db.QueryRow("SELECT session_id, expires FROM sessions WHERE session_id = ?", sessionId).Scan(&sessionId, &expires) + err = db.QueryRow("SELECT session_id FROM sessions WHERE session_id = ?", sessionId).Scan(&sessionId) if err == sql.ErrNoRows { return false, nil } - t, err := time.Parse("2006-01-02 15:04:05", expires) + /*sessionExpires, err := time.Parse("2006-01-02 15:04:05", expires) - log.Infoln("expires", expires, time.Now().Add(time.Hour*73).Unix(), t.Unix()) + log.Infoln("expires", expires, time.Now().Add(time.Hour*72).Unix(), sessionExpires.Unix()) if err != nil { log.Warn("Failed to parse session datetime", err) @@ -288,14 +287,14 @@ func isSessionIdValid(sessionId string) (bool, error) { } // session has expired - if time.Now().Add(time.Hour*73).Unix() > t.Unix() { + if time.Now().Unix() > sessionExpires.Unix() { log.Info("bigger") deleteSession(db, sessionId) return false, err } - log.Info("not bigger") + log.Info("not bigger") */ return true, nil } @@ -303,10 +302,24 @@ func deleteSession(db *sql.DB, sessionId string) { res, err := db.Exec("DELETE FROM sessions WHERE session_id = ?", sessionId) if err != nil { - log.Infoln("err delete session", err) + log.Warnln("err deleting session:", err) } - log.Infoln("delete session res", res) + a, b := res.RowsAffected() + + log.Debugln("delete session res", a, b) +} + +func deleteExpiredSessions(db *sql.DB) { + res, err := db.Exec("DELETE FROM `sessions` WHERE expires < CURRENT_TIMESTAMP()") + + if err != nil { + log.Warnln("err deleting expired sessions:", err) + } + + a, b := res.RowsAffected() + + log.Debugln("Delete expired sessions:", a, b) } func createUserSession(db *sql.DB, userId string, ip string, userAgent string) (string, error) { @@ -334,6 +347,7 @@ func createUserSession(db *sql.DB, userId string, ip string, userAgent string) ( func getExpiresTime() time.Time { // TODO: db default + return time.Now().Add(time.Hour * 72) } @@ -442,9 +456,11 @@ func GetUsers(c *fiber.Ctx) error { // c.Params("id") if db == nil || err != nil { - return c.SendString("db error") + return c.SendStatus(fiber.StatusInternalServerError) } + defer db.Close() + list := []string{} var (