add sign-up endpoint callback

This commit is contained in:
Timur Kh.
2025-03-01 00:19:19 +03:00
parent 8c61cdbf0f
commit bbcecd7fb6
2 changed files with 11 additions and 6 deletions
+27
View File
@@ -0,0 +1,27 @@
import datetime
from typing import Optional, Any
import jwt
from django.conf import settings
from django.http import HttpRequest
from ninja.security import HttpBearer
from apps.users.models import User
class BearerAuth(HttpBearer):
def authenticate(self, request: HttpRequest, token: str) -> Optional[Any]:
data = jwt.decode(token, settings.SECRET_KEY, algorithms=["HS256"])
if data["exp"] < datetime.datetime.now().timestamp():
return None
user = User.objects.get(id=data["id"])
return user
@staticmethod
def generate_jwt(user: User) -> str:
data = {
"exp": (datetime.datetime.now() + datetime.timedelta(days=365)).timestamp(),
"id": str(user.id)
}
return jwt.encode(data, settings.SECRET_KEY, algorithm="HS256")
+10 -5
View File
@@ -1,10 +1,10 @@
from ninja import Router
from api.v1.users.schemas import LoginSchema, RegisterSchema, TokenSchema, UserSchema
from api.v1.auth import BearerAuth
from api.v1.schemas import BadRequestError, ForbiddenError, NotFoundError
from apps.users.models import User
router = Router(tags=["users"])
@@ -15,8 +15,13 @@ router = Router(tags=["users"])
400: BadRequestError,
}
)
def sign_up(data: RegisterSchema):
...
def sign_up(request, data: RegisterSchema):
user = User(**data.dict())
user.full_clean()
user.save()
token = BearerAuth.generate_jwt(user)
return 201, TokenSchema(token=token)
@router.post(
@@ -27,7 +32,7 @@ def sign_up(data: RegisterSchema):
403: ForbiddenError,
}
)
def sign_in(data: LoginSchema):
def sign_in(request, data: LoginSchema):
...
@@ -39,5 +44,5 @@ def sign_in(data: LoginSchema):
404: NotFoundError,
}
)
def get_user(user_id: str):
def get_user(request, user_id: str):
...