oidc-fastapi-test/src/oidc_test/auth_misc.py
2025-01-09 23:41:32 +01:00

29 lines
878 B
Python

from datetime import datetime, timedelta
from collections import OrderedDict
from .models import User
time_keys = set(("iat", "exp", "auth_time", "updated_at"))
def pretty_details(user: User, now: datetime) -> OrderedDict:
details = OrderedDict()
# breakpoint()
for key in sorted(time_keys):
try:
dt = datetime.fromtimestamp(user.userinfo[key])
except (KeyError, TypeError):
pass
else:
td = now - dt
td = timedelta(days=td.days, seconds=td.seconds)
if td.days < 0:
ptd = f"in {-td} h:m:s"
else:
ptd = f"{td} h:m:s ago"
details[key] = f"{user.userinfo[key]} - {dt} ({ptd})"
for key in sorted(user.userinfo):
if key in time_keys:
continue
details[key] = user.userinfo[key]
return details