Skip to content

Commit 214aad9

Browse files
committed
fix: Add multitenancy features to emailpassword recipe
1 parent dc3c493 commit 214aad9

21 files changed

+115
-60
lines changed

supertokens_python/recipe/emailpassword/recipe_implementation.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ async def get_user_by_id(
6262
response["user"]["id"],
6363
response["user"]["email"],
6464
response["user"]["timeJoined"],
65+
response["user"]["tenantIds"],
6566
)
6667
return None
6768

@@ -77,6 +78,7 @@ async def get_user_by_email(
7778
response["user"]["id"],
7879
response["user"]["email"],
7980
response["user"]["timeJoined"],
81+
response["user"]["tenantIds"],
8082
)
8183
return None
8284

@@ -120,6 +122,7 @@ async def sign_in(
120122
response["user"]["id"],
121123
response["user"]["email"],
122124
response["user"]["timeJoined"],
125+
response["user"]["tenantIds"],
123126
)
124127
)
125128
return SignInWrongCredentialsError()
@@ -137,6 +140,7 @@ async def sign_up(
137140
response["user"]["id"],
138141
response["user"]["email"],
139142
response["user"]["timeJoined"],
143+
response["user"]["tenantIds"],
140144
)
141145
)
142146
return SignUpEmailAlreadyExistsError()

supertokens_python/recipe/emailpassword/types.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,13 @@
2121

2222

2323
class User:
24-
def __init__(self, user_id: str, email: str, time_joined: int):
25-
self.user_id: str = user_id
26-
self.email: str = email
27-
self.time_joined: int = time_joined
24+
def __init__(
25+
self, user_id: str, email: str, time_joined: int, tenant_ids: List[str]
26+
):
27+
self.user_id = user_id
28+
self.email = email
29+
self.time_joined = time_joined
30+
self.tenant_ids = tenant_ids
2831

2932

3033
class UsersResponse:

supertokens_python/recipe/passwordless/recipe_implementation.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ async def consume_code(
137137
email=email,
138138
phone_number=phone_number,
139139
time_joined=result["user"]["timeJoined"],
140+
tenant_ids=result["user"]["tenantIds"],
140141
)
141142
return ConsumeCodeOkResult(result["createdNewUser"], user)
142143
if result["status"] == "RESTART_FLOW_ERROR":
@@ -170,6 +171,7 @@ async def get_user_by_id(
170171
email=email,
171172
phone_number=phone_number,
172173
time_joined=result["user"]["timeJoined"],
174+
tenant_ids=result["user"]["tenantIds"],
173175
)
174176
return None
175177

@@ -191,6 +193,7 @@ async def get_user_by_email(
191193
user_id=result["user"]["id"],
192194
email=email_resp,
193195
phone_number=phone_number_resp,
196+
tenant_ids=result["user"]["tenantIds"],
194197
time_joined=result["user"]["timeJoined"],
195198
)
196199
return None
@@ -214,6 +217,7 @@ async def get_user_by_phone_number(
214217
email=email_resp,
215218
phone_number=phone_number_resp,
216219
time_joined=result["user"]["timeJoined"],
220+
tenant_ids=result["user"]["tenantIds"],
217221
)
218222
return None
219223

supertokens_python/recipe/passwordless/types.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,13 @@ def __init__(
3232
email: Union[str, None],
3333
phone_number: Union[str, None],
3434
time_joined: int,
35+
tenant_ids: List[str],
3536
):
36-
self.user_id: str = user_id
37-
self.email: Union[str, None] = email
38-
self.phone_number: Union[str, None] = phone_number
39-
self.time_joined: int = time_joined
37+
self.user_id = user_id
38+
self.email = email
39+
self.phone_number = phone_number
40+
self.time_joined = time_joined
41+
self.tenant_ids = tenant_ids
4042

4143

4244
class DeviceCode:

supertokens_python/recipe/thirdparty/recipe_implementation.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ async def get_user_by_id(
5353
response["user"]["id"],
5454
response["user"]["email"],
5555
response["user"]["timeJoined"],
56+
response["user"]["tenantIds"],
5657
ThirdPartyInfo(
5758
response["user"]["thirdParty"]["userId"],
5859
response["user"]["thirdParty"]["id"],
5960
),
60-
response["user"].get("tenantId"),
6161
)
6262
return None
6363

@@ -77,10 +77,10 @@ async def get_users_by_email(
7777
user["id"],
7878
user["email"],
7979
user["timeJoined"],
80+
response["user"]["tenantIds"],
8081
ThirdPartyInfo(
8182
user["thirdParty"]["userId"], user["thirdParty"]["id"]
8283
),
83-
response["user"].get("tenantId"),
8484
)
8585
)
8686
return users
@@ -103,11 +103,11 @@ async def get_user_by_thirdparty_info(
103103
response["user"]["id"],
104104
response["user"]["email"],
105105
response["user"]["timeJoined"],
106+
response["user"]["tenantIds"],
106107
ThirdPartyInfo(
107108
response["user"]["thirdParty"]["userId"],
108109
response["user"]["thirdParty"]["id"],
109110
),
110-
response["user"].get("tenantId"),
111111
)
112112
return None
113113

@@ -133,11 +133,11 @@ async def sign_in_up(
133133
response["user"]["id"],
134134
response["user"]["email"],
135135
response["user"]["timeJoined"],
136+
response["user"]["tenantIds"],
136137
ThirdPartyInfo(
137138
response["user"]["thirdParty"]["userId"],
138139
response["user"]["thirdParty"]["id"],
139140
),
140-
response["user"].get("tenantId"),
141141
),
142142
response["createdNewUser"],
143143
oauth_tokens,
@@ -164,11 +164,11 @@ async def manually_create_or_update_user(
164164
response["user"]["id"],
165165
response["user"]["email"],
166166
response["user"]["timeJoined"],
167+
response["user"]["tenantIds"],
167168
ThirdPartyInfo(
168169
response["user"]["thirdParty"]["userId"],
169170
response["user"]["thirdParty"]["id"],
170171
),
171-
response["user"].get("tenantId"),
172172
),
173173
response["createdNewUser"],
174174
)

supertokens_python/recipe/thirdparty/types.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,14 @@ def __init__(
3636
user_id: str,
3737
email: str,
3838
time_joined: int,
39+
tenant_ids: List[str],
3940
third_party_info: ThirdPartyInfo,
40-
tenant_id: Union[str, None],
4141
):
4242
self.user_id: str = user_id
4343
self.email: str = email
4444
self.time_joined: int = time_joined
45+
self.tenant_ids = tenant_ids
4546
self.third_party_info: ThirdPartyInfo = third_party_info
46-
self.tenant_id = tenant_id
4747

4848

4949
class UserInfoEmail:

supertokens_python/recipe/thirdpartyemailpassword/api/emailpassword_api_impementation.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,10 @@ async def sign_in_post(
7575
if isinstance(result, EmailPasswordSignInPostOkResult):
7676
return SignInPostOkResult(
7777
User(
78-
result.user.user_id, result.user.email, result.user.time_joined
78+
result.user.user_id,
79+
result.user.email,
80+
result.user.time_joined,
81+
result.user.tenant_ids,
7982
),
8083
result.session,
8184
)
@@ -98,7 +101,10 @@ async def sign_up_post(
98101
if isinstance(result, EmailPasswordSignUpPostOkResult):
99102
return SignUpPostOkResult(
100103
User(
101-
result.user.user_id, result.user.email, result.user.time_joined
104+
result.user.user_id,
105+
result.user.email,
106+
result.user.time_joined,
107+
result.user.tenant_ids,
102108
),
103109
result.session,
104110
)

supertokens_python/recipe/thirdpartyemailpassword/api/implementation.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ async def thirdparty_sign_in_up_post(
152152
result.user.user_id,
153153
result.user.email,
154154
result.user.time_joined,
155+
result.user.tenant_ids,
155156
result.user.third_party_info,
156157
),
157158
result.created_new_user,
@@ -178,6 +179,7 @@ async def emailpassword_sign_in_post(
178179
result.user.user_id,
179180
result.user.email,
180181
result.user.time_joined,
182+
result.user.tenant_ids,
181183
None,
182184
),
183185
result.session,
@@ -201,6 +203,7 @@ async def emailpassword_sign_up_post(
201203
result.user.user_id,
202204
result.user.email,
203205
result.user.time_joined,
206+
result.user.tenant_ids,
204207
None,
205208
),
206209
result.session,

supertokens_python/recipe/thirdpartyemailpassword/api/thirdparty_api_implementation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ async def sign_in_up_post(
7373
result.user.user_id,
7474
result.user.email,
7575
result.user.time_joined,
76+
result.user.tenant_ids,
7677
result.user.third_party_info,
77-
result.user.tenant_id,
7878
),
7979
result.created_new_user,
8080
result.session,

supertokens_python/recipe/thirdpartyemailpassword/recipeimplementation/email_password_recipe_implementation.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,10 @@ async def get_user_by_id(
5656
return None
5757

5858
return User(
59-
user_id=user.user_id, email=user.email, time_joined=user.time_joined
59+
user_id=user.user_id,
60+
email=user.email,
61+
time_joined=user.time_joined,
62+
tenant_ids=user.tenant_ids,
6063
)
6164

6265
async def get_user_by_email(
@@ -67,7 +70,10 @@ async def get_user_by_email(
6770
for user in users:
6871
if user.third_party_info is None:
6972
return User(
70-
user_id=user.user_id, email=user.email, time_joined=user.time_joined
73+
user_id=user.user_id,
74+
email=user.email,
75+
time_joined=user.time_joined,
76+
tenant_ids=user.tenant_ids,
7177
)
7278

7379
return None
@@ -96,7 +102,12 @@ async def sign_in(
96102
)
97103
if isinstance(result, EmailPasswordSignInOkResult):
98104
return SignInOkResult(
99-
User(result.user.user_id, result.user.email, result.user.time_joined)
105+
User(
106+
result.user.user_id,
107+
result.user.email,
108+
result.user.time_joined,
109+
result.user.tenant_ids,
110+
)
100111
)
101112
return result
102113

@@ -108,7 +119,12 @@ async def sign_up(
108119
)
109120
if isinstance(result, EmailPasswordSignUpOkResult):
110121
return SignUpOkResult(
111-
User(result.user.user_id, result.user.email, result.user.time_joined)
122+
User(
123+
result.user.user_id,
124+
result.user.email,
125+
result.user.time_joined,
126+
result.user.tenant_ids,
127+
)
112128
)
113129
return result
114130

supertokens_python/recipe/thirdpartyemailpassword/recipeimplementation/implementation.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ async def get_user_by_id(
131131
user_id=ep_user.user_id,
132132
email=ep_user.email,
133133
time_joined=ep_user.time_joined,
134+
tenant_ids=ep_user.tenant_ids,
134135
third_party_info=None,
135136
)
136137

@@ -144,6 +145,7 @@ async def get_user_by_id(
144145
user_id=tp_user.user_id,
145146
email=tp_user.email,
146147
time_joined=tp_user.time_joined,
148+
tenant_ids=tp_user.tenant_ids,
147149
third_party_info=tp_user.third_party_info,
148150
)
149151

@@ -158,6 +160,7 @@ async def get_users_by_email(
158160
User(
159161
user_id=ep_user.user_id,
160162
email=ep_user.email,
163+
tenant_ids=ep_user.tenant_ids,
161164
time_joined=ep_user.time_joined,
162165
third_party_info=None,
163166
)
@@ -173,6 +176,7 @@ async def get_users_by_email(
173176
User(
174177
user_id=tp_user.user_id,
175178
email=tp_user.email,
179+
tenant_ids=tp_user.tenant_ids,
176180
time_joined=tp_user.time_joined,
177181
third_party_info=tp_user.third_party_info,
178182
)
@@ -199,6 +203,7 @@ async def get_user_by_thirdparty_info(
199203
user_id=tp_user.user_id,
200204
email=tp_user.email,
201205
time_joined=tp_user.time_joined,
206+
tenant_ids=tp_user.tenant_ids,
202207
third_party_info=tp_user.third_party_info,
203208
)
204209

@@ -226,6 +231,7 @@ async def thirdparty_sign_in_up(
226231
result.user.user_id,
227232
result.user.email,
228233
result.user.time_joined,
234+
result.user.tenant_ids,
229235
result.user.third_party_info,
230236
),
231237
result.created_new_user,
@@ -253,6 +259,7 @@ async def thirdparty_manually_create_or_update_user(
253259
result.user.user_id,
254260
result.user.email,
255261
result.user.time_joined,
262+
result.user.tenant_ids,
256263
result.user.third_party_info,
257264
),
258265
result.created_new_user,
@@ -282,6 +289,7 @@ async def emailpassword_sign_in(
282289
result.user.user_id,
283290
result.user.email,
284291
result.user.time_joined,
292+
result.user.tenant_ids,
285293
None,
286294
)
287295
)
@@ -297,6 +305,7 @@ async def emailpassword_sign_up(
297305
result.user.user_id,
298306
result.user.email,
299307
result.user.time_joined,
308+
result.user.tenant_ids,
300309
None,
301310
)
302311
)

0 commit comments

Comments
 (0)