lib.itmens/takahe/views.py

67 lines
2.3 KiB
Python
Raw Normal View History

2023-11-12 20:24:17 -05:00
import time
2023-07-20 21:59:49 -04:00
2023-11-12 20:24:17 -05:00
from django.conf import settings
from django.contrib.auth.decorators import login_required
from django.contrib.sessions.backends.signed_cookies import SessionStore
from django.http import HttpRequest
from django.shortcuts import redirect, render
from django.utils.http import http_date
from loguru import logger
from common.utils import user_identity_required
2023-12-03 15:30:21 -05:00
from .utils import Takahe
2023-11-12 20:24:17 -05:00
@login_required
@user_identity_required
2023-12-03 15:30:21 -05:00
def auth_login(request):
2023-11-12 20:24:17 -05:00
"""Redirect to the login page if not yet, otherwise sync login info to takahe session"""
2023-12-03 15:30:21 -05:00
Takahe.sync_password(request.user)
2023-11-12 20:24:17 -05:00
# if SESSION_ENGINE = "django.contrib.sessions.backends.signed_cookies" in Takahe
2023-12-10 19:13:45 -05:00
session = SessionStore(
session_key=request.COOKIES.get(settings.TAKAHE_SESSION_COOKIE_NAME)
)
2023-11-12 20:24:17 -05:00
session._session_cache = request.session._session # type: ignore
session["_auth_user_backend"] = "django.contrib.auth.backends.ModelBackend"
session_key: str = session._get_session_key() # type: ignore
# if SESSION_ENGINE = "django.contrib.sessions.backends.db" in Takahe
2023-11-12 20:24:17 -05:00
# sess = request.session._session
# sess["_auth_user_backend"] = "django.contrib.auth.backends.ModelBackend"
# logger.info(f"session: {sess}")
# TakaheSession.objects.update_or_create(
# session_key=request.session.session_key,
# defaults={
# "session_data": request.session.encode(sess),
# "expire_date": request.session.get_expiry_date(),
# },
# )
# session_key = request.session.session_key
response = redirect(request.GET.get("next", "/"))
if request.session.get_expire_at_browser_close():
max_age = None
expires = None
else:
max_age = request.session.get_expiry_age()
expires_time = time.time() + max_age
expires = http_date(expires_time)
response.set_cookie(
2023-12-10 19:13:45 -05:00
settings.TAKAHE_SESSION_COOKIE_NAME,
2023-11-12 20:24:17 -05:00
session_key,
max_age=max_age,
expires=expires,
domain=settings.SESSION_COOKIE_DOMAIN,
path=settings.SESSION_COOKIE_PATH,
secure=settings.SESSION_COOKIE_SECURE,
httponly=settings.SESSION_COOKIE_HTTPONLY,
samesite=settings.SESSION_COOKIE_SAMESITE,
)
return response
def auth_logout(request: HttpRequest):
response = redirect("/account/logout")
return response