中文:收口权限与中心/立项配置改造
This commit is contained in:
@@ -95,7 +95,7 @@ def require_study_member():
|
||||
return dependency
|
||||
|
||||
|
||||
def require_study_roles(roles: Iterable[str]):
|
||||
def require_study_roles(roles: Iterable[str], *, allow_system_admin: bool = True):
|
||||
roles_set = set(roles)
|
||||
|
||||
async def dependency(
|
||||
@@ -104,7 +104,7 @@ def require_study_roles(roles: Iterable[str]):
|
||||
db: AsyncSession = Depends(get_db_session),
|
||||
):
|
||||
role_value = current_user.role.value if hasattr(current_user.role, "value") else current_user.role
|
||||
if role_value == "ADMIN":
|
||||
if allow_system_admin and role_value == "ADMIN":
|
||||
return current_user
|
||||
membership = await member_crud.get_member(db, study_id, current_user.id)
|
||||
if not membership or not membership.is_active or membership.role_in_study not in roles_set:
|
||||
|
||||
Reference in New Issue
Block a user