Commit 629021f0 authored by 陈涛's avatar 陈涛

Merge remote-tracking branch 'origin/main'

parents 86339fda cedccfff
This diff is collapsed.
...@@ -93,13 +93,18 @@ async def update( ...@@ -93,13 +93,18 @@ async def update(
fund_id: str, fund_id: str,
update_fund_data: UpdateFund, update_fund_data: UpdateFund,
user: User = Depends(get_current_user), user: User = Depends(get_current_user),
permission_user_collect: AgnosticCollection = Depends(get_permission_user_collect),
permission_role_collect: AgnosticCollection = Depends(get_permission_role_collect),
fund_collect: AgnosticCollection = Depends(get_fund_collect) fund_collect: AgnosticCollection = Depends(get_fund_collect)
): ):
# 验证权限
await check_permission(['data_permission.fund.update_info'], fund_id, user.email, permission_user_collect,
permission_role_collect)
db_update_data = update_fund_data.dict(exclude_unset=True) db_update_data = update_fund_data.dict(exclude_unset=True)
db_update_data.update({ db_update_data.update({
"update_time": int(datetime.datetime.utcnow().timestamp()) "update_time": int(datetime.datetime.utcnow().timestamp())
}) })
data = await fund_collect.find_one_and_update({'id': fund_id, 'user_id': user.id}, {'$set': db_update_data}, data = await fund_collect.find_one_and_update({'id': fund_id}, {'$set': db_update_data},
return_document=ReturnDocument.AFTER) return_document=ReturnDocument.AFTER)
assert data, NotFundError() assert data, NotFundError()
response_model = fund_type_map[data['fund_type']] response_model = fund_type_map[data['fund_type']]
...@@ -116,11 +121,10 @@ async def get( ...@@ -116,11 +121,10 @@ async def get(
permission_role_collect: AgnosticCollection = Depends(get_permission_role_collect) permission_role_collect: AgnosticCollection = Depends(get_permission_role_collect)
): ):
# 验证权限 # 验证权限
if not await check_permission(['data_permission.fund.query_info'], fund_id, user.email, permission_user_collect, await check_permission(['data_permission.fund.query_info'], fund_id, user.email, permission_user_collect,
permission_role_collect): permission_role_collect)
raise FundPermissionError()
data = await fund_collect.find_one({'id': fund_id, 'user_id': user.id}) data = await fund_collect.find_one({'id': fund_id})
assert data, NotFundError() assert data, NotFundError()
response_model = fund_type_map[data['fund_type']] response_model = fund_type_map[data['fund_type']]
...@@ -149,7 +153,7 @@ async def get( ...@@ -149,7 +153,7 @@ async def get(
fund_id = item['fund_id'] fund_id = item['fund_id']
task = g.create_task( task = g.create_task(
check_permission(['data_permission.fund.query_info'], fund_id, user.email, permission_user_collect, check_permission(['data_permission.fund.query_info'], fund_id, user.email, permission_user_collect,
permission_role_collect)) permission_role_collect, raise_exception=False))
tasks[fund_id] = task tasks[fund_id] = task
auth_fund_list = [k for k, v in tasks.items() if v.result()] auth_fund_list = [k for k, v in tasks.items() if v.result()]
......
...@@ -28,17 +28,14 @@ async def create_permission( ...@@ -28,17 +28,14 @@ async def create_permission(
): ):
# 检查是否有权限添加用户 # 检查是否有权限添加用户
assert 'admin' not in create_user_info.roles, FundPermissionError() # 不可添加admin assert 'admin' not in create_user_info.roles, FundPermissionError() # 不可添加admin
is_auth = await check_permission([f'member_permission.{role}.add' for role in create_user_info.roles], await check_permission([f'member_permission.{role}.add' for role in create_user_info.roles],
create_user_info.fund_id, create_user_info.fund_id,
user.email, permission_user_collect, user.email, permission_user_collect,
permission_role_collect) permission_role_collect)
if is_auth: query = {"fund_id": create_user_info.fund_id, "email": create_user_info.email}
query = {"fund_id": create_user_info.fund_id, "email": create_user_info.email} update = {"$addToSet": {"roles": {"$each": create_user_info.roles}}}
update = {"$addToSet": {"roles": {"$each": create_user_info.roles}}} await permission_user_collect.update_one(query, update, upsert=True)
await permission_user_collect.update_one(query, update, upsert=True) return Response(data='')
return Response(data='')
else:
raise FundPermissionError()
@router.delete('/user/', @router.delete('/user/',
...@@ -53,17 +50,14 @@ async def delete_permission( ...@@ -53,17 +50,14 @@ async def delete_permission(
): ):
# 检查是否有权限添加用户 # 检查是否有权限添加用户
assert 'admin' not in delete_user_info.roles, FundPermissionError('无法删除 admin') # 不可删除admin assert 'admin' not in delete_user_info.roles, FundPermissionError('无法删除 admin') # 不可删除admin
is_auth = await check_permission([f'member_permission.{role}.add' for role in delete_user_info.roles], await check_permission([f'member_permission.{role}.add' for role in delete_user_info.roles],
delete_user_info.fund_id, delete_user_info.fund_id,
user.email, permission_user_collect, user.email, permission_user_collect,
permission_role_collect) permission_role_collect)
if is_auth: query = {"fund_id": delete_user_info.fund_id, "email": delete_user_info.email}
query = {"fund_id": delete_user_info.fund_id, "email": delete_user_info.email} update = {"$pull": {"roles": {"$in": delete_user_info.roles}}}
update = {"$pull": {"roles": {"$each": delete_user_info.roles}}} await permission_user_collect.update_one(query, update, upsert=True)
await permission_user_collect.update_one(query, update, upsert=True) return Response(data='')
return Response(data='')
else:
raise FundPermissionError()
@router.get('/user/', @router.get('/user/',
...@@ -135,7 +129,7 @@ async def query_fund_all_users( ...@@ -135,7 +129,7 @@ async def query_fund_all_users(
@router.post('/auth/', @router.post('/auth/',
response_model=Response[List[AllUsers]], response_model=BaseResponse,
summary='添加角色权限', summary='添加角色权限',
description='添加角色权限') description='添加角色权限')
async def add_role_permission( async def add_role_permission(
...@@ -159,7 +153,7 @@ async def add_role_permission( ...@@ -159,7 +153,7 @@ async def add_role_permission(
@router.delete('/auth/', @router.delete('/auth/',
response_model=Response[List[AllUsers]], response_model=BaseResponse,
summary='删除角色权限', summary='删除角色权限',
description='删除角色权限') description='删除角色权限')
async def remove_role_permission( async def remove_role_permission(
...@@ -176,7 +170,7 @@ async def remove_role_permission( ...@@ -176,7 +170,7 @@ async def remove_role_permission(
assert ('admin' in roles or 'fund_manager' in roles), FundPermissionError() assert ('admin' in roles or 'fund_manager' in roles), FundPermissionError()
query = {"fund_id": update_role.fund_id, "name": update_role.name} query = {"fund_id": update_role.fund_id, "name": update_role.name}
update = {"$pull": {"permissions": {"$each": update_role.permissions}}} update = {"$pull": {"permissions": {"$in": update_role.permissions}}}
await permission_role_collect.update_one(query, update, upsert=True) await permission_role_collect.update_one(query, update, upsert=True)
return Response(data='') return Response(data='')
......
...@@ -47,10 +47,10 @@ async def create_staking( ...@@ -47,10 +47,10 @@ async def create_staking(
async def update_bill( async def update_bill(
bill_id: str, fund_id: str, user_id: str, update_data: [], fund_collect, bill_collect, bill_id: str, fund_id: str, update_data: [], fund_collect, bill_collect,
res_model: Type[DataT] res_model: Type[DataT]
) -> Response[DataT]: ) -> Response[DataT]:
fund = await fund_collect.find_one({'id': fund_id, 'user_id': user_id}) fund = await fund_collect.find_one({'id': fund_id})
assert fund, NotFundError() assert fund, NotFundError()
db_update_data = update_data.dict(exclude_unset=True) db_update_data = update_data.dict(exclude_unset=True)
db_update_data.update({ db_update_data.update({
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment