stato intermedio

This commit is contained in:
fabio
2026-03-01 14:36:26 +01:00
parent e0ef48f6fd
commit b852f656d4
25 changed files with 4230 additions and 390 deletions

View File

@@ -31,7 +31,7 @@ func RequireAdmin() fiber.Handler {
}
}
func SetSessionUserID(c *fiber.Ctx, userID uint) error {
func SetSessionUserID(c *fiber.Ctx, userID string) error {
store, ok := c.Locals(contextStoreKey).(*session.Store)
if !ok || store == nil {
return errors.New("session store not available")

View File

@@ -2,7 +2,7 @@ package middleware
import (
"fmt"
"strconv"
"strings"
"trustcontact/internal/models"
"trustcontact/internal/repo"
@@ -37,6 +37,21 @@ func CurrentUserMiddleware(store *session.Store, database *gorm.DB) fiber.Handle
c.Locals(contextUserKey, user)
setTemplateData(c, "CurrentUser", user)
if user != nil {
setTemplateData(c, "UserLang", strings.TrimSpace(user.Properties.Lang))
if user.Properties.UserId != "" {
if user.Properties.Dark {
setTemplateData(c, "UserTheme", "dark")
} else {
setTemplateData(c, "UserTheme", "light")
}
} else {
setTemplateData(c, "UserTheme", "")
}
} else {
setTemplateData(c, "UserLang", "")
setTemplateData(c, "UserTheme", "")
}
return c.Next()
}
}
@@ -49,7 +64,7 @@ func CurrentUser(c *fiber.Ctx, store *session.Store, userRepo *repo.UserRepo) (*
uidRaw := sess.Get(sessionUserIDKey)
uid, ok := normalizeUserID(uidRaw)
if !ok || uid == 0 {
if !ok || uid == "" {
return nil, nil
}
@@ -77,37 +92,16 @@ func CurrentUserFromContext(c *fiber.Ctx) (*models.User, bool) {
return user, true
}
func normalizeUserID(v any) (uint, bool) {
func normalizeUserID(v any) (string, bool) {
switch value := v.(type) {
case uint:
return value, true
case uint64:
return uint(value), true
case uint32:
return uint(value), true
case int:
if value <= 0 {
return 0, false
}
return uint(value), true
case int64:
if value <= 0 {
return 0, false
}
return uint(value), true
case int32:
if value <= 0 {
return 0, false
}
return uint(value), true
case string:
parsed, err := strconv.ParseUint(value, 10, 64)
if err != nil || parsed == 0 {
return 0, false
trimmed := strings.TrimSpace(value)
if trimmed == "" {
return "", false
}
return uint(parsed), true
return trimmed, true
default:
return 0, false
return "", false
}
}