Files
fet2020/fet2020/documents/etherpadlib.py
2025-02-02 12:42:20 +01:00

60 lines
1.5 KiB
Python

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