2.3 KiB
2.3 KiB
Account Manager API Documentation
Overview
The AccountManager class provides functionality for managing user accounts, including:
- Account creation and authentication
- Password management (hashing, verification, reset)
- Account search and retrieval
- Tenant association management
Class Methods
hash_password(password, salt=None)
Generates a hashed password and salt for secure storage.
Parameters:
password(str): Plain text password to hashsalt(bytes, optional): Optional salt value. If None, generates new salt.
Returns:
- Tuple of (base64_password_hashed, base64_salt)
Example:
hashed_pw, salt = AccountManager.hash_password("mysecurepassword")
create_account(username, email, password)
Creates a new user account.
Parameters:
username(str): Unique usernameemail(str): User email addresspassword(str): Plain text password
Returns:
- Dictionary with created account details:
{ "id": UUID, "username": str, "email": str, "created_at": datetime }
get_user_by_username(username)
Retrieves user information by username.
Parameters:
username(str): Username to search for
Returns:
- User dictionary or None if not found
search_accounts(search=None, page=1, page_size=10)
Searches accounts with pagination.
Parameters:
search(str): Optional search termpage(int): Page number (1-based)page_size(int): Items per page
Returns:
{
"data": [user_dicts],
"total": int
}
verify_password(plain_password, hashed_password, salt)
Verifies a password against stored hash.
Parameters:
plain_password(str): Password to verifyhashed_password(str): Stored password hashsalt(str): Password salt
Returns:
- bool: True if password matches
Password Management
update_password(username, email, new_password)reset_password(account_id)
Tenant Association
associate_with_tenant(account_id, tenant_id, role, invited_by, current)get_tenant_accounts(tenant_id)get_account_tenants(account_id)
Error Handling
All methods raise exceptions on failure and log errors using the module logger.
Security Notes
- Uses PBKDF2 with SHA-256 for password hashing
- Generates random salts for each password
- All sensitive operations are logged