This commit is contained in:
Markos Gogoulos
2025-12-29 20:16:21 +02:00
parent bde300b4bd
commit 995faedb08

View File

@@ -263,14 +263,23 @@ def apply_lti_roles(user, platform, lti_roles, rbac_group):
memberships = RBACMembership.objects.filter(user=user, rbac_group=rbac_group) memberships = RBACMembership.objects.filter(user=user, rbac_group=rbac_group)
if memberships.exists(): if memberships.exists():
# Update all existing memberships to the correct role # Check if any membership already has the correct role
for membership in memberships: if not memberships.filter(role=group_role).exists():
if membership.role != group_role: # None have the correct role, update the first one
membership.role = group_role first_membership = memberships.first()
membership.save() first_membership.role = group_role
try:
first_membership.save()
except Exception:
# Save failed (e.g., uniqueness constraint), skip
pass
else: else:
# No existing membership, create new one # No existing membership, create new one
try:
RBACMembership.objects.create(user=user, rbac_group=rbac_group, role=group_role) RBACMembership.objects.create(user=user, rbac_group=rbac_group, role=group_role)
except Exception:
# Creation failed (e.g., uniqueness constraint), skip
pass
return global_role, group_role return global_role, group_role