feat: Добавлена сущность Role и связь User-Role
This commit is contained in:
parent
fda45296a4
commit
e8b71a0c37
@ -17,7 +17,11 @@ class UsersRepository:
|
|||||||
return result.scalars().all()
|
return result.scalars().all()
|
||||||
|
|
||||||
async def get_by_id(self, user_id: int) -> Optional[User]:
|
async def get_by_id(self, user_id: int) -> Optional[User]:
|
||||||
stmt = select(User).filter_by(id=user_id)
|
stmt = (
|
||||||
|
select(User)
|
||||||
|
.filter_by(id=user_id)
|
||||||
|
.options(joinedload(User.role))
|
||||||
|
)
|
||||||
result = await self.db.execute(stmt)
|
result = await self.db.execute(stmt)
|
||||||
return result.scalars().first()
|
return result.scalars().first()
|
||||||
|
|
||||||
|
|||||||
8
api/app/domain/entities/role.py
Normal file
8
api/app/domain/entities/role.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class RoleEntity(BaseModel):
|
||||||
|
id: Optional[int] = None
|
||||||
|
title: str
|
||||||
@ -2,6 +2,8 @@ from typing import Optional
|
|||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
from app.domain.entities.role import RoleEntity
|
||||||
|
|
||||||
|
|
||||||
class UserEntity(BaseModel):
|
class UserEntity(BaseModel):
|
||||||
id: Optional[int] = None
|
id: Optional[int] = None
|
||||||
@ -11,3 +13,5 @@ class UserEntity(BaseModel):
|
|||||||
login: str
|
login: str
|
||||||
|
|
||||||
role_id: Optional[int] = None
|
role_id: Optional[int] = None
|
||||||
|
|
||||||
|
role: Optional[RoleEntity] = None
|
||||||
|
|||||||
@ -8,8 +8,9 @@ from app.application.roles_repository import RolesRepository
|
|||||||
from app.application.users_repository import UsersRepository
|
from app.application.users_repository import UsersRepository
|
||||||
from app.domain.entities.change_password import ChangePasswordEntity
|
from app.domain.entities.change_password import ChangePasswordEntity
|
||||||
from app.domain.entities.register import RegisterEntity
|
from app.domain.entities.register import RegisterEntity
|
||||||
|
from app.domain.entities.role import RoleEntity
|
||||||
from app.domain.entities.user import UserEntity
|
from app.domain.entities.user import UserEntity
|
||||||
from app.domain.models import User
|
from app.domain.models import User, Role
|
||||||
|
|
||||||
|
|
||||||
class UsersService:
|
class UsersService:
|
||||||
@ -25,7 +26,10 @@ class UsersService:
|
|||||||
detail='User was not found',
|
detail='User was not found',
|
||||||
)
|
)
|
||||||
|
|
||||||
return self.model_to_entity(user)
|
user_entity = self.model_to_entity(user)
|
||||||
|
user_entity.role = self.role_model_to_entity(user.role)
|
||||||
|
|
||||||
|
return user_entity
|
||||||
|
|
||||||
async def change_password(self, data: ChangePasswordEntity, current_user_id: int) -> Optional[UserEntity]:
|
async def change_password(self, data: ChangePasswordEntity, current_user_id: int) -> Optional[UserEntity]:
|
||||||
user = await self.users_repository.get_by_id(data.user_id)
|
user = await self.users_repository.get_by_id(data.user_id)
|
||||||
@ -136,6 +140,13 @@ class UsersService:
|
|||||||
|
|
||||||
return self.model_to_entity(user_model)
|
return self.model_to_entity(user_model)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def role_model_to_entity(role: Role) -> RoleEntity:
|
||||||
|
return RoleEntity(
|
||||||
|
id=role.id,
|
||||||
|
title=role.title,
|
||||||
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def is_strong_password(password: str) -> bool:
|
def is_strong_password(password: str) -> bool:
|
||||||
if len(password) < 8:
|
if len(password) < 8:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user