dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #34751
[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>