aloli-cr-auth
aloli-cr-auth
Bibliothèque d'authentification Crystal pour les applications Gaya.
Fonctionnalités
| Module | Description |
|---|---|
AloliCrAuth::Password |
Hachage et validation BCrypt des mots de passe |
AloliCrAuth::Token |
Génération et vérification de tokens JWT |
AloliCrAuth::Session |
Gestion des sessions via cookies HTTP (Kemal) |
AloliCrAuth::SmtpConfig |
Configuration du serveur SMTP (paramétrable) |
AloliCrAuth::PasswordReset |
Récupération de mot de passe par courriel |
AloliCrAuth::UserManager |
Gestion des utilisateurs administrateurs |
Installation
Ajouter dans votre shard.yml :
dependencies:
aloli_cr_auth:
github: aloli/aloli-cr-auth
branch: developpement
Puis exécuter :
shards install
Configuration SMTP
La configuration SMTP peut être fournie de trois manières, par ordre de priorité :
1. A l'instanciation (priorité maximale) :
smtp = AloliCrAuth::SmtpConfig.new(
host: "smtp.example.com",
port: 587,
username: "user@example.com",
password: "secret",
from_address: "noreply@gaya.fr",
from_name: "La Table de Gaya",
use_starttls: true
)
2. Depuis un Hash (ex. : base de données) :
smtp = AloliCrAuth::SmtpConfig.from_hash({
"smtp_host" => "smtp.example.com",
"smtp_port" => "587",
"smtp_username" => "user@example.com",
"smtp_password" => "secret",
"smtp_from_address" => "noreply@gaya.fr",
"smtp_from_name" => "La Table de Gaya"
})
3. Via variables d'environnement (valeurs par défaut) :
| Variable | Description | Defaut |
|---|---|---|
SMTP_HOST |
Hote du serveur SMTP | localhost |
SMTP_PORT |
Port SMTP | 587 |
SMTP_USERNAME |
Nom d'utilisateur | (vide) |
SMTP_PASSWORD |
Mot de passe | (vide) |
SMTP_FROM_ADDRESS |
Adresse d'expedition | noreply@leschampsdegaya.com |
SMTP_FROM_NAME |
Nom d'expediteur | La Table de Gaya |
SMTP_TLS |
Activer TLS/SMTPS | false |
SMTP_STARTTLS |
Activer STARTTLS | true |
Utilisation
Gestion des mots de passe
require "aloli_cr_auth"
hash = AloliCrAuth::Password.hash("MonMotDePasse1")
AloliCrAuth::Password.verify("MonMotDePasse1", hash) # => true
errors = AloliCrAuth::Password.validate("faible")
Tokens JWT
token = AloliCrAuth::Token.generate(
secret: ENV["SESSION_SECRET"],
sub: "1",
email: "admin@gaya.fr",
role: "admin"
)
payload = AloliCrAuth::Token.decode(token, ENV["SESSION_SECRET"])
Recuperation de mot de passe
smtp = AloliCrAuth::SmtpConfig.new(host: "smtp.example.com", ...)
result = AloliCrAuth::PasswordReset.send_reset_email(
email: "admin@gaya.fr",
reset_url: "https://app.gaya.fr/admin/reset-password",
secret: ENV["SESSION_SECRET"],
smtp: smtp
)
Gestion des utilisateurs
errors = AloliCrAuth::UserManager.validate_user(
email: "nouveau@gaya.fr", nom: "Martin", prenom: "Sophie", role: "gestionnaire"
)
AloliCrAuth::UserManager.send_invitation_email(
email: "nouveau@gaya.fr", prenom: "Sophie",
invitation_url: "https://app.gaya.fr/admin/set-password",
secret: ENV["SESSION_SECRET"], smtp: smtp
)
temp_pwd = AloliCrAuth::UserManager.generate_temp_password
Tests
crystal spec
52 exemples couvrant tous les modules.
Licence
MIT
Repository
aloli-cr-auth
Owner
Statistic
- 0
- 0
- 0
- 0
- 3
- about 4 hours ago
- February 23, 2026
License
MIT License
Links
Synced at
Tue, 24 Feb 2026 14:15:12 GMT
Languages