Enhance log display behavior and menu state management
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user