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.
26 lines
812 B
26 lines
812 B
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
|
|
|