1mod permissions;
15mod role;
16mod sessions;
17mod users;
18
19pub use permissions::{
20 add_user_to_group, bootstrap_default_groups, check_permission, create_group, grant_to_group,
21 grant_to_user, init_permission_tables, lazy_attach_permissions, permissions_for_user,
22 register_model_permissions, remove_user_from_group, Permission, PermissionError, Superuser,
23};
24pub(crate) use permissions::invalidate_user_cache;
25pub use role::Role;
26pub use sessions::{
27 create_session, delete_session, identity_from_session, init_session_tables,
28 purge_expired_sessions, session_token_from_cookie, SESSION_COOKIE,
29};
30pub use users::{
31 bootstrap_demo_users, create_user, find_user_by_email, hash_password, init_user_tables,
32 load_user_profile, login, migrate_user_schema, set_password, update_user_role, verify_password,
33 would_orphan_developers, Identity, StoredUser, UserProfile,
34};
35
36use crate::error::Result;
37use crate::orm::Db;
38
39#[cfg(test)]
46pub(crate) static TEST_ENV_LOCK: tokio::sync::Mutex<()> =
47 tokio::sync::Mutex::const_new(());
48
49pub async fn init_tables(db: &Db) -> Result<()> {
51 init_user_tables(db).await?;
52 migrate_user_schema(db).await?;
54 init_session_tables(db).await?;
55 sessions::migrate_session_schema(db).await?;
57 init_permission_tables(db).await?;
58 Ok(())
59}