session

package
v1.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 9, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package session gère les sessions admin de JellyGate.

Ce package est isolé pour éviter les cycles d'import entre handlers et middleware. Il contient :

  • SessionPayload : données stockées dans le cookie
  • signSession / VerifySession : signature HMAC-SHA256
  • SessionFromContext : récupération depuis le contexte de requête
  • Constantes de session (nom du cookie, durée)

Index

Constants

View Source
const (
	// CookieName est le nom du cookie de session admin.
	CookieName = "jellygate_session"

	// Duration est la durée de validité d'une session (24 heures).
	Duration = 24 * time.Hour

	// RememberDuration est la duree de validite quand l'utilisateur choisit
	// de rester connecte sur ce navigateur.
	RememberDuration = 30 * 24 * time.Hour

	// IndefiniteDuration garde une session persistante tres longtemps.
	// Les navigateurs peuvent appliquer leur propre limite, mais le serveur ne
	// l'expire pas avant cette duree sauf deconnexion ou revocation globale.
	IndefiniteDuration = 10 * 365 * 24 * time.Hour
)

Variables

This section is empty.

Functions

func NewContext

func NewContext(ctx context.Context, s *Payload) context.Context

NewContext injecte une session dans un contexte.

func Sign

func Sign(payload Payload, secretKey string) (string, error)

Sign sérialise le payload en JSON, l'encode en base64, et y ajoute une signature HMAC-SHA256 pour empêcher toute falsification.

Format du cookie : base64(payload).base64(hmac)

Types

type Payload

type Payload struct {
	UserID   string `json:"uid"` // ID Jellyfin de l'utilisateur
	Username string `json:"usr"` // Nom d'utilisateur
	IsAdmin  bool   `json:"adm"` // Est administrateur Jellyfin
	Exp      int64  `json:"exp"` // Timestamp d'expiration (Unix)
	Iat      int64  `json:"iat"` // Timestamp de creation (Unix)
}

Payload contient les données stockées dans le cookie de session. Le cookie est signé (HMAC-SHA256) mais pas chiffré — ne jamais y mettre de données sensibles (mots de passe, tokens Jellyfin).

func FromContext

func FromContext(ctx context.Context) *Payload

FromContext récupère la session admin depuis le contexte de la requête. Retourne nil si aucune session n'est présente.

func Verify

func Verify(cookieValue, secretKey string) (*Payload, error)

Verify vérifie la signature du cookie et retourne le payload décodé. Retourne une erreur si la signature est invalide ou la session expirée.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL