mirror of
https://gitlab.com/megazordpobeda/DataRush.git
synced 2026-05-22 23:17:09 +00:00
57 lines
1.3 KiB
Python
57 lines
1.3 KiB
Python
from ninja import Router
|
|
from ninja.errors import AuthenticationError
|
|
|
|
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"])
|
|
|
|
|
|
@router.post(
|
|
path="/sign-up",
|
|
response={
|
|
201: TokenSchema,
|
|
400: BadRequestError,
|
|
}
|
|
)
|
|
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(
|
|
path="/sign-in",
|
|
response={
|
|
200: TokenSchema,
|
|
400: BadRequestError,
|
|
401: ForbiddenError,
|
|
}
|
|
)
|
|
def sign_in(request, data: LoginSchema):
|
|
user = User.objects.filter(email=data.email).first()
|
|
if not user:
|
|
raise AuthenticationError
|
|
if user.password != data.password:
|
|
raise AuthenticationError
|
|
|
|
token = BearerAuth.generate_jwt(user)
|
|
return 200, TokenSchema(token=token)
|
|
|
|
|
|
@router.get(
|
|
path="/user/{user_id}",
|
|
response={
|
|
200: UserSchema,
|
|
400: BadRequestError,
|
|
404: NotFoundError,
|
|
}
|
|
)
|
|
def get_user(request, user_id: str):
|
|
...
|