Coverage for src/lexigram/auth/constants.py: 92%

24 statements  

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

1"""Constants for lexigram-auth.""" 

2 

3from __future__ import annotations 

4 

5import importlib.metadata 

6 

7# -- Version ------------------------------------------------------------------- 

8 

9try: 

10 __version__ = importlib.metadata.version("lexigram-auth") 

11except importlib.metadata.PackageNotFoundError: 

12 __version__ = "0.0.0" 

13 

14# -- Environment Variable Prefixes ------------------------------------------- 

15 

16ENV_PREFIX: str = "LEX_AUTH__" 

17ENV_NESTED_DELIMITER: str = "__" 

18 

19# -- Token Defaults ---------------------------------------------------------- 

20 

21DEFAULT_ACCESS_TOKEN_EXPIRE_MINUTES: int = 30 

22DEFAULT_REFRESH_TOKEN_EXPIRE_DAYS: int = 7 

23DEFAULT_TOKEN_ALGORITHM: str = "HS256" # noqa: S105 # config default, not a credential 

24DEFAULT_TOKEN_TYPE: str = "Bearer" # noqa: S105 # config default, not a credential 

25 

26# Grace period (seconds) during which tokens signed by a rotated-out key 

27# remain accepted. Prevents immediate user logout on rotation. 

28DEFAULT_JWT_KEY_ROTATION_GRACE_PERIOD_SECONDS: int = 3600 

29 

30# -- Password Policy Defaults ------------------------------------------------ 

31 

32DEFAULT_MIN_PASSWORD_LENGTH: int = 8 

33DEFAULT_MAX_PASSWORD_LENGTH: int = 128 

34DEFAULT_PASSWORD_HASH_ROUNDS: int = 12 

35 

36# -- Session Defaults -------------------------------------------------------- 

37 

38DEFAULT_SESSION_TIMEOUT_MINUTES: int = 60 

39DEFAULT_SESSION_COOKIE_NAME: str = "session" 

40DEFAULT_SESSION_COOKIE_SECURE: bool = True 

41DEFAULT_SESSION_COOKIE_HTTPONLY: bool = True 

42 

43# -- MFA Defaults ------------------------------------------------------------ 

44 

45DEFAULT_TOTP_DIGITS: int = 6 

46DEFAULT_TOTP_INTERVAL: int = 30 

47DEFAULT_TOTP_VALID_WINDOW: int = 1 

48 

49__all__ = [ 

50 "DEFAULT_ACCESS_TOKEN_EXPIRE_MINUTES", 

51 "DEFAULT_JWT_KEY_ROTATION_GRACE_PERIOD_SECONDS", 

52 "DEFAULT_MAX_PASSWORD_LENGTH", 

53 "DEFAULT_MIN_PASSWORD_LENGTH", 

54 "DEFAULT_PASSWORD_HASH_ROUNDS", 

55 "DEFAULT_REFRESH_TOKEN_EXPIRE_DAYS", 

56 "DEFAULT_SESSION_COOKIE_HTTPONLY", 

57 "DEFAULT_SESSION_COOKIE_NAME", 

58 "DEFAULT_SESSION_COOKIE_SECURE", 

59 "DEFAULT_SESSION_TIMEOUT_MINUTES", 

60 "DEFAULT_TOKEN_ALGORITHM", 

61 "DEFAULT_TOKEN_TYPE", 

62 "DEFAULT_TOTP_DIGITS", 

63 "DEFAULT_TOTP_INTERVAL", 

64 "DEFAULT_TOTP_VALID_WINDOW", 

65 "ENV_NESTED_DELIMITER", 

66 "ENV_PREFIX", 

67]