feat: added promocode creation and view

This commit is contained in:
ITQ
2025-01-21 18:44:45 +03:00
parent 36275caf40
commit 5ff66261c3
22 changed files with 813 additions and 56 deletions
+30 -1
View File
@@ -7,6 +7,7 @@ from ninja.security import HttpBearer
from pydantic import BaseModel, ValidationError
import apps.business.models
import apps.user.models
class BusinessToken(BaseModel):
@@ -28,7 +29,7 @@ class BusinessAuth(HttpBearer):
try:
business = apps.business.models.Business.objects.get(
id=token_payload.business_id
id=token_payload.business_id,
)
except apps.business.models.Business.DoesNotExist:
return None
@@ -37,3 +38,31 @@ class BusinessAuth(HttpBearer):
return None
return business
class UserToken(BaseModel):
user_id: uuid.UUID
token_version: int
class UserAuth(HttpBearer):
def authenticate(self, request: HttpRequest, token: str) -> str | None:
try:
decoded_payload = jwt.decode(
token,
settings.SECRET_KEY,
algorithms=["HS256"],
)
token_payload = UserToken(**decoded_payload)
except (jwt.PyJWTError, ValidationError):
return None
try:
user = apps.user.models.User.objects.get(id=token_payload.user_id)
except apps.user.models.User.DoesNotExist:
return None
if user.token_version != token_payload.token_version:
return None
return user