Merge remote-tracking branch 'origin/master'

# Conflicts:
#	services/backend/api/v1/auth.py
#	services/backend/api/v1/router.py
#	services/backend/api/v1/user/schemas.py
#	services/backend/api/v1/user/views.py
#	services/backend/apps/user/apps.py
#	services/backend/config/settings.py
This commit is contained in:
Андрей Сумин
2025-03-01 01:17:13 +03:00
31 changed files with 116 additions and 15462 deletions
+35 -18
View File
@@ -1,12 +1,12 @@
from ninja import Router
from http import HTTPStatus as status
from ninja import Router
from ninja.errors import AuthenticationError
from api.v1.user.schemas import LoginSchema, RegisterSchema, TokenSchema, UserSchema
from api.v1.auth import BearerAuth
from api.v1.schemas import BadRequestError, ForbiddenError, NotFoundError
from api.v1.user.schemas import (
LoginSchema,
RegisterSchema,
TokenSchema,
UserSchema,
)
from apps.user.models import User
router = Router(tags=["user"])
@@ -14,30 +14,47 @@ router = Router(tags=["user"])
@router.post(
path="/sign-up",
response={
201: TokenSchema,
400: BadRequestError,
status.CREATED: TokenSchema,
status.BAD_REQUEST: BadRequestError,
},
auth=None,
)
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 status.CREATED, TokenSchema(token=token)
@router.post(
path="/sign-in",
response={
200: TokenSchema,
400: BadRequestError,
403: ForbiddenError,
status.OK: TokenSchema,
status.BAD_REQUEST: BadRequestError,
status.UNAUTHORIZED: ForbiddenError,
},
auth=None,
)
def sign_in(data: LoginSchema): ...
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 status.OK, TokenSchema(token=token)
@router.get(
path="/user/{user_id}",
response={
200: UserSchema,
400: BadRequestError,
404: NotFoundError,
status.OK: UserSchema,
status.BAD_REQUEST: BadRequestError,
status.NOT_FOUND: NotFoundError,
},
)
def get_user(user_id: str): ...
def get_user(request, user_id: str):
...
-4
View File
@@ -7,7 +7,3 @@ from django.core.cache import cache
class CoreConfig(AppConfig):
name = "apps.core"
label = "core"
def ready(self) -> None:
with contextlib.suppress(Exception):
cache.add("current_date", 0, timeout=None)
+7
View File
@@ -3,11 +3,18 @@ from django.db import models
from apps.core.models import BaseModel
class UserRole(models.Choices):
STUDENT = "student"
METODIST = "metodist"
class User(BaseModel):
email = models.EmailField(unique=True, verbose_name="Почта")
username = models.SlugField(unique=True, verbose_name="Юзернейм")
password = models.TextField(verbose_name="Пароль")
status = models.CharField(max_length=10, choices=UserRole.choices, default=UserRole.STUDENT)
def __str__(self):
return self.username