•  
     
    story #13490 have a consistent management of project & groups members
Summary
project admin
have a consistent management of project & groups members

I can easily add/remove people to/from groups

1. Global consistency for private projects

This covers "Private" as well as "Private incl. Restricted" users. In both case, the management of restricted is not modified.

Scenario 1:

  • Given a user, not already project member
  • When I add her to any user group of the project (either "dynamic" like project admin, or static like "Developers)
  • Then the user is also added as project member.
  • And I have a "Warning" feedback telling me that user was also added as member of the project

2. Add a Synchronous Management of project members

Synchronous Project Member management means that there is no needed to explicitly managed "project_members" group in most cases, admins just have to add or remove people from groups and everything is kept in sync.

This is a new option at project administration level "Synchronous Project Members Management", it's set to "Off" by default. So, for existing installation, at the end of this story, nothing change except the "Global consistency for private projects" part.

When "Synchronous Project Members Management" is switched "On" for a project:

Scenario 2.1:

  • Given a user, not already project member
  • When I add her to any user group of the project
  • Then the user is also added as project member.
  • And I have a "Warning" feedback telling me that user was also added as member of the project

Scenario 2.2:

  • Given a user member of one user group of the project (admin, developers, ...)
  • When I remove her from project_member
  • User is also removed from all the other groups she belongs to
  • And I get a feedback message to inform me about that

Scenario 2.3:

  • Given a user member of one user group of the project (admin, developers, ...)
  • When I remove her from one group execpt project_member
  • Then I'm getting a confirmation modal "Do you want to remove XXX from the project ? XXX is also member of [list of groups] ?" with 3 options
    • "Yes, I want to remove XXX from the project"
    • "No, I want to remove XXX only from YYY group"
    • Cancel
  • And the user is removed from groups according to the choice above

Scenario 2.6:

  • When a user_group is removed
  • Then a confirmation modale is displayed to inform admin that users will remains project_members

Scenario 2.7

  • When a project with "synchronized project members" is used as a project template
  • Then on project creation, all user groups are duplicated with their members
  • And project members is duplicated with all members except project administrators
    • that would mean that administrators of templates would become member of all projects that are created on this base.

Scenario 3.0

  • When project visibility change from private to public
  • Then the flag "Synchronous Project Members Management" must be kept on (admin can disable if they want to)
Empty
Geoffroy Grelot (ggrelot)
Status
Empty
Done
Development
  • [ ] Does it involves User Interface? 
  • [ ] Are there any mockups?
  • [ ] Are permissions checked?
  • [ ] Does it need Javascript development?
  • [ ] Does it need a forge upgrade bucket?
  • [ ] Does it need to execute things in system events?
  • [ ] Does it impact project creation (templates)?
  • [ ] Is it exploratory?
Empty
Details
#13490
Manuel Vacelet (vaceletm)
2019-07-23 15:12
2019-06-14 16:17
4149

References
Referencing story #13490

Git commit

tuleap/tuleap/stable

Add read-only project admin configuration pane 0748ab19b2
Extract MemberAdder into a dedicated object 2e71e5ce43
Refactoring: Unit-test DynamicUGroupMembersUpdater 59de58322a
Add to project members in private projects ab77a765a3
Refactoring: use front router for project-members display aa2f4c6044
Add to project members in public projects with setting 6c207c220a
Inform about consistent project members management 92b1e9622e
SynchronizedProjectMembershipDetector is per project 419b1ee581
Convert UGroupBinding test to PHPUnit 19b0be3d20
Extract BoundUGroupRefresher 69944f2918
XML export/import of ugroups synchronization d9edaacef9
Show warning upon ugroup deletion beaaa2f728
Refactoring: extract removal of user from group into dedicated route bcaaab1ecb
Add to project members in bound ugroups ba172e8899
Extract removal of a ugroup logic in dedicated object 637b6b6421
Inherit synchronized membership setting at project creation 15cc3f4571
Allow admin to choose between removing from project or from group 92befe962e
Improve UX on synchronized project membership ac692e64fb
Fix Psalm errors 68f216357c
Revert "Add to project members in bound ugroups" 473c00df2a
REST Test for Public with synchronized membership 6ae85c1042
On project visibility change, activate synchronized project members flag 67369bc170
Do not show the "Synchronized" info when ugroup is not updatable e5e721df36
Be able to switch sync membership in project admin db3bcc05d9
At project creation, duplicate groups and members acb390496a
Dedicated route to add member to groups 6981e198f4
Unit-test Activation Controller 183bfe0813
Remove direct usage of account_add_user_obj_to_group d8efb93bf2
Refactor add of user to a project ac52edb166
Avoid too much feedback on project clone 8c7b95fa6e
Fix bug that prevent adding a user to a dynamic group (project admin) 7021dcb9d4

Follow-ups

User avatar

During the implementation we unveiled a set of issues with Bound groups (either internals or LDAP) that we identify too risky for current deployment. So in order to deliver the feature in the safest possible way we decided to revert the work initiated on Bound groups and to limit the functional scope of this story to groups within a project.

As the feature is not "complete" due to the lack of Bound groups we also removed from the scope of this the site admin part and took the "conservative" strategy to mandate manual activation of the feature.

We will create a dedicated story & discussion on how to handle properly Bound groups.


  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes
User avatar
  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes
User avatar
  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes
User avatar
  • I want to
    -have an homogenous management of project & groups members 
    +have a consistent management of project & groups members 
User avatar
  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes
  • CC list set to Geoffroy Grelot (ggrelot)
User avatar
  • So that
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes
  • Acceptance criteria
    Something went wrong, the follow up content couldn't be loaded
    Only formatting have been changed, you should switch to markup to see the changes