@dbeauyat/sessions
v1.0.4
Published
Gestion de sessions authentifiées stockées dans Redis, avec expiration automatique à 30 minutes via JSON documents et un TTL configuré par clé.
Readme
@dbeauyat/sessions
Gestion de sessions authentifiées stockées dans Redis, avec expiration automatique à 30 minutes via JSON documents et un TTL configuré par clé.
Install
npm install @dbeauyat/sessionsAPI
createSession(username)
Crée une nouvelle session avec un identifiant aléatoire, enregistre la date de début et rafraîchit le TTL à 30 minutes.
Paramètres :
username(string) — nom d'utilisateur associé à la session
Retourne : Promise<{ success: true, sessionId: string }>
retrieveSession(sessionId)
Récupère les données complètes d'une session depuis Redis.
Paramètres :
sessionId(string) — identifiant unique de la session
Retourne : Promise<{ startDate: string, lastAccess: string, contenuValide: Record<string, any> } | null>
verifySession(sessionId)
Vérifie l'existence d'une session dans Redis.
Paramètres :
sessionId(string) — identifiant unique de la session
Retourne : Promise<{ valid: boolean, reason?: string }>
updateSession(sessionId, updates)
Met à jour un ou plusieurs champs de l'objet contenuValide d'une session et rafraîchit le TTL.
Paramètres :
sessionId(string) — identifiant unique de la sessionupdates(object) — objet contenant les champs et valeurs à mettre à jour danscontenuValide
Retourne : Promise<{ success: true }>
refreshSession(sessionId)
Met à jour le timestamp lastAccess et réinitialise le TTL de la session à 30 minutes.
Paramètres :
sessionId(string) — identifiant unique de la session
Retourne : Promise<{ success: true, lastAccess: string }>
deleteSession(sessionId)
Supprime une session de Redis en utilisant JSON.DEL.
Paramètres :
sessionId(string) — identifiant unique de la session à supprimer
Retourne : Promise<{ success: true }>
Configuration
Le fichier de configuration config.json5 définit les paramètres du serveur :
{
"brokerUrl": "mqtt://127.0.0.1:1883",
"listenTopic": "auth/nouvelle-demande",
"qos": 1,
"clientId": "SIGSDID-AUTH-SERVER",
"DBs": {
"redis": {
"host": "127.0.0.1",
"port": 6379,
"username": "default",
"password": ""
}
}
}Architecture
Les sessions sont stockées sous forme de documents JSON dans Redis avec le pattern de clé sigsdid:ba:sessions:{sessionId}. Chaque session dispose d'un TTL de 30 minutes (1800 secondes) géré via la commande JSON.SET et EXPIRE.
Technologies utilisées
- argon2 — hachage sécurisé des mots de passe
- ioredis — client Redis asynchrone pour Node.js
- moment — gestion des dates (locale française configurée par défaut)
- nanoid — génération d'identifiants uniques cryptographiquement sécurisés
- require-json5 — chargement de fichiers de configuration JSONC/JSON5
Scripts npm
| Commande | Description |
|----------|-------------|
| npm test | Lance les tests (à implémenter) |
| npm run release:local | Crée une nouvelle version mineure et publie localement |
| npm run release:public | Crée une nouvelle version mineure et publie sur npmjs.org |
Licence
ISC — © 2026 Daniel Beauyat
