A plugin for Torii that provides email and password authentication.
This plugin allows users to register and authenticate using an email address and password.
It handles password hashing, validation.
Usage
use torii_auth_password::PasswordPlugin;
use torii_storage_sqlite::SqliteStorage;
use torii_core::{PluginManager, DefaultUserManager};
use std::sync::Arc;
# async fn example() -> Result<(), Box<dyn std::error::Error>> {
# let pool = sqlx::SqlitePool::connect("sqlite::memory:").await?;
let storage = Arc::new(SqliteStorage::new(pool.clone()));
let session_storage = Arc::new(SqliteStorage::new(pool.clone()));
let user_manager = Arc::new(DefaultUserManager::new(storage.clone()));
let plugin = PasswordPlugin::new(user_manager.clone(), storage.clone());
let mut manager = PluginManager::new(storage.clone(), session_storage.clone());
manager.register_plugin(plugin);
let plugin = manager.get_plugin::<PasswordPlugin<DefaultUserManager<SqliteStorage>, SqliteStorage>>("password").unwrap();
let user = plugin.register_user_with_password("user@example.com", "password123", None).await?;
let user = plugin.login_user_with_password("user@example.com", "password123").await?;
# Ok(())
# }
The password plugin requires:
- A UserManager implementation for user management
- A storage implementation that implements the [
PasswordStorage] trait
Features
- User registration with email and password
- Password hashing and validation
- Optional email verification
- Event emission for authentication events