Compare commits
9 commits
d3400f53e4
...
9403e9291f
| Author | SHA1 | Date | |
|---|---|---|---|
| 9403e9291f | |||
| 3052565258 | |||
| 2f4b7b8733 | |||
| 5ec1f2272a | |||
| c6542f48c1 | |||
| 5104257a50 | |||
| 3ea782d68f | |||
| e4559b8ee4 | |||
| 7d109f0f73 |
4 changed files with 18 additions and 14 deletions
|
|
@ -86,7 +86,7 @@ async def get_group_permissions(group_model: group_model_query_dependency, org_m
|
||||||
|
|
||||||
@router.get("/group/users", response_model=IAMGetGroupUsersResponse)
|
@router.get("/group/users", response_model=IAMGetGroupUsersResponse)
|
||||||
async def get_group_users(group_model: group_model_query_dependency, org_model: org_model_root_claim_query_dependency):
|
async def get_group_users(group_model: group_model_query_dependency, org_model: org_model_root_claim_query_dependency):
|
||||||
if group_model.org_id == org_model.id:
|
if group_model.org_id != org_model.id:
|
||||||
raise UnauthorizedException()
|
raise UnauthorizedException()
|
||||||
return {"users": group_model.user_rel}
|
return {"users": group_model.user_rel}
|
||||||
|
|
||||||
|
|
@ -108,7 +108,7 @@ async def create_group(db: db_dependency, org_model: org_model_root_claim_body_d
|
||||||
|
|
||||||
@router.put("/group/permission", response_model=IAMPutGroupPermissionResponse)
|
@router.put("/group/permission", response_model=IAMPutGroupPermissionResponse)
|
||||||
async def add_group_permission(db: db_dependency, group_model: group_model_body_dependency, perm_model: perm_model_body_dependency, org_model: org_model_root_claim_body_dependency, request_model: IAMPutGroupPermissionRequest):
|
async def add_group_permission(db: db_dependency, group_model: group_model_body_dependency, perm_model: perm_model_body_dependency, org_model: org_model_root_claim_body_dependency, request_model: IAMPutGroupPermissionRequest):
|
||||||
if group_model.org_id == org_model.id:
|
if group_model.org_id != org_model.id:
|
||||||
raise UnauthorizedException()
|
raise UnauthorizedException()
|
||||||
|
|
||||||
if perm_model in group_model.permission_rel:
|
if perm_model in group_model.permission_rel:
|
||||||
|
|
@ -124,7 +124,7 @@ async def add_group_permission(db: db_dependency, group_model: group_model_body_
|
||||||
|
|
||||||
@router.put("/group/user")
|
@router.put("/group/user")
|
||||||
async def add_group_user(db: db_dependency, group_model: group_model_body_dependency, user_model: user_model_body_dependency, org_model: org_model_root_claim_body_dependency, request_model: IAMPutGroupUserRequest):
|
async def add_group_user(db: db_dependency, group_model: group_model_body_dependency, user_model: user_model_body_dependency, org_model: org_model_root_claim_body_dependency, request_model: IAMPutGroupUserRequest):
|
||||||
if group_model.org_id == org_model.id:
|
if group_model.org_id != org_model.id:
|
||||||
raise UnauthorizedException()
|
raise UnauthorizedException()
|
||||||
|
|
||||||
if user_model in group_model.user_rel:
|
if user_model in group_model.user_rel:
|
||||||
|
|
@ -139,7 +139,7 @@ async def add_group_user(db: db_dependency, group_model: group_model_body_depend
|
||||||
|
|
||||||
@router.delete("/group/permissions")
|
@router.delete("/group/permissions")
|
||||||
async def remove_group_permissions(db: db_dependency, group_model: group_model_body_dependency, perm_model: perm_model_body_dependency, org_model: org_model_root_claim_body_dependency, request_model: IAMDeleteGroupPermissionRequest):
|
async def remove_group_permissions(db: db_dependency, group_model: group_model_body_dependency, perm_model: perm_model_body_dependency, org_model: org_model_root_claim_body_dependency, request_model: IAMDeleteGroupPermissionRequest):
|
||||||
if group_model.org_id == org_model.id:
|
if group_model.org_id != org_model.id:
|
||||||
raise UnauthorizedException()
|
raise UnauthorizedException()
|
||||||
|
|
||||||
group_model.permission_rel.remove(perm_model)
|
group_model.permission_rel.remove(perm_model)
|
||||||
|
|
@ -152,7 +152,7 @@ async def remove_group_permissions(db: db_dependency, group_model: group_model_b
|
||||||
|
|
||||||
@router.delete("/group/user")
|
@router.delete("/group/user")
|
||||||
async def remove_group_user(db: db_dependency, group_model: group_model_body_dependency, user_model: user_model_body_dependency, org_model: org_model_root_claim_body_dependency, request_model: IAMDeleteGroupUserRequest):
|
async def remove_group_user(db: db_dependency, group_model: group_model_body_dependency, user_model: user_model_body_dependency, org_model: org_model_root_claim_body_dependency, request_model: IAMDeleteGroupUserRequest):
|
||||||
if group_model.org_id == org_model.id:
|
if group_model.org_id != org_model.id:
|
||||||
raise UnauthorizedException()
|
raise UnauthorizedException()
|
||||||
|
|
||||||
user_model.group_rel.remove(group_model)
|
user_model.group_rel.remove(group_model)
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ Models follow the nomenclature of:
|
||||||
"""
|
"""
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import EmailStr, ConfigDict
|
from pydantic import EmailStr, ConfigDict, Field
|
||||||
|
|
||||||
from src.organisation.schemas import OrgIDMixin
|
from src.organisation.schemas import OrgIDMixin
|
||||||
from src.schemas import CustomBaseModel
|
from src.schemas import CustomBaseModel
|
||||||
|
|
@ -16,6 +16,8 @@ from user.schemas import UserIDMixin
|
||||||
|
|
||||||
|
|
||||||
class UserSchema(CustomBaseModel):
|
class UserSchema(CustomBaseModel):
|
||||||
|
model_config = ConfigDict(from_attributes=True, extra="ignore")
|
||||||
|
|
||||||
id: int
|
id: int
|
||||||
first_name: str
|
first_name: str
|
||||||
last_name: str
|
last_name: str
|
||||||
|
|
@ -33,10 +35,10 @@ class GroupSchema(CustomBaseModel):
|
||||||
name: str
|
name: str
|
||||||
|
|
||||||
class GroupIDMixin(CustomBaseModel):
|
class GroupIDMixin(CustomBaseModel):
|
||||||
group_id: int
|
group_id: int = Field(gt=0)
|
||||||
|
|
||||||
class PermIDMixin(CustomBaseModel):
|
class PermIDMixin(CustomBaseModel):
|
||||||
permission_id: int
|
permission_id: int = Field(gt=0)
|
||||||
|
|
||||||
class IAMGetGroupPermissionsResponse(CustomBaseModel):
|
class IAMGetGroupPermissionsResponse(CustomBaseModel):
|
||||||
permissions: list[PermissionSchema]
|
permissions: list[PermissionSchema]
|
||||||
|
|
@ -45,19 +47,19 @@ class IAMGetGroupUsersResponse(CustomBaseModel):
|
||||||
users : list[UserSchema]
|
users : list[UserSchema]
|
||||||
|
|
||||||
class IAMPostGroupRequest(OrgIDMixin):
|
class IAMPostGroupRequest(OrgIDMixin):
|
||||||
name: str
|
name: str = Field(min_length=3)
|
||||||
|
|
||||||
class IAMPostGroupResponse(CustomBaseModel):
|
class IAMPostGroupResponse(CustomBaseModel):
|
||||||
group: GroupSchema
|
group: GroupSchema
|
||||||
|
|
||||||
class IAMPutGroupPermissionRequest(GroupIDMixin, PermIDMixin):
|
class IAMPutGroupPermissionRequest(GroupIDMixin, PermIDMixin, OrgIDMixin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class IAMPutGroupPermissionResponse(CustomBaseModel):
|
class IAMPutGroupPermissionResponse(CustomBaseModel):
|
||||||
group: GroupSchema
|
group: GroupSchema
|
||||||
permissions: list[PermissionSchema]
|
permissions: list[PermissionSchema]
|
||||||
|
|
||||||
class IAMPutGroupUserRequest(GroupIDMixin, UserIDMixin):
|
class IAMPutGroupUserRequest(GroupIDMixin, UserIDMixin, OrgIDMixin):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class IAMPutGroupUserResponse(CustomBaseModel):
|
class IAMPutGroupUserResponse(CustomBaseModel):
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ Models follow the nomenclature of:
|
||||||
"""
|
"""
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from pydantic import EmailStr, ConfigDict
|
from pydantic import EmailStr, ConfigDict, Field
|
||||||
|
|
||||||
from src.schemas import CustomBaseModel
|
from src.schemas import CustomBaseModel
|
||||||
from src.contact.schemas import ContactModel
|
from src.contact.schemas import ContactModel
|
||||||
|
|
@ -23,7 +23,7 @@ class Questionnaire(CustomBaseModel):
|
||||||
question_three: Optional[str] = None
|
question_three: Optional[str] = None
|
||||||
|
|
||||||
class OrgIDMixin(CustomBaseModel):
|
class OrgIDMixin(CustomBaseModel):
|
||||||
organisation_id: int
|
organisation_id: int = Field(gt=0)
|
||||||
|
|
||||||
|
|
||||||
class OrgPostOrgRequest(CustomBaseModel):
|
class OrgPostOrgRequest(CustomBaseModel):
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,13 @@
|
||||||
Pydantic models for the user module
|
Pydantic models for the user module
|
||||||
"""
|
"""
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
from pydantic import Field
|
||||||
|
|
||||||
from src.schemas import CustomBaseModel
|
from src.schemas import CustomBaseModel
|
||||||
|
|
||||||
|
|
||||||
class UserIDMixin(CustomBaseModel):
|
class UserIDMixin(CustomBaseModel):
|
||||||
user_id: int
|
user_id: int = Field(gt=0)
|
||||||
|
|
||||||
|
|
||||||
class OIDCClaims(CustomBaseModel):
|
class OIDCClaims(CustomBaseModel):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue