=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroup.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroup.java 2014-12-25 10:43:54 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroup.java 2014-12-29 13:28:30 +0000 @@ -137,6 +137,34 @@ } } + public void addManagedGroup( UserGroup group ) + { + managedGroups.add( group ); + group.getManagedByGroups().add( this ); + } + + public void removeManagedGroup( UserGroup group ) + { + managedByGroups.remove( group ); + group.getManagedByGroups().remove( this ); + } + + public void updateManagedGroups( Set updates ) + { + for ( UserGroup group : new HashSet<>( managedGroups ) ) + { + if ( !updates.contains( group ) ) + { + removeManagedGroup( group ); + } + } + + for ( UserGroup group : updates ) + { + addManagedGroup( group ); + } + } + // ------------------------------------------------------------------------- // Getters and setters // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/UserGroupDeletionHandler.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/UserGroupDeletionHandler.java 2014-03-18 08:10:10 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/UserGroupDeletionHandler.java 2014-12-29 13:28:30 +0000 @@ -28,7 +28,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.Iterator; +import java.util.Set; import org.hisp.dhis.system.deletion.DeletionHandler; import org.springframework.beans.factory.annotation.Autowired; @@ -67,11 +67,10 @@ @Override public void deleteUser( User user ) { - Iterator iterator = user.getGroups().iterator(); + Set userGroups = user.getGroups(); - while ( iterator.hasNext() ) + for ( UserGroup group : userGroups ) { - UserGroup group = iterator.next(); group.getMembers().remove( user ); userGroupService.updateUserGroup( group ); } === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/usergroup/AddUserGroupAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/usergroup/AddUserGroupAction.java 2014-12-28 17:51:04 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/usergroup/AddUserGroupAction.java 2014-12-29 13:28:30 +0000 @@ -28,14 +28,12 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.hisp.dhis.attribute.AttributeService; import org.hisp.dhis.system.util.AttributeUtils; -import org.hisp.dhis.user.User; import org.hisp.dhis.user.UserGroup; import org.hisp.dhis.user.UserGroupService; import org.hisp.dhis.user.UserService; @@ -74,9 +72,9 @@ // Parameters // ------------------------------------------------------------------------- - private List usersSelected; + private Set usersSelected = new HashSet<>(); - public void setUsersSelected( List usersSelected ) + public void setUsersSelected( Set usersSelected ) { this.usersSelected = usersSelected; } @@ -110,22 +108,11 @@ public String execute() throws Exception { - if ( usersSelected == null ) - { - usersSelected = new ArrayList<>(); - } - UserGroup userGroup = new UserGroup( name ); - for ( String userUid : usersSelected ) + for ( String uid : usersSelected ) { - User user = userService.getUser( userUid ); - - if ( user == null ) - { - continue; - } - userGroup.addUser( user ); + userGroup.addUser( userService.getUser( uid ) ); } if ( jsonAttributeValues != null ) @@ -134,15 +121,11 @@ attributeService ); } - Set managedGroups = new HashSet<>(); - - for ( String groupUid : userGroupsSelected ) + for ( String uid : userGroupsSelected ) { - UserGroup group = userGroupService.getUserGroup( groupUid ); - managedGroups.add( group ); + userGroup.addManagedGroup( userGroupService.getUserGroup( uid ) ); } - userGroup.setManagedGroups( managedGroups ); - + userGroupService.addUserGroup( userGroup ); return SUCCESS; === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/usergroup/UpdateUserGroupAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/usergroup/UpdateUserGroupAction.java 2014-12-28 17:51:04 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/usergroup/UpdateUserGroupAction.java 2014-12-29 13:28:30 +0000 @@ -28,14 +28,12 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.hisp.dhis.attribute.AttributeService; import org.hisp.dhis.system.util.AttributeUtils; -import org.hisp.dhis.user.CurrentUserService; import org.hisp.dhis.user.User; import org.hisp.dhis.user.UserGroup; import org.hisp.dhis.user.UserGroupService; @@ -53,13 +51,6 @@ this.userService = userService; } - private CurrentUserService currentUserService; - - public void setCurrentUserService( CurrentUserService currentUserService ) - { - this.currentUserService = currentUserService; - } - private UserGroupService userGroupService; public void setUserGroupService( UserGroupService userGroupService ) @@ -78,9 +69,9 @@ // Parameters // ------------------------------------------------------------------------- - private List usersSelected; + private Set usersSelected = new HashSet<>(); - public void setUsersSelected( List usersSelected ) + public void setUsersSelected( Set usersSelected ) { this.usersSelected = usersSelected; } @@ -121,33 +112,15 @@ public String execute() throws Exception { - if ( usersSelected == null ) - { - usersSelected = new ArrayList<>(); - } - + //TODO managed groups access control + UserGroup userGroup = userGroupService.getUserGroup( userGroupId ); - if ( !userGroup.getManagedByGroups().isEmpty() && !currentUserService.currentUserIsSuper() ) - { - //TODO: Allow user with F_USER_ADD_WITHIN_MANAGED_GROUP to modify their managed groups - //as long as they are not loosing or gaining users to manage. - - return ERROR; - } - Set users = new HashSet<>(); - for ( String userUid : usersSelected ) + for ( String uid : usersSelected ) { - User user = userService.getUser( userUid ); - - if ( user == null ) - { - continue; - } - - users.add( user ); + users.add( userService.getUser( uid ) ); } userGroup.setName( name ); @@ -157,16 +130,15 @@ { AttributeUtils.updateAttributeValuesFromJson( userGroup.getAttributeValues(), jsonAttributeValues, attributeService ); } - Set managedGroups = new HashSet<>(); - for ( String groupUid : userGroupsSelected ) + for ( String uid : userGroupsSelected ) { - UserGroup group = userGroupService.getUserGroup( groupUid ); - managedGroups.add( group ); + managedGroups.add( userGroupService.getUserGroup( uid ) ); } - userGroup.setManagedGroups(managedGroups); + + userGroup.updateManagedGroups( managedGroups ); userGroupService.updateUserGroup( userGroup ); === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/META-INF/dhis/beans.xml 2014-12-21 18:12:49 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/META-INF/dhis/beans.xml 2014-12-29 13:28:30 +0000 @@ -14,8 +14,7 @@ - + @@ -48,8 +47,7 @@ - + @@ -111,7 +109,8 @@ - + @@ -130,7 +129,6 @@ -