From 6be465fe9b9709a9ed31be12547e95c6b6d197cb Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 7 Mar 2017 23:30:31 -0500 Subject: [PATCH] Addded is_expired property to Token --- netbox/users/models.py | 7 +++++++ netbox/utilities/api.py | 3 +-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/netbox/users/models.py b/netbox/users/models.py index c3a2129e7..9191b2fd6 100644 --- a/netbox/users/models.py +++ b/netbox/users/models.py @@ -4,6 +4,7 @@ import os from django.contrib.auth.models import User from django.db import models from django.utils.encoding import python_2_unicode_compatible +from django.utils import timezone @python_2_unicode_compatible @@ -33,3 +34,9 @@ class Token(models.Model): def generate_key(self): # Generate a random 160-bit key expressed in hexadecimal. return binascii.hexlify(os.urandom(20)).decode() + + @property + def is_expired(self): + if self.expires is not None and timezone.now() > self.expires: + return True + return False diff --git a/netbox/utilities/api.py b/netbox/utilities/api.py index 64142812c..dc305c5d8 100644 --- a/netbox/utilities/api.py +++ b/netbox/utilities/api.py @@ -1,5 +1,4 @@ from django.conf import settings -from django.utils import timezone from rest_framework import authentication, exceptions from rest_framework.exceptions import APIException @@ -31,7 +30,7 @@ class TokenAuthentication(authentication.TokenAuthentication): raise exceptions.AuthenticationFailed("Invalid token") # Enforce the Token's expiration time, if one has been set. - if token.expires and token.expires < timezone.now(): + if token.expires and not token.is_expired: raise exceptions.AuthenticationFailed("Token expired") if not token.user.is_active: