def __retrieve__(self, request): token, user = None, None if 'HTTP_X_MODIFIED_BY' in request.META: user = request.META['HTTP_X_MODIFIED_BY'] if 'HTTP_X_TOKEN' in request.META: token = request.META['HTTP_X_TOKEN'] else: return token if len(token) == 25: hasher = Hasher(salt=settings.SECRET_KEY) token = UUID(hasher.decode(token)) token = Token.objects.filter(id=token, is_active=True, is_anonymous=False) if token: token = token[0] request.user = token.owner user = User.objects.filter(id=user) if token.has_perm('core.propagate_token') and user: request.user = user[0] if token.due and token.due < timezone.now(): token.is_active = False token.save() token = None else: token = None return token
def token_retrieve(request): token = None if 'X_TOKEN' in request.META: token = request.META['X_TOKEN'] elif 'HTTP_X_TOKEN' in request.META: token = request.META['HTTP_X_TOKEN'] if token is not None: if len(token) == 20: token = UUID(hexlify(b85decode(token.encode())).decode()) if len(token) == 25: hasher = Hasher(salt=settings.SECRET_KEY) token = UUID(hasher.decode(token)) try: token = Token.objects.get(id=token, is_active=True, is_anonymous=False) request.user = token.owner if token.due is not None and token.due < timezone.now(): token.is_active = False token.save() token = None except Exception: token = None return token