stato intermedio
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,8 @@ func RegisterRoutes(app *fiber.App, store *session.Store, database *gorm.DB, cfg
|
||||
app.Post("/reset-password", authController.ResetPassword)
|
||||
app.Get("/forbidden", authController.ShowForbidden)
|
||||
app.Get("/welcome", httpmw.RequireAuth(), authController.ShowWelcome)
|
||||
app.Post("/preferences/lang", httpmw.RequireAuth(), authController.UpdateLanguage)
|
||||
app.Post("/preferences/theme", httpmw.RequireAuth(), authController.UpdateTheme)
|
||||
|
||||
private := app.Group("/private", httpmw.RequireAuth(), httpmw.RequireAdmin())
|
||||
private.Get("/", func(c *fiber.Ctx) error {
|
||||
|
||||
Reference in New Issue
Block a user