Files
Django/gvsdsdk/auth/elt_auth.py

47 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import uuid
from gvsdsdk.auth.cookie import ELT_COOKIE_NAME
class ELTAuthentication:
def authenticate(self, request):
elt_token = request.COOKIES.get(ELT_COOKIE_NAME)
if not elt_token:
return None
try:
token_uuid = uuid.UUID(elt_token)
except (ValueError, AttributeError):
return None
from gvsdsdk.models import User, EphemeralToken
import datetime
try:
elt = EphemeralToken.objects.get(
ELTUUID=token_uuid,
ELTStatus=1,
)
except EphemeralToken.DoesNotExist:
return None
now_utc = datetime.datetime.now(datetime.timezone.utc)
if elt.ELTEndTime.replace(tzinfo=None) < now_utc.replace(tzinfo=None):
return None
# 滑动续期剩余时间不足7天时延长30天
remaining = elt.ELTEndTime.replace(tzinfo=None) - now_utc.replace(tzinfo=None)
if remaining < datetime.timedelta(days=7):
elt.ELTEndTime = now_utc + datetime.timedelta(days=30)
elt.save(update_fields=['ELTEndTime'])
try:
user = User.objects.get(UserUUID=elt.ELTUserUUID)
except User.DoesNotExist:
return None
request.elt = elt
return (user, elt_token)
def authenticate_header(self, request):
return 'Bearer'