You've already forked Promocode-API
mirror of
https://github.com/devitq/Promocode-API.git
synced 2026-05-22 23:17:10 +00:00
42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
from datetime import timedelta
|
|
|
|
import jwt
|
|
from django.conf import settings
|
|
from django.core.validators import MinLengthValidator, RegexValidator
|
|
from django.db import models
|
|
from django.utils import timezone
|
|
|
|
from apps.core.models import BaseModel
|
|
|
|
|
|
class Business(BaseModel):
|
|
name = models.CharField(max_length=50, validators=[MinLengthValidator(5)])
|
|
email = models.EmailField(
|
|
unique=True,
|
|
max_length=120,
|
|
validators=[MinLengthValidator(8)],
|
|
)
|
|
password = models.CharField(
|
|
max_length=60,
|
|
validators=[
|
|
RegexValidator(
|
|
r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$",
|
|
),
|
|
],
|
|
)
|
|
token_version = models.BigIntegerField(default=0)
|
|
|
|
def __str__(self) -> str:
|
|
return self.name
|
|
|
|
def generate_token(self) -> str:
|
|
return jwt.encode(
|
|
{
|
|
"business_id": str(self.id),
|
|
"token_version": self.token_version,
|
|
"exp": timezone.now() + timedelta(hours=24),
|
|
},
|
|
settings.SECRET_KEY,
|
|
algorithm="HS256",
|
|
)
|