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
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 12:26 +0800
1"""Constants for lexigram-auth."""
3from __future__ import annotations
5import importlib.metadata
7# -- Version -------------------------------------------------------------------
9try:
10 __version__ = importlib.metadata.version("lexigram-auth")
11except importlib.metadata.PackageNotFoundError:
12 __version__ = "0.0.0"
14# -- Environment Variable Prefixes -------------------------------------------
16ENV_PREFIX: str = "LEX_AUTH__"
17ENV_NESTED_DELIMITER: str = "__"
19# -- Token Defaults ----------------------------------------------------------
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
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
30# -- Password Policy Defaults ------------------------------------------------
32DEFAULT_MIN_PASSWORD_LENGTH: int = 8
33DEFAULT_MAX_PASSWORD_LENGTH: int = 128
34DEFAULT_PASSWORD_HASH_ROUNDS: int = 12
36# -- Session Defaults --------------------------------------------------------
38DEFAULT_SESSION_TIMEOUT_MINUTES: int = 60
39DEFAULT_SESSION_COOKIE_NAME: str = "session"
40DEFAULT_SESSION_COOKIE_SECURE: bool = True
41DEFAULT_SESSION_COOKIE_HTTPONLY: bool = True
43# -- MFA Defaults ------------------------------------------------------------
45DEFAULT_TOTP_DIGITS: int = 6
46DEFAULT_TOTP_INTERVAL: int = 30
47DEFAULT_TOTP_VALID_WINDOW: int = 1
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]