Coverage for src / fastapi_authly / core / config.py: 100%
27 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-20 11:54 +0800
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-20 11:54 +0800
1"""Configuration settings for fastapi-authly."""
3from typing import List, Optional, Any
5from pydantic import BaseModel, Field, ConfigDict
6from pydantic_settings import BaseSettings, SettingsConfigDict
7from fastapi_authly.interfaces import UserRepository, PasswordHasher, TokenService, Mailer
10class AuthConfig(BaseSettings):
11 """
12 Runtime configuration loaded from environment variables with ``AUTH_`` prefix.
14 Host applications can still pass an ``AuthConfig`` instance directly;
15 in that case, the passed values override the environment values.
16 """
18 secret_key: str = "your-secret-key-change-in-production"
19 algorithm: str = "HS256"
20 access_token_expire_minutes: int = 30
21 refresh_token_expire_days: int = 7
23 router_prefix: str = "/auth"
24 router_tags: List[str] = Field(default_factory=lambda: ["authentication"])
25 token_url: str = "token"
27 enable_password_recovery: bool = True
28 enable_user_registration: bool = True
29 enable_token_refresh: bool = True
30 enable_html_content: bool = True
32 email_from: str = "noreply@example.com"
33 email_from_name: str = "Auth System"
34 password_reset_url_template: str = (
35 "https://yourapp.com/reset-password?token={token}"
36 )
37 verification_url_template: str = (
38 "https://yourapp.com/verify-email?token={token}"
39 )
41 model_config = SettingsConfigDict(
42 env_prefix="AUTH_",
43 extra="ignore",
44 )
47class AuthDependencyConfig(BaseModel):
48 """
49 Optional dependency injection container.
51 Host projects can supply custom implementations for the overridable hooks.
52 """
53 model_config = ConfigDict(arbitrary_types_allowed=True)
55 user_repository: Optional[Any] = None
56 password_hasher: Optional[Any] = None
57 token_service: Optional[Any] = None
58 mailer: Optional[Any] = None