mirror of
https://gitlab.com/megazordpobeda/DataRush.git
synced 2026-05-22 23:17:09 +00:00
add swagger docs to signin and signup endooints
This commit is contained in:
@@ -4,6 +4,7 @@ from ninja import NinjaAPI
|
||||
|
||||
from api.v1 import handlers
|
||||
from api.v1.ping.views import router as ping_router
|
||||
from api.v1.users.views import router as users_router
|
||||
|
||||
router = NinjaAPI(
|
||||
title="project_name API",
|
||||
@@ -17,6 +18,10 @@ router.add_router(
|
||||
"ping",
|
||||
ping_router,
|
||||
)
|
||||
router.add_router(
|
||||
"",
|
||||
users_router,
|
||||
)
|
||||
|
||||
|
||||
for exception, handler in handlers.exception_handlers:
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
from ninja import Schema, ModelSchema
|
||||
|
||||
|
||||
from apps.users.models import User
|
||||
|
||||
|
||||
class TokenSchema(Schema):
|
||||
token: str
|
||||
|
||||
|
||||
class RegisterSchema(ModelSchema):
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ["email", "username", "password"]
|
||||
|
||||
|
||||
class LoginSchema(ModelSchema):
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ["email", "password"]
|
||||
@@ -0,0 +1,31 @@
|
||||
from ninja import Router
|
||||
|
||||
from api.v1.users.schemas import LoginSchema, RegisterSchema, TokenSchema
|
||||
from api.v1.schemas import BadRequestError, ForbiddenError
|
||||
from apps.users.models import User
|
||||
|
||||
|
||||
router = Router(tags=["users"])
|
||||
|
||||
|
||||
@router.post(
|
||||
path="/sign-up",
|
||||
response={
|
||||
201: TokenSchema,
|
||||
400: BadRequestError,
|
||||
}
|
||||
)
|
||||
def sign_up(data: RegisterSchema):
|
||||
...
|
||||
|
||||
|
||||
@router.post(
|
||||
path="/sign-in",
|
||||
response={
|
||||
200: TokenSchema,
|
||||
400: BadRequestError,
|
||||
403: ForbiddenError,
|
||||
}
|
||||
)
|
||||
def sign_in(data: LoginSchema):
|
||||
...
|
||||
@@ -0,0 +1,9 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class UsersConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'apps.users'
|
||||
label = 'users'
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
from django.db import models
|
||||
|
||||
from apps.core.models import BaseModel
|
||||
|
||||
|
||||
class User(BaseModel):
|
||||
email = models.EmailField(unique=True, verbose_name="Почта")
|
||||
username = models.SlugField(unique=True, verbose_name="Юзернейм")
|
||||
password = models.TextField(verbose_name="Пароль")
|
||||
|
||||
def __str__(self):
|
||||
return self.username
|
||||
|
||||
class Meta:
|
||||
verbose_name = "пользователь"
|
||||
verbose_name_plural = "пользователи"
|
||||
@@ -443,6 +443,7 @@ INSTALLED_APPS = [
|
||||
"minio_storage",
|
||||
# Internal apps
|
||||
"apps.core",
|
||||
"apps.users",
|
||||
]
|
||||
|
||||
# GUID
|
||||
|
||||
Reference in New Issue
Block a user