Authentification

Helpers de session

Import

use runique::middleware::auth::{
    login, auth_login, logout,
    is_authenticated, get_user_id, get_username,
};

Connexion

auth_login — connexion par user_id (recommandé)

Raccourci générique : charge automatiquement les données depuis la DB à partir du seul user_id. Adapté à tous les flux d'authentification (inscription, OAuth, magic link…).

auth_login(&session, &db, user.id).await?;

login — connexion complète

Pour les cas où vous avez déjà toutes les données et souhaitez contrôler la persistance DB et la connexion exclusive.

login(
    &session,
    &db,
    user.id,
    &user.username,
    user.is_staff,
    user.is_superuser,
    None,    // Option<&RuniqueSessionStore> — persistance multi-appareils
    false,   // exclusive — invalider les autres sessions
).await?;

Connexion exclusive

Pour n'autoriser qu'un seul appareil connecté à la fois, passer exclusive: true :

login(&session, &db, user.id, &user.username, false, false, Some(&store), true).await?;

Ou via le builder pour activer globalement :

RuniqueApp::builder(config)
    .middleware(|m| m.with_exclusive_login(true))

Déconnexion

logout(&session, None).await?;

// Avec suppression de la session DB (multi-appareils)
logout(&session, Some(&store)).await?;

Vérifications

// L'utilisateur est-il connecté ?
if is_authenticated(&session).await {
    // ...
}

// Récupérer l'ID en session (retourne Pk = i32 ou i64)
if let Some(user_id) = get_user_id(&session).await {
    // ...
}

// Récupérer le username en session
if let Some(username) = get_username(&session).await {
    // ...
}