Enhance log display behavior and menu state management
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-02-11 14:37:02 +11:00
parent 9bd2b32003
commit ffd43d5217
9 changed files with 166 additions and 52 deletions
+21 -9
View File
@@ -7,6 +7,7 @@ import (
"net/http"
"os"
"path/filepath"
"sync"
"crypto/hmac"
"crypto/rand"
@@ -29,6 +30,7 @@ var databaseFile = "authentication.json"
var data = make(map[string]any)
var tokens = make(map[string]any)
var tokensMu sync.RWMutex
var initAuthentication = false
@@ -256,20 +258,21 @@ func CheckTheValidityOfTheToken(token string) (newToken string, err error) {
err = createError(011)
tokensMu.Lock()
defer tokensMu.Unlock()
if v, ok := tokens[token]; ok {
var expires = v.(map[string]any)["expires"].(time.Time)
var userID = v.(map[string]any)["id"].(string)
expires := v.(map[string]any)["expires"].(time.Time)
if expires.Sub(time.Now().Local()) < 0 {
delete(tokens, token)
return
}
newToken = setToken(userID, token)
// Keep a stable token per session and only refresh expiration.
v.(map[string]any)["expires"] = time.Now().Local().Add(time.Minute * time.Duration(tokenValidity))
newToken = token
err = nil
} else {
return
}
return
@@ -285,11 +288,15 @@ func GetUserID(token string) (userID string, err error) {
err = createError(002)
tokensMu.Lock()
defer tokensMu.Unlock()
if v, ok := tokens[token]; ok {
var expires = v.(map[string]any)["expires"].(time.Time)
expires := v.(map[string]any)["expires"].(time.Time)
userID = v.(map[string]any)["id"].(string)
if expires.Sub(time.Now().Local()) < 0 {
delete(tokens, token)
return
}
@@ -558,7 +565,12 @@ func defaultsForNewUser(username, password string) map[string]any {
}
func setToken(id, oldToken string) (newToken string) {
delete(tokens, oldToken)
tokensMu.Lock()
defer tokensMu.Unlock()
if oldToken != "-" {
delete(tokens, oldToken)
}
loopToken:
newToken = randomString(tokenLength)