未知(继上次中断)
This commit is contained in:
@@ -9,6 +9,7 @@ from app.core.exceptions import AppException
|
||||
from app.core.security import decode_token, oauth2_scheme
|
||||
from app.crud import user as user_crud
|
||||
from app.crud import member as member_crud
|
||||
from app.crud import site as site_crud
|
||||
from app.db.session import SessionLocal
|
||||
from app.schemas.user import TokenPayload
|
||||
|
||||
@@ -117,6 +118,24 @@ def require_study_roles(roles: Iterable[str]):
|
||||
return dependency
|
||||
|
||||
|
||||
async def get_cra_site_scope(
|
||||
db: AsyncSession,
|
||||
study_id: uuid.UUID,
|
||||
current_user,
|
||||
) -> tuple[set[uuid.UUID], set[str]] | None:
|
||||
role_value = current_user.role.value if hasattr(current_user.role, "value") else current_user.role
|
||||
if role_value == "ADMIN":
|
||||
return None
|
||||
membership = await member_crud.get_member(db, study_id, current_user.id)
|
||||
if not membership or not membership.is_active:
|
||||
return None
|
||||
if membership.role_in_study != "CRA":
|
||||
return None
|
||||
site_ids = await site_crud.list_ids_by_contact_user(db, study_id, current_user.id)
|
||||
site_names = await site_crud.list_names_by_contact_user(db, study_id, current_user.id)
|
||||
return site_ids, site_names
|
||||
|
||||
|
||||
def require_study_not_locked():
|
||||
"""检查项目是否被锁定,如果锁定则拒绝所有修改请求"""
|
||||
from app.crud import study as study_crud
|
||||
|
||||
Reference in New Issue
Block a user