60 lines
1.5 KiB
Python
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
|