Skip to content

Commit 095fa5d

Browse files
committed
user service
1 parent 395e1ab commit 095fa5d

File tree

3 files changed

+36
-3
lines changed

3 files changed

+36
-3
lines changed

services/web/server/src/simcore_service_webserver/users/_users_repository.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from aiohttp import web
66
from common_library.users_enums import UserRole
77
from models_library.groups import GroupID
8+
from models_library.products import ProductName
89
from models_library.users import (
910
MyProfile,
1011
UserBillingDetails,
@@ -461,6 +462,28 @@ async def delete_user_by_id(
461462
return bool(deleted_user)
462463

463464

465+
async def is_user_in_product_name(
466+
engine: AsyncEngine,
467+
connection: AsyncConnection | None = None,
468+
*,
469+
user_id: UserID,
470+
product_name: ProductName,
471+
) -> bool:
472+
query = (
473+
sa.select(users.c.id)
474+
.select_from(
475+
users.join(
476+
user_to_groups,
477+
user_to_groups.c.uid == users.c.id,
478+
).join(products, products.c.group_id == user_to_groups.c.gid)
479+
)
480+
.where((users.c.id == user_id) & (products.c.name == product_name))
481+
)
482+
async with pass_or_acquire_connection(engine, connection) as conn:
483+
got_user_id = await conn.scalar(query)
484+
return got_user_id == user_id
485+
486+
464487
#
465488
# USER PROFILE
466489
#

services/web/server/src/simcore_service_webserver/users/_users_service.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,14 @@ async def get_users_in_group(app: web.Application, *, gid: GroupID) -> set[UserI
180180
get_guest_user_ids_and_names = _users_repository.get_guest_user_ids_and_names
181181

182182

183+
async def is_user_in_product(
184+
app: web.Application, *, user_id: UserID, product_name: ProductName
185+
) -> bool:
186+
return await _users_repository.is_user_in_product_name(
187+
get_asyncpg_engine(app), user_id=user_id, product_name=product_name
188+
)
189+
190+
183191
#
184192
# GET USER PROPERTIES
185193
#

services/web/server/src/simcore_service_webserver/users/api.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,17 @@
1414
get_user_primary_group_id,
1515
get_user_role,
1616
get_users_in_group,
17+
is_user_in_product,
1718
set_user_as_deleted,
1819
update_expired_users,
1920
)
2021

2122
__all__: tuple[str, ...] = (
23+
"FullNameDict",
24+
"UserDisplayAndIdNamesTuple",
2225
"delete_user_without_projects",
2326
"get_guest_user_ids_and_names",
27+
"get_user",
2428
"get_user_credentials",
2529
"get_user_display_and_id_names",
2630
"get_user_fullname",
@@ -29,11 +33,9 @@
2933
"get_user_name_and_email",
3034
"get_user_primary_group_id",
3135
"get_user_role",
32-
"get_user",
3336
"get_users_in_group",
37+
"is_user_in_product",
3438
"set_user_as_deleted",
3539
"update_expired_users",
36-
"FullNameDict",
37-
"UserDisplayAndIdNamesTuple",
3840
)
3941
# nopycln: file

0 commit comments

Comments
 (0)