Skip to content

Commit 6aaf2e2

Browse files
committed
✨ Check domain when validating users
1 parent eaa4d51 commit 6aaf2e2

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

apricot/oauth/oauth_data_adaptor.py

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def __init__(
4747
# Retrieve and validate user and group information
4848
annotated_groups, annotated_users = self._retrieve_entries()
4949
self.validated_groups = self._validate_groups(annotated_groups)
50-
self.validated_users = self._validate_users(annotated_users)
50+
self.validated_users = self._validate_users(annotated_users, domain)
5151
if self.debug:
5252
log.msg(
5353
f"Validated {len(self.validated_groups)} groups and {len(self.validated_users)} users.",
@@ -195,34 +195,41 @@ def _validate_groups(
195195
)
196196
except ValidationError as exc:
197197
name = group_dict.get("cn", "unknown")
198-
log.msg(f"Validation failed for group '{name}'.")
198+
log.msg(f"... group '{name}' failed validation.")
199199
for error in exc.errors():
200200
log.msg(
201-
f"... '{error['loc'][0]}': {error['msg']} but '{error['input']}' was provided.",
201+
f" -> '{error['loc'][0]}': {error['msg']} but '{error['input']}' was provided.",
202202
)
203203
return output
204204

205205
def _validate_users(
206206
self: Self,
207207
annotated_users: list[tuple[JSONDict, list[type[LDAPObjectClass]]]],
208+
domain: str,
208209
) -> list[LDAPAttributeAdaptor]:
209210
"""Return a list of LDAPAttributeAdaptors representing validated user data."""
210211
if self.debug:
211212
log.msg(f"Attempting to validate {len(annotated_users)} users.")
212213
output = []
213214
for user_dict, required_classes in annotated_users:
215+
name = user_dict.get("cn", "unknown")
214216
try:
215-
output.append(
216-
LDAPAttributeAdaptor.from_attributes(
217-
user_dict,
218-
required_classes=required_classes,
219-
),
220-
)
217+
if (user_domain := user_dict.get("domain", None)) == domain:
218+
output.append(
219+
LDAPAttributeAdaptor.from_attributes(
220+
user_dict,
221+
required_classes=required_classes,
222+
),
223+
)
224+
else:
225+
log.msg(f"... user '{name}' failed validation.")
226+
log.msg(
227+
f" -> 'domain': expected '{domain}' but '{user_domain}' was provided.",
228+
)
221229
except ValidationError as exc:
222-
name = user_dict.get("cn", "unknown")
223-
log.msg(f"Validation failed for user '{name}'.")
230+
log.msg(f"... user '{name}' failed validation.")
224231
for error in exc.errors():
225232
log.msg(
226-
f"... '{error['loc'][0]}': {error['msg']} but '{error['input']}' was provided.",
233+
f" -> '{error['loc'][0]}': {error['msg']} but '{error['input']}' was provided.",
227234
)
228235
return output

0 commit comments

Comments
 (0)