Bevinding #34647
closedAlfresco API /people/{personId}/sites geeft niet de correcte rol terug
100%
Description
Als de gebruiker lid is van een site via meerdere bronnen tegelijkertijd (bijvoorbeeld via meerdere groepen en/of direct) dan verwacht ik om de leidende rol terug te krijgen, met de ranking:
- manager
- collaborator
- contributor
- consumer
- manager
- contributor
- consumer
- collaborator
Bijvoorbeeld: als de gebruiker lid is van drie groepen en de eerste groep collaborator is in de site, de tweede groep contributor is en de derde groep consumer is, dan is de gebruiker lid van de site met rol collaborator, want deze is de hoogste van de drie rollen. Dit wordt correct teruggeven door api /api/sites/{shortname}/memberships https://github.com/Alfresco/alfresco-community-repo/blob/master/remote-api/src/main/resources/alfresco/templates/webscripts/org/alfresco/repository/site/membership/memberships.get.desc.xml en door de share UI. Api /people/{personId}/sites geeft rol 'contributor' terug.
Na een eerste analyse, lijkt het probleem in deze logica te zijn https://github.com/Alfresco/alfresco-community-repo/blob/master/repository/src/main/java/org/alfresco/repo/site/SiteServiceImpl.java#L3094Site memberships worden op basis van de lijst van gebruikersgroep geëvalueerd. Als de gebruiker lid is van site x met rol consumer, dan is hij/zij lid van GROUP_site_x_SiteConsumer, en zo voort voor de andere rollen.
In deze logica worden alle gebruikersgroepen opgehaald. Ik vermoed in alfabetische volgorde.
Deze groepen worden achter elkaar geëvalueerd om de site membership te bepalen en elke site membership overschrijft de vorige.
In het bovenstaande voorbeeld is de gebruiker lid van
- GROUP_site_x_siteCollaborator
- GROUP_site_x_siteConsumer
- GROUP_site_x_siteContributor
in alfabetische volgorde, dus rol 'collaborator' wordt volgens deze logica overschreven door alle andere rollen.
Files

