2026-05-25 09:05:17 +01:00
|
|
|
"""
|
2026-05-26 16:25:14 +01:00
|
|
|
Pydantic models for the IAM module
|
2026-05-25 09:05:17 +01:00
|
|
|
|
|
|
|
|
Models:
|
|
|
|
|
- List: Description
|
|
|
|
|
- Models: Description
|
2026-05-26 16:25:14 +01:00
|
|
|
"""
|
|
|
|
|
from typing import Optional
|
|
|
|
|
|
|
|
|
|
from pydantic import EmailStr, ConfigDict
|
|
|
|
|
|
2026-05-27 12:21:03 +01:00
|
|
|
from src.organisation.schemas import OrgIDMixin
|
2026-05-26 16:25:14 +01:00
|
|
|
from src.schemas import CustomBaseModel
|
|
|
|
|
|
|
|
|
|
class UserResponse(CustomBaseModel):
|
|
|
|
|
id: int
|
|
|
|
|
first_name: str
|
|
|
|
|
last_name: str
|
|
|
|
|
email: EmailStr
|
|
|
|
|
|
|
|
|
|
class PermissionResponse(CustomBaseModel):
|
|
|
|
|
model_config = ConfigDict(from_attributes=True, extra="ignore")
|
|
|
|
|
|
|
|
|
|
service_name: str
|
|
|
|
|
resource: str
|
|
|
|
|
action: str
|
|
|
|
|
|
|
|
|
|
class GroupResponse(CustomBaseModel):
|
|
|
|
|
id: int
|
|
|
|
|
name: str
|
|
|
|
|
|
2026-05-27 11:11:19 +01:00
|
|
|
class GroupIDMixin(CustomBaseModel):
|
|
|
|
|
group_id: int
|
|
|
|
|
|
|
|
|
|
class PermIDMixin(CustomBaseModel):
|
|
|
|
|
permission_id: int
|
|
|
|
|
|
2026-05-26 16:25:14 +01:00
|
|
|
class IAMGetGroupPermissionsResponse(CustomBaseModel):
|
|
|
|
|
permissions: list[PermissionResponse]
|
|
|
|
|
|
|
|
|
|
class IAMGetGroupUsersResponse(CustomBaseModel):
|
|
|
|
|
users : list[UserResponse]
|
|
|
|
|
|
2026-05-27 12:21:03 +01:00
|
|
|
class IAMPostGroupRequest(OrgIDMixin):
|
2026-05-26 16:25:14 +01:00
|
|
|
name: str
|
|
|
|
|
|
|
|
|
|
class IAMPostGroupResponse(CustomBaseModel):
|
|
|
|
|
group: GroupResponse
|
|
|
|
|
|
2026-05-27 11:11:19 +01:00
|
|
|
class IAMPutGroupPermissionRequest(GroupIDMixin, PermIDMixin):
|
|
|
|
|
pass
|
2026-05-26 16:25:14 +01:00
|
|
|
|
|
|
|
|
class IAMPutGroupPermissionResponse(CustomBaseModel):
|
|
|
|
|
group: GroupResponse
|
|
|
|
|
permissions: list[PermissionResponse]
|
|
|
|
|
|
2026-05-27 11:11:19 +01:00
|
|
|
class IAMPutGroupUserRequest(GroupIDMixin):
|
2026-05-26 16:25:14 +01:00
|
|
|
user_id: int
|
|
|
|
|
|
|
|
|
|
class IAMPutGroupUserResponse(CustomBaseModel):
|
|
|
|
|
group: GroupResponse
|
|
|
|
|
users: list[UserResponse]
|
|
|
|
|
|
2026-05-27 11:11:19 +01:00
|
|
|
class IAMDeleteGroupPermissionRequest(GroupIDMixin, PermIDMixin):
|
|
|
|
|
pass
|
2026-05-26 16:25:14 +01:00
|
|
|
|
|
|
|
|
class IAMDeleteGroupPermissionResponse(CustomBaseModel):
|
|
|
|
|
group: GroupResponse
|
|
|
|
|
permissions: list[PermissionResponse]
|
|
|
|
|
|
2026-05-27 11:11:19 +01:00
|
|
|
class IAMDeleteGroupUserRequest(GroupIDMixin):
|
2026-05-26 16:25:14 +01:00
|
|
|
user_id: int
|
|
|
|
|
|
|
|
|
|
class IAMDeleteGroupUserResponse(CustomBaseModel):
|
|
|
|
|
group: GroupResponse
|
|
|
|
|
users: list[UserResponse]
|
|
|
|
|
|
|
|
|
|
class IAMGetPermissionsResponse(CustomBaseModel):
|
|
|
|
|
permissions: list[PermissionResponse]
|
|
|
|
|
|
|
|
|
|
class IAMPostPermissionRequest(CustomBaseModel):
|
|
|
|
|
service_id: int
|
|
|
|
|
resource: str
|
|
|
|
|
action: str
|
|
|
|
|
|
|
|
|
|
class IAMPostPermissionResponse(CustomBaseModel):
|
|
|
|
|
permission: PermissionResponse
|
|
|
|
|
|
2026-05-27 11:11:19 +01:00
|
|
|
class IAMDeletePermissionRequest(PermIDMixin):
|
|
|
|
|
pass
|
2026-05-26 16:25:14 +01:00
|
|
|
|
|
|
|
|
class IAMGetPermissionsSearchRequest(CustomBaseModel):
|
|
|
|
|
service_id: Optional[int] = None
|
|
|
|
|
resource: Optional[str] = None
|
|
|
|
|
action: Optional[str] = None
|
|
|
|
|
|
|
|
|
|
class IAMGetPermissionsSearchResponse(CustomBaseModel):
|
|
|
|
|
permissions: list[PermissionResponse]
|