Coverage for src / lexigram / admin / auth / __init__.py: 58%
19 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-13 22:14 +0800
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-13 22:14 +0800
1"""Admin authentication system.
3Provides built-in authentication with YAML/env configuration, RBAC,
4and secure session management.
5"""
7from __future__ import annotations
9# RBACChecker removed - use AuthorizationService instead
10# New integration module (lazy loaded for optional deps)
11from typing import TYPE_CHECKING, Any
13from lexigram.admin.auth.guard_chain import AdminGuardChain
14from lexigram.admin.auth.models import GUEST_USER, AdminUser, Role
15from lexigram.admin.auth.session_manager import AdminSessionManager
16from lexigram.admin.auth.store import AbstractAdminUserStore
17from lexigram.admin.config import AdminAuthConfig
19_AUTH_LAZY_IMPORTS = {
20 "require_auth": ".guards",
21}
23if TYPE_CHECKING:
24 from lexigram.admin.auth.guards import (
25 require_auth,
26 )
29def __getattr__(name: str) -> Any:
30 if name in _AUTH_LAZY_IMPORTS:
31 import importlib
33 module = importlib.import_module(_AUTH_LAZY_IMPORTS[name], __package__)
34 value = getattr(module, name)
35 globals()[name] = value
36 return value
37 raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
40def __dir__() -> list[str]:
41 return sorted(set(__all__) | set(_AUTH_LAZY_IMPORTS.keys()))
44__all__ = [
45 "GUEST_USER",
46 "AbstractAdminUserStore",
47 "AdminAuthConfig",
48 "AdminGuardChain",
49 "AdminSessionManager",
50 "AdminUser",
51 "Role",
52 "require_auth",
53]