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