Skip to content

Commit dc3c493

Browse files
committed
fix: Userroles recipe multitenancy features
1 parent 93500de commit dc3c493

File tree

5 files changed

+38
-32
lines changed

5 files changed

+38
-32
lines changed

supertokens_python/recipe/userroles/asyncio/__init__.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,44 +17,50 @@
1717

1818

1919
async def add_role_to_user(
20-
user_id: str, role: str, user_context: Union[Dict[str, Any], None] = None
20+
tenant_id: str,
21+
user_id: str,
22+
role: str,
23+
user_context: Union[Dict[str, Any], None] = None,
2124
) -> Union[AddRoleToUserOkResult, UnknownRoleError]:
2225
if user_context is None:
2326
user_context = {}
2427
return await UserRolesRecipe.get_instance().recipe_implementation.add_role_to_user(
25-
user_id, role, user_context
28+
tenant_id, user_id, role, user_context
2629
)
2730

2831

2932
async def remove_user_role(
30-
user_id: str, role: str, user_context: Union[Dict[str, Any], None] = None
33+
tenant_id: str,
34+
user_id: str,
35+
role: str,
36+
user_context: Union[Dict[str, Any], None] = None,
3137
) -> Union[RemoveUserRoleOkResult, UnknownRoleError]:
3238
if user_context is None:
3339
user_context = {}
3440
return await UserRolesRecipe.get_instance().recipe_implementation.remove_user_role(
35-
user_id, role, user_context
41+
tenant_id, user_id, role, user_context
3642
)
3743

3844

3945
async def get_roles_for_user(
40-
user_id: str, user_context: Union[Dict[str, Any], None] = None
46+
tenant_id: str, user_id: str, user_context: Union[Dict[str, Any], None] = None
4147
) -> GetRolesForUserOkResult:
4248
if user_context is None:
4349
user_context = {}
4450
return (
4551
await UserRolesRecipe.get_instance().recipe_implementation.get_roles_for_user(
46-
user_id, user_context
52+
tenant_id, user_id, user_context
4753
)
4854
)
4955

5056

5157
async def get_users_that_have_role(
52-
role: str, user_context: Union[Dict[str, Any], None] = None
58+
tenant_id: str, role: str, user_context: Union[Dict[str, Any], None] = None
5359
) -> Union[GetUsersThatHaveRoleOkResult, UnknownRoleError]:
5460
if user_context is None:
5561
user_context = {}
5662
return await UserRolesRecipe.get_instance().recipe_implementation.get_users_that_have_role(
57-
role, user_context
63+
tenant_id, role, user_context
5864
)
5965

6066

supertokens_python/recipe/userroles/interfaces.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,25 +58,25 @@ def __init__(self, roles: List[str]):
5858
class RecipeInterface(ABC):
5959
@abstractmethod
6060
async def add_role_to_user(
61-
self, user_id: str, role: str, user_context: Dict[str, Any]
61+
self, tenant_id: str, user_id: str, role: str, user_context: Dict[str, Any]
6262
) -> Union[AddRoleToUserOkResult, UnknownRoleError]:
6363
pass
6464

6565
@abstractmethod
6666
async def remove_user_role(
67-
self, user_id: str, role: str, user_context: Dict[str, Any]
67+
self, tenant_id: str, user_id: str, role: str, user_context: Dict[str, Any]
6868
) -> Union[RemoveUserRoleOkResult, UnknownRoleError]:
6969
pass
7070

7171
@abstractmethod
7272
async def get_roles_for_user(
73-
self, user_id: str, user_context: Dict[str, Any]
73+
self, tenant_id: str, user_id: str, user_context: Dict[str, Any]
7474
) -> GetRolesForUserOkResult:
7575
pass
7676

7777
@abstractmethod
7878
async def get_users_that_have_role(
79-
self, role: str, user_context: Dict[str, Any]
79+
self, tenant_id: str, role: str, user_context: Dict[str, Any]
8080
) -> Union[GetUsersThatHaveRoleOkResult, UnknownRoleError]:
8181
pass
8282

supertokens_python/recipe/userroles/recipe.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,12 @@ def __init__(self) -> None:
146146
default_max_age_in_sec = 300
147147

148148
async def fetch_value(
149-
user_id: str, _tenant_id: str, user_context: Dict[str, Any]
149+
user_id: str, tenant_id: str, user_context: Dict[str, Any]
150150
) -> List[str]:
151151
recipe = UserRolesRecipe.get_instance()
152152

153153
user_roles = await recipe.recipe_implementation.get_roles_for_user(
154-
user_id, user_context
154+
user_id, tenant_id, user_context
155155
)
156156

157157
user_permissions: Set[str] = set()
@@ -181,11 +181,11 @@ def __init__(self) -> None:
181181
default_max_age_in_sec = 300
182182

183183
async def fetch_value(
184-
user_id: str, _tenant_id: str, user_context: Dict[str, Any]
184+
user_id: str, tenant_id: str, user_context: Dict[str, Any]
185185
) -> List[str]:
186186
recipe = UserRolesRecipe.get_instance()
187187
res = await recipe.recipe_implementation.get_roles_for_user(
188-
user_id, user_context
188+
user_id, tenant_id, user_context
189189
)
190190
return res.roles
191191

supertokens_python/recipe/userroles/recipe_implementation.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ def __init__(self, querier: Querier):
4040
self.querier = querier
4141

4242
async def add_role_to_user(
43-
self, user_id: str, role: str, user_context: Dict[str, Any]
43+
self, tenant_id: str, user_id: str, role: str, user_context: Dict[str, Any]
4444
) -> Union[AddRoleToUserOkResult, UnknownRoleError]:
4545
params = {"userId": user_id, "role": role}
4646
response = await self.querier.send_put_request(
47-
NormalisedURLPath("/recipe/user/role"), params
47+
NormalisedURLPath(f"{tenant_id}/recipe/user/role"), params
4848
)
4949
if response.get("status") == "OK":
5050
return AddRoleToUserOkResult(
@@ -53,11 +53,11 @@ async def add_role_to_user(
5353
return UnknownRoleError()
5454

5555
async def remove_user_role(
56-
self, user_id: str, role: str, user_context: Dict[str, Any]
56+
self, tenant_id: str, user_id: str, role: str, user_context: Dict[str, Any]
5757
) -> Union[RemoveUserRoleOkResult, UnknownRoleError]:
5858
params = {"userId": user_id, "role": role}
5959
response = await self.querier.send_post_request(
60-
NormalisedURLPath("/recipe/user/role/remove"), params
60+
NormalisedURLPath(f"{tenant_id}/recipe/user/role/remove"), params
6161
)
6262
if response["status"] == "OK":
6363
return RemoveUserRoleOkResult(
@@ -66,20 +66,20 @@ async def remove_user_role(
6666
return UnknownRoleError()
6767

6868
async def get_roles_for_user(
69-
self, user_id: str, user_context: Dict[str, Any]
69+
self, tenant_id: str, user_id: str, user_context: Dict[str, Any]
7070
) -> GetRolesForUserOkResult:
7171
params = {"userId": user_id}
7272
response = await self.querier.send_get_request(
73-
NormalisedURLPath("/recipe/user/roles"), params
73+
NormalisedURLPath(f"{tenant_id}/recipe/user/roles"), params
7474
)
7575
return GetRolesForUserOkResult(roles=response["roles"])
7676

7777
async def get_users_that_have_role(
78-
self, role: str, user_context: Dict[str, Any]
78+
self, tenant_id: str, role: str, user_context: Dict[str, Any]
7979
) -> Union[GetUsersThatHaveRoleOkResult, UnknownRoleError]:
8080
params = {"role": role}
8181
response = await self.querier.send_get_request(
82-
NormalisedURLPath("/recipe/role/users"), params
82+
NormalisedURLPath(f"{tenant_id}/recipe/role/users"), params
8383
)
8484
if response.get("status") == "OK":
8585
return GetUsersThatHaveRoleOkResult(users=response["users"])

supertokens_python/recipe/userroles/syncio/__init__.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,35 +31,35 @@
3131

3232

3333
def add_role_to_user(
34-
user_id: str, role: str, user_context: Union[Dict[str, Any], None] = None
34+
tenant_id: str, user_id: str, role: str, user_context: Union[Dict[str, Any], None] = None
3535
) -> Union[AddRoleToUserOkResult, UnknownRoleError]:
3636
from supertokens_python.recipe.userroles.asyncio import add_role_to_user
3737

38-
return sync(add_role_to_user(user_id, role, user_context))
38+
return sync(add_role_to_user(tenant_id, user_id, role, user_context))
3939

4040

4141
def remove_user_role(
42-
user_id: str, role: str, user_context: Union[Dict[str, Any], None] = None
42+
tenant_id: str, user_id: str, role: str, user_context: Union[Dict[str, Any], None] = None
4343
) -> Union[RemoveUserRoleOkResult, UnknownRoleError]:
4444
from supertokens_python.recipe.userroles.asyncio import remove_user_role
4545

46-
return sync(remove_user_role(user_id, role, user_context))
46+
return sync(remove_user_role(tenant_id, user_id, role, user_context))
4747

4848

4949
def get_roles_for_user(
50-
user_id: str, user_context: Union[Dict[str, Any], None] = None
50+
tenant_id: str, user_id: str, user_context: Union[Dict[str, Any], None] = None
5151
) -> GetRolesForUserOkResult:
5252
from supertokens_python.recipe.userroles.asyncio import get_roles_for_user
5353

54-
return sync(get_roles_for_user(user_id, user_context))
54+
return sync(get_roles_for_user(tenant_id, user_id, user_context))
5555

5656

5757
def get_users_that_have_role(
58-
role: str, user_context: Union[Dict[str, Any], None] = None
58+
tenant_id: str, role: str, user_context: Union[Dict[str, Any], None] = None
5959
) -> Union[GetUsersThatHaveRoleOkResult, UnknownRoleError]:
6060
from supertokens_python.recipe.userroles.asyncio import get_users_that_have_role
6161

62-
return sync(get_users_that_have_role(role, user_context))
62+
return sync(get_users_that_have_role(tenant_id, role, user_context))
6363

6464

6565
def create_new_role_or_add_permissions(

0 commit comments

Comments
 (0)