← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 17826: User group, impl handling of bi-directional managed groups/managed by groups

 

------------------------------------------------------------
revno: 17826
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Mon 2014-12-29 14:28:30 +0100
message:
  User group, impl handling of bi-directional managed groups/managed by groups
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroup.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/UserGroupDeletionHandler.java
  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/UpdateUserGroupAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/META-INF/dhis/beans.xml


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== 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<UserGroup> 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<UserGroup> iterator = user.getGroups().iterator();
+        Set<UserGroup> 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<String> usersSelected;
+    private Set<String> usersSelected = new HashSet<>();
 
-    public void setUsersSelected( List<String> usersSelected )
+    public void setUsersSelected( Set<String> 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<UserGroup> 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<String> usersSelected;
+    private Set<String> usersSelected = new HashSet<>();
 
-    public void setUsersSelected( List<String> usersSelected )
+    public void setUsersSelected( Set<String> 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<User> 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<UserGroup> 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 @@
     <property name="attributeService" ref="org.hisp.dhis.attribute.AttributeService" />
   </bean>
 
-  <bean id="org.hisp.dhis.user.action.DeleteCurrentUserAction" class="org.hisp.dhis.user.action.DeleteCurrentUserAction"
-    scope="prototype">
+  <bean id="org.hisp.dhis.user.action.DeleteCurrentUserAction" class="org.hisp.dhis.user.action.DeleteCurrentUserAction" scope="prototype">
     <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
     <property name="passwordManager" ref="org.hisp.dhis.security.PasswordManager" />
     <property name="userService" ref="org.hisp.dhis.user.UserService" />
@@ -48,8 +47,7 @@
     <property name="attributeService" ref="org.hisp.dhis.attribute.AttributeService" />
   </bean>
 
-  <bean id="org.hisp.dhis.user.action.ValidateUserAction" class="org.hisp.dhis.user.action.ValidateUserAction"
-    scope="prototype">
+  <bean id="org.hisp.dhis.user.action.ValidateUserAction" class="org.hisp.dhis.user.action.ValidateUserAction" scope="prototype">
     <property name="userService" ref="org.hisp.dhis.user.UserService" />
   </bean>
 
@@ -111,7 +109,8 @@
     <property name="attributeService" ref="org.hisp.dhis.attribute.AttributeService" />
   </bean>
 
-  <bean id="org.hisp.dhis.user.action.usergroup.AddUserGroupFormAction" class="org.hisp.dhis.user.action.usergroup.AddUserGroupFormAction">
+  <bean id="org.hisp.dhis.user.action.usergroup.AddUserGroupFormAction" class="org.hisp.dhis.user.action.usergroup.AddUserGroupFormAction"
+    scope="prototype">
     <property name="attributeService" ref="org.hisp.dhis.attribute.AttributeService" />
   </bean>
 
@@ -130,7 +129,6 @@
   <bean id="org.hisp.dhis.user.action.usergroup.UpdateUserGroupAction" class="org.hisp.dhis.user.action.usergroup.UpdateUserGroupAction"
     scope="prototype">
     <property name="userService" ref="org.hisp.dhis.user.UserService" />
-    <property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
     <property name="userGroupService" ref="org.hisp.dhis.user.UserGroupService" />
     <property name="attributeService" ref="org.hisp.dhis.attribute.AttributeService" />
   </bean>