torii-auth-password 0.3.0

Password authentication plugin for the torii authentication ecosystem
Documentation

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?;
// Initialize storage
let storage = Arc::new(SqliteStorage::new(pool.clone()));
let session_storage = Arc::new(SqliteStorage::new(pool.clone()));

// Create user manager
let user_manager = Arc::new(DefaultUserManager::new(storage.clone()));

// Create password plugin
let plugin = PasswordPlugin::new(user_manager.clone(), storage.clone());

// Register plugin with plugin manager
let mut manager = PluginManager::new(storage.clone(), session_storage.clone());
manager.register_plugin(plugin);

// Register a new user
let plugin = manager.get_plugin::<PasswordPlugin<DefaultUserManager<SqliteStorage>, SqliteStorage>>("password").unwrap();
let user = plugin.register_user_with_password("user@example.com", "password123", None).await?;

// Login an existing user
let user = plugin.login_user_with_password("user@example.com", "password123").await?;
# Ok(())
# }

The password plugin requires:

  1. A UserManager implementation for user management
  2. 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