Fortify-style authentication for Sova (register, verify, reset, 2FA, RBAC).
Builds on [sova_passport] (session login) + [sova_mail] + [sova_db].
app.install(Db::from_env().migrations::<sova_auth::AuthMigrator>());
app.install(Mail::from_env());
app.install(memory_sessions());
app.install(
Fortify::new()
.features([Feature::Registration, Feature::ResetPasswords, /* … */])
.api_mount("/api/auth")
.login_redirect("/login")
.home("/cabinet"),
);
cabinet.use_middleware(Fortify::guard());
// Programmatic login (impersonation / seed / admin switch):
let cu = load_current_user(db, id).await?.unwrap();
req.login_user(cu); // regenerates session + passport:user
req.logout_user();