chore(webui): clear all expired sessions on each user account login

Closes 
This commit is contained in:
Julien Dessaux 2025-04-19 00:00:16 +02:00
parent 215c630ba0
commit c483d909f9
Signed by: adyxax
GPG key ID: F92E51B86E07177E
2 changed files with 11 additions and 0 deletions
pkg
database
webui

View file

@ -27,6 +27,14 @@ func (db *DB) CreateSession(account *model.Account) (string, error) {
return sessionId.String(), nil
}
func (db *DB) DeleteExpiredSessions() error {
_, err := db.Exec(`DELETE FROM sessions WHERE created < ?`, time.Now().Unix())
if err != nil {
return fmt.Errorf("failed to delete expired session: %w", err)
}
return nil
}
func (db *DB) DeleteSession(session *model.Session) error {
_, err := db.Exec(`DELETE FROM sessions WHERE id = ?`, session.Id)
if err != nil {

View file

@ -91,6 +91,9 @@ func handleLoginPOST(db *database.DB) http.Handler {
SameSite: http.SameSiteStrictMode,
Secure: true,
})
if err := db.DeleteExpiredSessions(); err != nil {
slog.Error("failed to delete expired sessions after user login", "err", err, "accountId", account.Id)
}
http.Redirect(w, r, "/", http.StatusFound)
})
}