Documentation
¶
Overview ¶
Package middleware contient les middlewares HTTP de JellyGate.
Ce fichier implémente le middleware d'authentification admin qui protège les routes /admin/* en vérifiant le cookie de session signé.
Package middleware — i18n.go ¶
Middleware de détection de langue pour JellyGate.
Ordre de priorité :
- Cookie "lang" (défini par le sélecteur UI)
- En-tête HTTP Accept-Language
- Valeur default_lang lue depuis la table settings (via DefaultLangProvider)
La langue détectée est injectée dans le contexte de la requête et accessible via middleware.LangFromContext(ctx).
Index ¶
- func CSRFCookieName() string
- func CSRFTokenFromContext(ctx context.Context) string
- func DetectLanguage(provider DefaultLangProvider) func(http.Handler) http.Handler
- func EnsureCSRFCookie(baseURL string) func(http.Handler) http.Handler
- func LangFromContext(ctx context.Context) string
- func LogPanics() func(http.Handler) http.Handler
- func RateLimitByIP(limit int, window time.Duration) func(http.Handler) http.Handler
- func RequestIsHTTPS(r *http.Request, baseURL string) bool
- func RequireAdminAuth() func(http.Handler) http.Handler
- func RequireAuth(secretKey, baseURL string, validators ...SessionValidator) func(http.Handler) http.Handler
- func RequireCSRF() func(http.Handler) http.Handler
- func ScriptNonceFromContext(ctx context.Context) string
- func SecurityHeaders(baseURL string) func(http.Handler) http.Handler
- func SessionAllowed(sess *session.Payload, validators ...SessionValidator) bool
- type DefaultLangProvider
- type SessionValidator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CSRFCookieName ¶
func CSRFCookieName() string
func CSRFTokenFromContext ¶
func DetectLanguage ¶
func DetectLanguage(provider DefaultLangProvider) func(http.Handler) http.Handler
DetectLanguage détermine la langue de l'utilisateur et l'injecte dans le contexte de la requête.
Priorité : cookie "lang" → Accept-Language → provider.GetDefaultLang().
func EnsureCSRFCookie ¶
EnsureCSRFCookie cree un cookie CSRF si absent.
func LangFromContext ¶
LangFromContext extracts the language from the request context. Returns "en" if no language is defined.
func LogPanics ¶
LogPanics is a development middleware that recovers panics and logs a full stack trace to the server logger. Useful to capture the cause of intermittent 500 errors during local debugging. Intended for local/dev use only.
func RateLimitByIP ¶
RateLimitByIP applique une limitation simple par IP pour les routes sensibles.
func RequestIsHTTPS ¶
RequestIsHTTPS determines whether the incoming request should be considered HTTPS from trusted server-side state.
func RequireAdminAuth ¶
RequireAdminAuth est une surcouche qui exige spécifiquement que la session contienne IsAdmin == true. Doit être appelé APRÈS RequireAuth (ou englober la route).
func RequireAuth ¶
func RequireAuth(secretKey, baseURL string, validators ...SessionValidator) func(http.Handler) http.Handler
RequireAuth est un middleware Chi qui verifie que l'utilisateur est connecte en tant qu'utilisateur legitime (Admin ou Standard).
func RequireCSRF ¶
RequireCSRF verifie le token sur les methodes mutables.
func ScriptNonceFromContext ¶
func SecurityHeaders ¶
SecurityHeaders ajoute un socle de headers de securite pour toutes les reponses.
func SessionAllowed ¶
func SessionAllowed(sess *session.Payload, validators ...SessionValidator) bool
SessionAllowed applique les validateurs optionnels a une session.
Types ¶
type DefaultLangProvider ¶
type DefaultLangProvider interface {
GetDefaultLang() string
}
DefaultLangProvider fournit la langue par défaut du serveur. Implémenté par database.DB via GetDefaultLang().
type SessionValidator ¶
SessionValidator peut refuser une session pourtant correctement signee (par exemple apres une revocation globale).