Authentification

Modèle utilisateur

Modèle built-in

Runique inclut un modèle utilisateur prêt à l'emploi, sans aucune configuration.

Table générée : eihwaz_users

ChampTypeDescription
idPkClé primaire (i32 par défaut, i64 avec big-pk, Uuid avec pk-uuid)
usernameStringNom d'utilisateur unique
emailStringAdresse email
passwordStringHash Argon2 — jamais en clair
is_activeboolCompte actif
is_staffboolAccès au panneau admin (limité)
is_superuserboolAccès complet, bypass toutes les règles
created_atdatetimeDate de création
updated_atdatetimeDate de mise à jour

Pour créer le premier superutilisateur :

runique create-superuser

Clé primaire i64 ou UUID

Par défaut, la clé primaire est un i32. Pour passer à i64 ou Uuidune seule feature à la fois, activer les deux ensemble est une erreur de compilation volontaire :

# Cargo.toml du projet
runique = { version = "...", features = ["big-pk"] }    # Pk = i64
runique = { version = "...", features = ["pk-uuid"] }   # Pk = Uuid (Uuid::now_v7())

Le choix doit être fait avant la première migration — voir DSL model! & extend! pour le détail complet (types compatibles, contraintes FK, changement de mode après coup).


Trait RuniqueUser

Si vous utilisez votre propre modèle utilisateur à la place du built-in, vous devez implémenter RuniqueUser.

use runique::prelude::*;

impl RuniqueUser for users::Model {
    fn user_id(&self) -> Pk      { self.id }
    fn username(&self) -> &str       { &self.username }
    fn email(&self) -> &str          { &self.email }
    fn password_hash(&self) -> &str  { &self.password }
    fn is_active(&self) -> bool      { self.is_active }
    fn is_staff(&self) -> bool       { self.is_staff }
    fn is_superuser(&self) -> bool   { self.is_superuser }

    // Optionnel — logique d'accès admin sur mesure
    fn can_access_admin(&self) -> bool {
        self.is_active() && (self.is_staff() || self.is_superuser())
    }
}

Méthodes obligatoires

MéthodeRetourDescription
user_id()PkIdentifiant unique
username()&strNom d'utilisateur
email()&strAdresse email
password_hash()&strHash du mot de passe
is_active()boolCompte actif
is_staff()boolAccès admin limité
is_superuser()boolAccès admin complet

Méthodes avec valeur par défaut

MéthodeDéfautDescription
roles()vec![]Rôles personnalisés
can_access_admin()is_active && (is_staff || is_superuser)Logique d'accès admin