← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 17801: User management, improved performance of can update filter

 

------------------------------------------------------------
revno: 17801
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Fri 2014-12-26 14:22:45 +0100
message:
  User management, improved performance of can update filter
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserCredentials.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserService.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserService.java
  dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/filter/UserAuthorityGroupCanIssueFilter.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/DisableUserAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetOrgunitUserListAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetUserListAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/RemoveUserAction.java


--
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/UserCredentials.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserCredentials.java	2014-12-19 15:42:38 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserCredentials.java	2014-12-26 13:22:45 +0000
@@ -255,11 +255,11 @@
      * of this user credentials, or this user credentials must have the ALL
      * authority.
      *
-     * @param group                          the user authority group.
+     * @param group the user authority group.
      * @param canGrantOwnUserAuthorityGroups indicates whether this users can grant
-     *                                       its own authoritiy groups to others.
+     *        its own authority groups to others.
      */
-    public boolean canIssue( UserAuthorityGroup group, boolean canGrantOwnUserAuthorityGroups )
+    public boolean canIssueUserRole( UserAuthorityGroup group, boolean canGrantOwnUserAuthorityGroups )
     {
         if ( group == null )
         {
@@ -282,13 +282,34 @@
     }
 
     /**
+     * Indicates whether this user credentials can issue all of the user authority
+     * groups in the given collection.
+     *
+     * @param groups the collection of user authority groups.
+     * @param canGrantOwnUserAuthorityGroups indicates whether this users can grant
+     *        its own authority groups to others.
+     */
+    public boolean canIssueUserRoles( Collection<UserAuthorityGroup> groups, boolean canGrantOwnUserAuthorityGroups )
+    {
+        for ( UserAuthorityGroup group : groups )
+        {
+            if ( !canIssueUserRole( group, canGrantOwnUserAuthorityGroups ) )
+            {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
      * Indicates whether this user credentials can modify the given user
      * credentials. This user credentials must have the ALL authority or possess
      * all user authorities of the other user credentials to do so.
      *
      * @param other the user credentials to modify.
      */
-    public boolean canModify( UserCredentials other )
+    public boolean canModifyUser( UserCredentials other )
     {
         if ( other == null )
         {
@@ -306,27 +327,6 @@
     }
 
     /**
-     * Indicates whether this user credentials can issue all of the user authority
-     * groups in the given collection.
-     *
-     * @param groups                         the collection of user authority groups.
-     * @param canGrantOwnUserAuthorityGroups indicates whether this users can grant
-     *                                       its own authoritiy groups to others.
-     */
-    public boolean canIssueAll( Collection<UserAuthorityGroup> groups, boolean canGrantOwnUserAuthorityGroups )
-    {
-        for ( UserAuthorityGroup group : groups )
-        {
-            if ( !canIssue( group, canGrantOwnUserAuthorityGroups ) )
-            {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    /**
      * Return the name of this user credentials. More specifically, if this
      * credentials has a user it will return the first name and surname of that
      * user, if not it returns the username of this credentials.

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserService.java	2014-12-26 12:27:14 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserService.java	2014-12-26 13:22:45 +0000
@@ -326,16 +326,8 @@
      *
      * @param userCredentials the list of user credentials.
      */
-    void canUpdateFilter( Collection<UserCredentials> userCredentials );
+    void canUpdateUserCredentialsFilter( Collection<UserCredentials> userCredentials );
 
-    /**
-     * Is the current user allowed to update this user?
-     *
-     * @param userCredentials credentials to check for allowing update.
-     * @return true if current user can update this user, else false.
-     */
-    boolean canUpdate( UserCredentials userCredentials );
-    
     boolean credentialsNonExpired( UserCredentials credentials );
     
     // -------------------------------------------------------------------------

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserService.java	2014-12-26 12:27:14 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserService.java	2014-12-26 13:22:45 +0000
@@ -733,37 +733,35 @@
     @Override
     public void canUpdateUsersFilter( Collection<User> users )
     {
-        FilterUtils.filter( users,
-            new Filter<User>()
-            {
-                @Override
-                public boolean retain( User object )
-                {
-                    return canUpdate( object.getUserCredentials() );
-                }
-            }
-        );
-    }
-
-    @Override
-    public void canUpdateFilter( Collection<UserCredentials> userCredentials )
-    {
-        FilterUtils.filter( userCredentials,
-            new Filter<UserCredentials>()
-            {
-                @Override
-                public boolean retain( UserCredentials object )
-                {
-                    return canUpdate( object );
-                }
-            }
-        );
-    }
-
-    @Override
-    public boolean canUpdate( UserCredentials userCredentials )
-    {
-        return hasAuthorityToUpdateUser( userCredentials );
+        final UserCredentials currentUserCredentials = currentUserService.getCurrentUser().getUserCredentials();
+        final boolean canGrantOwnUserAuthorityGroups = (Boolean) systemSettingManager.getSystemSetting( KEY_CAN_GRANT_OWN_USER_AUTHORITY_GROUPS, false );
+
+        FilterUtils.filter( users, new Filter<User>() {
+            @Override
+            public boolean retain( User user )
+            {
+                UserCredentials userCredentials = user.getUserCredentials();
+                
+                return currentUserCredentials != null && userCredentials != null
+                    && currentUserCredentials.canIssueUserRoles( userCredentials.getUserAuthorityGroups(), canGrantOwnUserAuthorityGroups );
+            }
+        } );
+    }
+
+    @Override
+    public void canUpdateUserCredentialsFilter( Collection<UserCredentials> userCredentials )
+    {
+        final UserCredentials currentUserCredentials = currentUserService.getCurrentUser().getUserCredentials();
+        final boolean canGrantOwnUserAuthorityGroups = (Boolean) systemSettingManager.getSystemSetting( KEY_CAN_GRANT_OWN_USER_AUTHORITY_GROUPS, false );
+
+        FilterUtils.filter( userCredentials, new Filter<UserCredentials>() {
+            @Override
+            public boolean retain( UserCredentials userCredentials )
+            {
+                return currentUserCredentials != null && userCredentials != null
+                    && currentUserCredentials.canIssueUserRoles( userCredentials.getUserAuthorityGroups(), canGrantOwnUserAuthorityGroups );
+            }
+        } );
     }
 
     @Override
@@ -780,25 +778,4 @@
 
         return months < credentialsExpires;
     }
-
-    // -------------------------------------------------------------------------
-    // Supportive methods
-    // -------------------------------------------------------------------------
-
-    /**
-     * Determines if the current user has all the authorities required to
-     * update a user.
-     *
-     * @param userCredentials The user to be updated.
-     * @return true if current user has authorities, else false.
-     */
-    private boolean hasAuthorityToUpdateUser( UserCredentials userCredentials )
-    {
-        UserCredentials currentUserCredentials = currentUserService.getCurrentUser().getUserCredentials();
-
-        boolean canGrantOwnUserAuthorityGroups = (Boolean) systemSettingManager.getSystemSetting( KEY_CAN_GRANT_OWN_USER_AUTHORITY_GROUPS, false );
-
-        return currentUserCredentials != null && userCredentials != null
-                && currentUserCredentials.canIssueAll( userCredentials.getUserAuthorityGroups(), canGrantOwnUserAuthorityGroups );
-    }
 }

=== modified file 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/filter/UserAuthorityGroupCanIssueFilter.java'
--- dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/filter/UserAuthorityGroupCanIssueFilter.java	2014-03-23 18:26:50 +0000
+++ dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/filter/UserAuthorityGroupCanIssueFilter.java	2014-12-26 13:22:45 +0000
@@ -59,6 +59,6 @@
     @Override
     public boolean retain( UserAuthorityGroup group )
     {
-        return userCredentials != null && userCredentials.canIssue( group, canGrantOwnUserAuthorityGroups );
+        return userCredentials != null && userCredentials.canIssueUserRole( group, canGrantOwnUserAuthorityGroups );
     }
 }
\ No newline at end of file

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/DisableUserAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/DisableUserAction.java	2014-10-16 06:17:19 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/DisableUserAction.java	2014-12-26 13:22:45 +0000
@@ -79,7 +79,7 @@
             return ERROR;
         }
         
-        if ( !currentUser.getUserCredentials().canModify( credentials ) )
+        if ( !currentUser.getUserCredentials().canModifyUser( credentials ) )
         {
             return ERROR;
         }

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetOrgunitUserListAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetOrgunitUserListAction.java	2014-10-16 06:17:19 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetOrgunitUserListAction.java	2014-12-26 13:22:45 +0000
@@ -131,7 +131,7 @@
             }
         }
         
-        userService.canUpdateFilter( userCredentialsList );
+        userService.canUpdateUserCredentialsFilter( userCredentialsList );
         
         Collections.sort( userCredentialsList, new UsernameComparator() );
 

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetUserListAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetUserListAction.java	2014-10-16 06:17:19 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetUserListAction.java	2014-12-26 13:22:45 +0000
@@ -146,7 +146,7 @@
             Collections.sort( userCredentialsList, new UsernameComparator() );
         }
 
-        userService.canUpdateFilter( userCredentialsList );
+        userService.canUpdateUserCredentialsFilter( userCredentialsList );
 
         return SUCCESS;
     }

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/RemoveUserAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/RemoveUserAction.java	2014-11-25 03:16:09 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/RemoveUserAction.java	2014-12-26 13:22:45 +0000
@@ -104,7 +104,7 @@
             return ERROR;
         }
         
-        if ( !currentUser.getUserCredentials().canModify( user.getUserCredentials() ) )
+        if ( !currentUser.getUserCredentials().canModifyUser( user.getUserCredentials() ) )
         {
             return ERROR;
         }