Fix bug: if you create token in django admin, token field is empty

This commit is contained in:
2022-09-25 17:23:31 +03:00
parent 5017e004c2
commit bf4af285e8
3 changed files with 42 additions and 10 deletions

View File

@@ -16,15 +16,7 @@ class UserToken(models.Model):
@staticmethod
def create_token(user: SiteUser):
source = bytearray(user.email + user.password + str(datetime.now()), 'utf-8')
h = sha512(source).hexdigest()
# чекаем токен в базе
if UserToken.objects.filter(access_token=h).count() != 0:
# по какой-то причине есть, выкидываем исключение
raise Exception(API_ERROR_TOKEN_CREATION)
token = UserToken(access_token=h, user=user)
token = UserToken(user=user)
token.save()
print(f"created token {token.access_token[:16]}...")
@@ -43,6 +35,15 @@ class UserToken(models.Model):
return user[0]
@staticmethod
def deauth(token: str):
t = UserToken.objects.filter(access_token=token)
if len(t) == 0:
raise Exception(API_ERROR_INVALID_TOKEN)
t[0].delete()
@staticmethod
def get_user_by_token(token: str):
t = UserToken.objects.filter(access_token=token)
@@ -53,3 +54,17 @@ class UserToken(models.Model):
def __str__(self):
return self.user.email + ": " + self.access_token[:10] + "..."
def save(self, *args, **kwargs):
if len(self.access_token) == 0:
source = bytearray(self.user.email + self.user.password + str(datetime.now()), 'utf-8')
t = sha512(source).hexdigest()
# чекаем токен в базе
if UserToken.objects.filter(access_token=t).count() != 0:
# по какой-то причине есть, выкидываем исключение
raise Exception(API_ERROR_TOKEN_CREATION)
self.access_token = t
super().save(*args, **kwargs)