Skip to content

Commit 1719634

Browse files
check wallet permission on project open
1 parent 5fe4d98 commit 1719634

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

services/web/server/src/simcore_service_webserver/projects/_controller/projects_states_rest.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,12 @@ async def open_project(request: web.Request) -> web.Response:
9292
)
9393

9494
# Check if projects wallet is not in debt
95-
await projects_wallets_service.check_project_financial_status(
95+
await projects_wallets_service.check_project_financial_status_and_wallet_access(
9696
request.app,
9797
project_id=path_params.project_id,
98+
user_id=req_ctx.user_id,
9899
product_name=req_ctx.product_name,
99100
)
100-
# Check if user has access to a project wallet (Useful for simultaneous access to project by different users)
101-
project_wallet = await projects_wallets_service.get_project_wallet(
102-
request.app,
103-
project_id=path_params.project_id,
104-
)
105101

106102
product: Product = products_web.get_current_product(request)
107103
app_settings = get_application_settings(request.app)

services/web/server/src/simcore_service_webserver/projects/_wallets_service.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,23 @@ async def get_project_wallet(app, project_id: ProjectID) -> WalletGet | None:
3636
return wallet
3737

3838

39-
async def check_project_financial_status(
40-
app, *, project_id: ProjectID, product_name: ProductName
39+
async def check_project_financial_status_and_wallet_access(
40+
app, *, project_id: ProjectID, user_id: UserID, product_name: ProductName
4141
):
4242
db: ProjectDBAPI = ProjectDBAPI.get_from_app_context(app)
4343

4444
current_project_wallet = await db.get_project_wallet(project_uuid=project_id)
4545
rpc_client = get_rabbitmq_rpc_client(app)
4646

4747
if current_project_wallet:
48+
# ensure the wallet can be used by the user
49+
await wallets_service.get_wallet_by_user(
50+
app,
51+
user_id=user_id,
52+
wallet_id=current_project_wallet.wallet_id,
53+
product_name=product_name,
54+
)
55+
4856
# Do not allow to open project if the project connected wallet is in DEBT!
4957
project_wallet_credits_in_debt = (
5058
await credit_transactions.get_project_wallet_total_credits(

services/web/server/src/simcore_service_webserver/projects/projects_wallets_service.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
from ._wallets_service import (
2-
check_project_financial_status,
2+
check_project_financial_status_and_wallet_access,
33
connect_wallet_to_project,
44
get_project_wallet,
55
)
66

77
__all__: tuple[str, ...] = (
8-
"check_project_financial_status",
8+
"check_project_financial_status_and_wallet_access",
99
"connect_wallet_to_project",
1010
"get_project_wallet",
1111
)

0 commit comments

Comments
 (0)