Skip to main content

sova_auth/
lib.rs

1//! Fortify-style authentication for Sova (register, verify, reset, 2FA, RBAC).
2//!
3//! Builds on [`sova_passport`] (session login) + [`sova_mail`] + [`sova_db`].
4//!
5//! ```ignore
6//! app.install(Db::from_env().migrations::<sova_auth::AuthMigrator>());
7//! app.install(Mail::from_env());
8//! app.install(memory_sessions());
9//! app.install(
10//!   Fortify::new()
11//!     .features([Feature::Registration, Feature::ResetPasswords, /* … */])
12//!     .api_mount("/api/auth")
13//!     .login_redirect("/login")
14//!     .home("/cabinet"),
15//! );
16//! cabinet.use_middleware(Fortify::guard());
17//!
18//! // Programmatic login (impersonation / seed / admin switch):
19//! let cu = load_current_user(db, id).await?.unwrap();
20//! req.login_user(cu);   // regenerates session + passport:user
21//! req.logout_user();
22//! ```
23
24mod actions;
25mod feature;
26mod forms;
27mod guard;
28mod mail;
29mod migration;
30mod paths;
31mod plugin;
32mod state;
33mod store;
34mod token;
35mod two_factor;
36
37#[cfg(feature = "activity")]
38mod activity_log;
39
40pub mod entity;
41
42pub use mail::{ResetPasswordMail, VerifyEmailMail, send_reset, send_verify};
43pub use feature::Feature;
44pub use guard::AuthExt;
45pub use migration::AuthMigrator;
46pub use paths::FortifyPaths;
47pub use plugin::Fortify;
48pub use store::{
49    assign_role, create_permission, create_role, delete_permission, delete_role, find_user_by_email,
50    find_user_by_id, list_permissions, list_roles, load_current_user, mark_email_verified,
51    register_user, revoke_role, set_avatar, set_user_roles, sync_role_permissions, update_permission,
52    update_role, user_ids_with_permission, user_ids_with_role, CurrentUser,
53};
54pub use token::{make_verify_token, parse_verify_token};
55
56#[cfg(feature = "vld")]
57pub use forms::{
58    ConfirmPasswordForm, DisableTwoFactorForm, ForgotForm, LoginForm, PasswordForm, ProfileForm,
59    RegisterForm, ResetForm, TwoFactorCodeForm,
60};