This commit is contained in:
Markos Gogoulos
2025-12-29 20:14:32 +02:00
parent fd5c0a2908
commit bde300b4bd

View File

@@ -259,8 +259,18 @@ def apply_lti_roles(user, platform, lti_roles, rbac_group):
if role_group: if role_group:
group_role = get_higher_privilege_group(group_role, role_group) group_role = get_higher_privilege_group(group_role, role_group)
# Create or update RBAC membership # Create or update RBAC membership (defensive: handle multiple memberships)
membership, created = RBACMembership.objects.update_or_create(user=user, rbac_group=rbac_group, defaults={'role': group_role}) memberships = RBACMembership.objects.filter(user=user, rbac_group=rbac_group)
if memberships.exists():
# Update all existing memberships to the correct role
for membership in memberships:
if membership.role != group_role:
membership.role = group_role
membership.save()
else:
# No existing membership, create new one
RBACMembership.objects.create(user=user, rbac_group=rbac_group, role=group_role)
return global_role, group_role return global_role, group_role