Compare commits
No commits in common. "d3b2f4d71ad96a72164317aedb2105476a3d110a" and "e421b6c0e1fb748eb1acfdbe33c810480a0d6e4c" have entirely different histories.
d3b2f4d71a
...
e421b6c0e1
@ -5,11 +5,3 @@
|
|||||||
Специально для проекта "Код на салфетке"
|
Специально для проекта "Код на салфетке"
|
||||||
https://pressanybutton.ru/category/servis-na-fastapi/
|
https://pressanybutton.ru/category/servis-na-fastapi/
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from fastapi import APIRouter
|
|
||||||
|
|
||||||
from lkeep.apps.auth.routes import auth_router
|
|
||||||
|
|
||||||
apps_router = APIRouter(prefix="/api/v1")
|
|
||||||
|
|
||||||
apps_router.include_router(router=auth_router)
|
|
||||||
|
@ -20,7 +20,7 @@ class UserManager:
|
|||||||
Класс для управления пользователями.
|
Класс для управления пользователями.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, db: DBDependency = Depends(DBDependency)) -> None:
|
def __init__(self, model: type[User] = User, db: DBDependency = Depends(DBDependency)) -> None:
|
||||||
"""
|
"""
|
||||||
Инициализирует экземпляр класса.
|
Инициализирует экземпляр класса.
|
||||||
|
|
||||||
@ -30,7 +30,7 @@ class UserManager:
|
|||||||
:type db: DBDependency
|
:type db: DBDependency
|
||||||
"""
|
"""
|
||||||
self.db = db
|
self.db = db
|
||||||
self.model = User
|
self.model = model
|
||||||
|
|
||||||
async def create_user(self, user: CreateUser) -> UserReturnData:
|
async def create_user(self, user: CreateUser) -> UserReturnData:
|
||||||
"""
|
"""
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
"""
|
|
||||||
Проект: Lkeep
|
|
||||||
Автор: Иван Ашихмин
|
|
||||||
Год: 2025
|
|
||||||
Специально для проекта "Код на салфетке"
|
|
||||||
https://pressanybutton.ru/category/servis-na-fastapi/
|
|
||||||
"""
|
|
||||||
|
|
||||||
from fastapi import APIRouter, Depends
|
|
||||||
from starlette import status
|
|
||||||
|
|
||||||
from lkeep.apps.auth.schemas import RegisterUser, UserReturnData
|
|
||||||
from lkeep.apps.auth.services import UserService
|
|
||||||
|
|
||||||
auth_router = APIRouter(prefix="/auth", tags=["auth"])
|
|
||||||
|
|
||||||
|
|
||||||
@auth_router.post(path="/register", status_code=status.HTTP_201_CREATED)
|
|
||||||
async def registration(user: RegisterUser, service: UserService = Depends(UserService)) -> UserReturnData:
|
|
||||||
"""
|
|
||||||
Регистрация нового пользователя.
|
|
||||||
|
|
||||||
:param user: Данные нового пользователя, который нужно зарегистрировать.
|
|
||||||
:type user: RegisterUser
|
|
||||||
:param service: Сервис для взаимодействия с пользователями.
|
|
||||||
:type service: UserService
|
|
||||||
:returns: Данные зарегистрированного пользователя.
|
|
||||||
:rtype: UserReturnData
|
|
||||||
:raises HTTPException 400: Если данные пользователя некорректны.
|
|
||||||
"""
|
|
||||||
return await service.register_user(user=user)
|
|
@ -1,48 +0,0 @@
|
|||||||
"""
|
|
||||||
Проект: Lkeep
|
|
||||||
Автор: Иван Ашихмин
|
|
||||||
Год: 2025
|
|
||||||
Специально для проекта "Код на салфетке"
|
|
||||||
https://pressanybutton.ru/category/servis-na-fastapi/
|
|
||||||
"""
|
|
||||||
|
|
||||||
from fastapi import Depends
|
|
||||||
|
|
||||||
from lkeep.apps.auth.handlers import AuthHandler
|
|
||||||
from lkeep.apps.auth.managers import UserManager
|
|
||||||
from lkeep.apps.auth.schemas import CreateUser, RegisterUser, UserReturnData
|
|
||||||
|
|
||||||
|
|
||||||
class UserService:
|
|
||||||
"""
|
|
||||||
Класс для управления пользователями.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(
|
|
||||||
self, manager: UserManager = Depends(UserManager), handler: AuthHandler = Depends(AuthHandler)
|
|
||||||
) -> None:
|
|
||||||
"""
|
|
||||||
Инициализирует экземпляр класса, используя зависимости для управления пользователями и авторизации.
|
|
||||||
|
|
||||||
:param manager: Управитель пользователей, отвечающий за CRUD-операции над пользователями.
|
|
||||||
:type manager: UserManager
|
|
||||||
:param handler: Обработчик аутентификации и авторизации, который используется для проверки доступа к ресурсам.
|
|
||||||
:type handler: AuthHandler
|
|
||||||
"""
|
|
||||||
self.manager = manager
|
|
||||||
self.handler = handler
|
|
||||||
|
|
||||||
async def register_user(self, user: RegisterUser) -> UserReturnData:
|
|
||||||
"""
|
|
||||||
Регистрирует нового пользователя в системе.
|
|
||||||
|
|
||||||
:param user: Данные для регистрации пользователя.
|
|
||||||
:type user: RegisterUser
|
|
||||||
:return: Данные зарегистрированного пользователя.
|
|
||||||
:rtype: UserReturnData
|
|
||||||
"""
|
|
||||||
hashed_password = await self.handler.get_password_hash(user.password)
|
|
||||||
|
|
||||||
new_user = CreateUser(email=user.email, hashed_password=hashed_password)
|
|
||||||
|
|
||||||
return await self.manager.create_user(user=new_user)
|
|
@ -9,12 +9,8 @@ https://pressanybutton.ru/category/servis-na-fastapi/
|
|||||||
import uvicorn
|
import uvicorn
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
|
|
||||||
from lkeep.apps import apps_router
|
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
app.include_router(router=apps_router)
|
|
||||||
|
|
||||||
|
|
||||||
def start():
|
def start():
|
||||||
uvicorn.run(app="lkeep.main:app", reload=True)
|
uvicorn.run(app="lkeep.main:app", reload=True)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user