Coverage for src/lexigram/admin/auth/__init__.py: 58%

19 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-21 14:26 +0800

1"""Admin authentication system. 

2 

3Provides built-in authentication with YAML/env configuration, RBAC, 

4and secure session management. 

5""" 

6 

7from __future__ import annotations 

8 

9# RBACChecker removed - use AuthorizationService instead 

10# New integration module (lazy loaded for optional deps) 

11from typing import TYPE_CHECKING, Any 

12 

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 

18 

19_AUTH_LAZY_IMPORTS = { 

20 "require_auth": ".guards", 

21} 

22 

23if TYPE_CHECKING: 

24 from lexigram.admin.auth.guards import ( 

25 require_auth, 

26 ) 

27 

28 

29def __getattr__(name: str) -> Any: 

30 if name in _AUTH_LAZY_IMPORTS: 

31 import importlib 

32 

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}") 

38 

39 

40def __dir__() -> list[str]: 

41 return sorted(set(__all__) | set(_AUTH_LAZY_IMPORTS.keys())) 

42 

43 

44__all__ = [ 

45 "GUEST_USER", 

46 "AbstractAdminUserStore", 

47 "AdminAuthConfig", 

48 "AdminGuardChain", 

49 "AdminSessionManager", 

50 "AdminUser", 

51 "Role", 

52 "require_auth", 

53]