from datetime import timedelta from django.conf import settings from django.utils import timezone from authentications.decorators import ep_authenticated_user from .api import get_ep_client, get_ep_group @ep_authenticated_user def _create_ep_session(request, expires): if not (ep_c := get_ep_client()): return None if not (ep_group := get_ep_group()): return None author = ep_c.createAuthorIfNotExistsFor( name=str(request.user), authorMapper=str(request.user), ) try: result = ep_c.createSession( groupID=str(ep_group["groupID"]), authorID=str(author["authorID"]), validUntil=str(int(expires.timestamp())), ) except Exception as e: raise e return result["sessionID"] def add_ep_cookie(request, response): expires = timezone.now() + timedelta(hours=3) if ep_session := _create_ep_session(request, expires): response.set_cookie( "sessionID", ep_session, expires=expires, domain=settings.HOST_NAME, path="/", ) response.set_cookie("sessionID", ep_session, expires=expires, path="/etherpad") return response def del_ep_cookie(request, response): if "sessionID" in request.COOKIES: ep_c = get_ep_client() ep_c.deleteSession(sessionID=request.COOKIES["sessionID"]) response.delete_cookie("sessionID", domain=settings.HOST_NAME, path="/") return response