Skip to content

Commit

Permalink
Rýchlejšia kontrola tokenov
Browse files Browse the repository at this point in the history
  • Loading branch information
mireq committed Apr 11, 2021
1 parent 1f3a655 commit 36fb43e
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 11 deletions.
8 changes: 3 additions & 5 deletions accounts/auth_remember_utils.py
@@ -1,26 +1,24 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

import uuid
import secrets

from django.contrib import auth as django_auth
from django.contrib.auth.hashers import make_password

from .accounts_settings import COOKIE_AGE, COOKIE_NAME
from common_utils.cookies import set_cookie


def create_token_string(user, token=None):
from .models import RememberToken
token_value = uuid.uuid4().hex
token_hash = make_password(token_value)
token_hash = secrets.token_urlsafe(64)
token = RememberToken(
token_hash=token_hash,
user=user
)

token.save()
return '%d:%s' % (user.id, token_value)
return '%d:%s' % (user.id, token_hash)


def preset_cookie(request, token_string):
Expand Down
8 changes: 2 additions & 6 deletions accounts/models.py
Expand Up @@ -4,7 +4,6 @@

from django.apps import apps
from django.conf import settings
from django.contrib.auth.hashers import check_password
from django.contrib.auth.models import AbstractUser, UserManager
from django.core.exceptions import ValidationError
from django.core.serializers.json import DjangoJSONEncoder
Expand Down Expand Up @@ -185,15 +184,12 @@ class Meta:
class RememberTokenManager(models.Manager):
def get_by_string(self, token):
try:
user_id, token_hash = token.split(':')
user_id, token_hash = token.split(':', 1)
except ValueError:
return None

max_age = timezone.now() - timedelta(seconds=accounts_settings.COOKIE_AGE)
for db_token in self.all().filter(created__gte=max_age, user=user_id):
if check_password(token_hash, db_token.token_hash):
return db_token
return None
return self.filter(created__gte=max_age, user=user_id, token_hash=token_hash).first()

def clean_remember_tokens(self):
max_age = timezone.now() - timedelta(seconds=accounts_settings.COOKIE_AGE)
Expand Down

0 comments on commit 36fb43e

Please sign in to comment.