52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
from datetime import datetime, timedelta
|
|
|
|
from .api import get_ep_client
|
|
from authentications.decorators import ep_authenticated_user
|
|
|
|
|
|
@ep_authenticated_user
|
|
def __get_ep_sessionid(request):
|
|
epc, group = get_ep_client()
|
|
if not epc or not group:
|
|
return None, None
|
|
|
|
author = epc.createAuthorIfNotExistsFor(
|
|
name=str(request.user), authorMapper=str(request.user)
|
|
)["authorID"]
|
|
|
|
expires = datetime.utcnow() + timedelta(hours=3)
|
|
try:
|
|
result = epc.createSession(
|
|
groupID=str(group["groupID"]),
|
|
authorID=str(author),
|
|
validUntil=str(int(expires.timestamp())),
|
|
)
|
|
except Exception as e:
|
|
raise e
|
|
return None, None
|
|
|
|
return result["sessionID"], expires
|
|
|
|
|
|
def add_ep_cookie(request, response):
|
|
ep_sessid, expires = __get_ep_sessionid(request)
|
|
|
|
if ep_sessid:
|
|
response.set_cookie(
|
|
"sessionID", ep_sessid, expires=expires, domain=".2020.fet.at", path="/"
|
|
)
|
|
response.set_cookie("sessionID", ep_sessid, expires=expires, path="/etherpad")
|
|
return response
|
|
|
|
|
|
def del_ep_cookie(request, response):
|
|
|
|
if "sessionID" in request.COOKIES:
|
|
ep_sessionID = request.COOKIES["sessionID"]
|
|
|
|
epc, group = get_ep_client()
|
|
epc.deleteSession(sessionID=ep_sessionID)
|
|
|
|
response.delete_cookie("sessionID", domain=".2020.fet.at", path="/")
|
|
return response
|