mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
812 B
27 lines
812 B
3 years ago
|
from django.utils import timezone
|
||
|
from django.conf import settings
|
||
|
from django.core.exceptions import PermissionDenied
|
||
|
|
||
|
from authentication.models import TempToken
|
||
|
from .base import JMSModelBackend
|
||
|
|
||
|
|
||
|
class TempTokenAuthBackend(JMSModelBackend):
|
||
|
model = TempToken
|
||
|
|
||
|
def authenticate(self, request, username='', password='', *args, **kwargs):
|
||
|
token = self.model.objects.filter(username=username, secret=password).first()
|
||
|
if not token:
|
||
|
return None
|
||
|
if not token.is_valid:
|
||
|
raise PermissionDenied('Token is invalid, expired at {}'.format(token.date_expired))
|
||
|
|
||
|
token.verified = True
|
||
|
token.date_verified = timezone.now()
|
||
|
token.save()
|
||
|
return token.user
|
||
|
|
||
|
@staticmethod
|
||
|
def is_enabled():
|
||
|
return settings.AUTH_TEMP_TOKEN
|