-
Notifications
You must be signed in to change notification settings - Fork 84
Expand file tree
/
Copy pathauth_service.py
More file actions
31 lines (21 loc) · 913 Bytes
/
Copy pathauth_service.py
File metadata and controls
31 lines (21 loc) · 913 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""Session expiry policy used by the testing tutorial."""
from datetime import datetime, timedelta
DEFAULT_SESSION_MINUTES = 120
def make_session_expiry(
*,
now: datetime,
duration_minutes: int = DEFAULT_SESSION_MINUTES,
) -> datetime:
"""Return a timezone-aware session expiry for a positive duration."""
_require_timezone(now)
if duration_minutes <= 0:
raise ValueError("duration_minutes must be positive")
return now + timedelta(minutes=duration_minutes)
def is_session_expired(*, expires_at: datetime, now: datetime) -> bool:
"""Return whether a session has reached or passed its expiry time."""
_require_timezone(expires_at)
_require_timezone(now)
return now >= expires_at
def _require_timezone(value: datetime) -> None:
if value.tzinfo is None or value.utcoffset() is None:
raise ValueError("datetime values must be timezone-aware")