mirror of
https://gitlab.com/megazordpobeda/DataRush.git
synced 2026-05-23 05:07:10 +00:00
add sign-up endpoint callback
This commit is contained in:
@@ -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")
|
||||
@@ -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):
|
||||
...
|
||||
|
||||
Reference in New Issue
Block a user