← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 1257: Fix bug: Allowed to remove superuser user role

 

------------------------------------------------------------
revno: 1257
committer: Tran Chau <tran.hispvietnam@xxxxxxxxx>
branch nick: trunk
timestamp: Mon 2009-12-21 15:11:39 +0700
message:
  Fix bug: Allowed to remove superuser user role
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserAuthorityGroup.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserCredentials.java
  dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/security/AbstractAutomaticAccessProvider.java
  dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/security/DatabaseAutomaticAccessProvider.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/AddRoleAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleListAction.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/RemoveRoleAction.java
  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/UpdateRoleAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allRole.vm
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allUser.vm
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/javascript/role.js


--
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/UserAuthorityGroup.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserAuthorityGroup.java	2009-09-26 09:41:54 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserAuthorityGroup.java	2009-12-21 08:11:39 +0000
@@ -36,9 +36,13 @@
 /**
  * @author Nguyen Hong Duc
  * @version $Id: UserAuthorityGroup.java 5701 2008-09-14 20:34:46Z larshelg $
+ * @version $Id: UserAuthorityGroup.java 339942 2009-12-21 10:21:03Z chauthutran $
  */
 public class UserAuthorityGroup
 {
+
+	public static final String SUPER_USER_GROUP = "Superuser";
+	
     private int id;
 
     /**

=== 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	2009-06-17 22:06:54 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserCredentials.java	2009-12-21 08:11:39 +0000
@@ -34,10 +34,16 @@
 /**
  * @author Nguyen Hong Duc
  * @version $Id: UserCredentials.java 2869 2007-02-20 14:26:09Z andegje $
+ * @version $Id: UserCredentials.java 339942 2009-12-21 10:21:03Z chauthutran $
  */
 public class UserCredentials
     implements Serializable
 {    
+	
+	public static final String SUPER_USER_NAME = "admin";
+	
+	public static final String SUPER_USER_PASSWORD = "district";
+	
     private int id;
 
     /**

=== modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/security/AbstractAutomaticAccessProvider.java'
--- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/security/AbstractAutomaticAccessProvider.java	2009-03-03 16:46:36 +0000
+++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/security/AbstractAutomaticAccessProvider.java	2009-12-21 08:11:39 +0000
@@ -66,6 +66,7 @@
     // -------------------------------------------------------------------------
 
     protected abstract void initialise();
+    
 
     public final void init()
     {
@@ -81,7 +82,7 @@
 
     protected boolean isEnabled()
     {
-        return userStore.getAllUsers().size() == 0;
+        return ( userStore.getAllUsers().size() == 0);
     }
 
     protected Collection<String> getAuthorities()

=== modified file 'dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/security/DatabaseAutomaticAccessProvider.java'
--- dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/security/DatabaseAutomaticAccessProvider.java	2009-03-03 16:46:36 +0000
+++ dhis-2/dhis-web/dhis-web-commons/src/main/java/org/hisp/dhis/security/DatabaseAutomaticAccessProvider.java	2009-12-21 08:11:39 +0000
@@ -35,57 +35,58 @@
 
 /**
  * @author Torgeir Lorange Ostby
- * @version $Id: DatabaseAutomaticAccessProvider.java 3513 2007-08-04 16:16:40Z torgeilo $
+ * @version $Id: DatabaseAutomaticAccessProvider.java 3513 2007-08-04 16:16:40Z
+ *          torgeilo $
+ * @version $Id: DatabaseAutomaticAccessProvider.java 339942 2009-12-21 10:21:03Z 
+ * 			chauthutran $
  */
-public class DatabaseAutomaticAccessProvider
-    extends AbstractAutomaticAccessProvider
-{
-    // -------------------------------------------------------------------------
-    // Dependencies
-    // -------------------------------------------------------------------------
-
-    private PasswordManager passwordManager;
-
-    public void setPasswordManager( PasswordManager passwordManager )
-    {
-        this.passwordManager = passwordManager;
-    }
-
-    // -------------------------------------------------------------------------
-    // AdminAccessManager implementation
-    // -------------------------------------------------------------------------
-
-    public void initialise()
-    {
-        // ---------------------------------------------------------------------
-        // Assumes no UserAuthorityGroup called "Superuser" in database
-        // ---------------------------------------------------------------------
-
-        String username = "admin";
-        String password = "district";
-
-        User user = new User();
-        user.setFirstName( username );
-        user.setSurname( username );
-
-        userStore.addUser( user );
-
-        UserAuthorityGroup userAuthorityGroup = new UserAuthorityGroup();
-        userAuthorityGroup.setName( "Superuser" );
-        userAuthorityGroup.setAuthorities( new HashSet<String>( getAuthorities() ) );
-
-        userStore.addUserAuthorityGroup( userAuthorityGroup );
-
-        UserCredentials userCredentials = new UserCredentials();
-        userCredentials.setUsername( username );
-        userCredentials.setPassword( passwordManager.encodePassword( username, password ) );
-        userCredentials.setUser( user );
-        userCredentials.getUserAuthorityGroups().add( userAuthorityGroup );
-
-        userStore.addUserCredentials( userCredentials );
-    }
-
-    public void access()
-    {
-    }
+public class DatabaseAutomaticAccessProvider extends
+		AbstractAutomaticAccessProvider {
+	// -------------------------------------------------------------------------
+	// Dependencies
+	// -------------------------------------------------------------------------
+
+	private PasswordManager passwordManager;
+
+	public void setPasswordManager(PasswordManager passwordManager) {
+		this.passwordManager = passwordManager;
+	}
+
+	// -------------------------------------------------------------------------
+	// AdminAccessManager implementation
+	// -------------------------------------------------------------------------
+
+	public void initialise() {
+		// ---------------------------------------------------------------------
+		// Assumes no UserAuthorityGroup called "Superuser" in database
+		// ---------------------------------------------------------------------
+
+		String username = UserCredentials.SUPER_USER_NAME;
+		String password = UserCredentials.SUPER_USER_PASSWORD;
+
+		User user = new User();
+		user.setFirstName(username);
+		user.setSurname(username);
+
+		userStore.addUser(user);
+
+		UserAuthorityGroup userAuthorityGroup = new UserAuthorityGroup();
+		userAuthorityGroup.setName(UserAuthorityGroup.SUPER_USER_GROUP);
+		userAuthorityGroup
+				.setAuthorities(new HashSet<String>(getAuthorities()));
+
+		userStore.addUserAuthorityGroup(userAuthorityGroup);
+
+		UserCredentials userCredentials = new UserCredentials();
+		userCredentials.setUsername(username);
+		userCredentials.setPassword(passwordManager.encodePassword(username,
+				password));
+		userCredentials.setUser(user);
+		userCredentials.getUserAuthorityGroups().add(userAuthorityGroup);
+		
+		userStore.addUserCredentials(userCredentials);
+	}
+
+	public void access() {
+	}
 }

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/AddRoleAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/AddRoleAction.java	2009-09-26 09:41:54 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/AddRoleAction.java	2009-12-21 08:11:39 +0000
@@ -136,11 +136,11 @@
 
             group.getReportExcels().add( reportExcel );
         }
-
-        group.getAuthorities().addAll( selectedListAuthority );
-
-        userStore.addUserAuthorityGroup( group );
-
+        
+	    group.getAuthorities().addAll( selectedListAuthority );
+	
+	    userStore.addUserAuthorityGroup( group );
+        
         return SUCCESS;
     }
 }

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleAction.java	2009-09-26 09:41:54 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleAction.java	2009-12-21 08:11:39 +0000
@@ -154,7 +154,7 @@
         throws Exception
     {
         userAuthorityGroup = userStore.getUserAuthorityGroup( id );
-
+        
         // ---------------------------------------------------------------------
         // DataSets
         // ---------------------------------------------------------------------

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleListAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleListAction.java	2009-08-20 08:17:49 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetRoleListAction.java	2009-12-21 08:11:39 +0000
@@ -39,40 +39,44 @@
  * @author Thanh Nguyen
  * @version $Id: GetRoleListAction.java 4079 2007-11-20 11:42:23Z larshelg $
  */
-public class GetRoleListAction
-    implements Action
-{
-    // -------------------------------------------------------------------------
-    // Dependencies
-    // -------------------------------------------------------------------------
-
-    private UserStore userStore;
-
-    public void setUserStore( UserStore userStore )
-    {
-        this.userStore = userStore;
-    }
-
-    // -------------------------------------------------------------------------
-    // Output
-    // -------------------------------------------------------------------------
-
-    private List<UserAuthorityGroup> userAuthorityGroups;
-
-    public List<UserAuthorityGroup> getUserAuthorityGroups()
-    {
-        return userAuthorityGroups;
-    }
-
-    // -------------------------------------------------------------------------
-    // Action implementation
-    // -------------------------------------------------------------------------
-
-    public String execute()
-        throws Exception
-    {
-        userAuthorityGroups = new ArrayList<UserAuthorityGroup>( userStore.getAllUserAuthorityGroups() );
-
-        return SUCCESS;
-    }
+public class GetRoleListAction implements Action {
+	// -------------------------------------------------------------------------
+	// Dependencies
+	// -------------------------------------------------------------------------
+
+	private UserStore userStore;
+
+	public void setUserStore(UserStore userStore) {
+		this.userStore = userStore;
+	}
+
+	private String superuserRole;
+
+	public String getSuperuserRole() {
+		return superuserRole;
+	}
+
+	// -------------------------------------------------------------------------
+	// Output
+	// -------------------------------------------------------------------------
+
+	private List<UserAuthorityGroup> userAuthorityGroups;
+
+	public List<UserAuthorityGroup> getUserAuthorityGroups() {
+		return userAuthorityGroups;
+	}
+
+	// -------------------------------------------------------------------------
+	// Action implementation
+	// -------------------------------------------------------------------------
+
+	public String execute() throws Exception {
+		
+		superuserRole = UserAuthorityGroup.SUPER_USER_GROUP;
+		
+		userAuthorityGroups = new ArrayList<UserAuthorityGroup>(userStore
+				.getAllUserAuthorityGroups());
+
+		return SUCCESS;
+	}
 }

=== 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	2009-08-20 08:17:49 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/GetUserListAction.java	2009-12-21 08:11:39 +0000
@@ -56,12 +56,19 @@
     {
         this.userStore = userStore;
     }
+    
+    private String userAdmin;
+    
 
+    public String getUserAdmin() {
+		return userAdmin;
+	}
     // -------------------------------------------------------------------------
     // Output
     // -------------------------------------------------------------------------
 
-    private List<UserCredentials> userCredentialsList;
+
+	private List<UserCredentials> userCredentialsList;
 
     public List<UserCredentials> getUserCredentialsList()
     {
@@ -74,6 +81,8 @@
 
     public String execute() throws Exception
     {
+    	userAdmin = UserCredentials.SUPER_USER_NAME;
+    	
         Collection<User> users = userStore.getAllUsers();
 
         userCredentialsList = new ArrayList<UserCredentials>();

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/RemoveRoleAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/RemoveRoleAction.java	2009-08-20 08:17:49 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/RemoveRoleAction.java	2009-12-21 08:11:39 +0000
@@ -27,54 +27,73 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+import java.sql.BatchUpdateException;
+
+import org.hibernate.exception.ConstraintViolationException;
+import org.hisp.dhis.i18n.I18n;
+import org.hisp.dhis.i18n.I18nFormat;
 import org.hisp.dhis.user.UserAuthorityGroup;
+import org.hisp.dhis.user.UserCredentials;
 import org.hisp.dhis.user.UserStore;
+import org.springframework.dao.DataIntegrityViolationException;
 
 import com.opensymphony.xwork2.Action;
 
 /**
  * @author Thanh Nguyen
  * @version $Id: RemoveRoleAction.java 5724 2008-09-18 14:37:01Z larshelg $
+ * @version $Id: RemoveRoleAction.java 339942 2009-12-21 10:21:03Z chauthutran $
  */
-public class RemoveRoleAction
-    implements Action
-{
-    // -------------------------------------------------------------------------
-    // Dependencies
-    // -------------------------------------------------------------------------
-
-    private UserStore userStore;
-
-    public void setUserStore( UserStore userStore )
-    {
-        this.userStore = userStore;
-    }
-
-    // -------------------------------------------------------------------------
-    // Input
-    // -------------------------------------------------------------------------
-
-    private Integer id;
-
-    public void setId( Integer id )
-    {
-        this.id = id;
-    }
-
-    // -------------------------------------------------------------------------
-    // Action implementation
-    // -------------------------------------------------------------------------
-    
-    public String execute()
-        throws Exception
-    {
-        UserAuthorityGroup authorityGroup = userStore.getUserAuthorityGroup( id );
-        
-        if ( authorityGroup != null )
-        {
-            userStore.deleteUserAuthorityGroup( authorityGroup );
-        }
-        
-        return SUCCESS;
-    }
+public class RemoveRoleAction implements Action {
+	// -------------------------------------------------------------------------
+	// Dependencies
+	// -------------------------------------------------------------------------
+
+	private UserStore userStore;
+
+	public void setUserStore(UserStore userStore) {
+		this.userStore = userStore;
+	}
+
+	// -------------------------------------------------------------------------
+	// Input
+	// -------------------------------------------------------------------------
+
+	private Integer id;
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	private String message;
+
+	public String getMessage() {
+		return message;
+	}
+
+	private I18n i18n;
+
+	public void setI18n(I18n i18n) {
+		this.i18n = i18n;
+	}
+
+	// -------------------------------------------------------------------------
+	// Action implementation
+	// -------------------------------------------------------------------------
+
+	public String execute() throws Exception {
+		
+		UserAuthorityGroup authorityGroup = userStore.getUserAuthorityGroup(id);
+
+		if (authorityGroup != null) {
+			try{
+				userStore.deleteUserAuthorityGroup(authorityGroup);
+			}catch(DataIntegrityViolationException e){
+				message = i18n.getString("user_use_group");
+				return ERROR;	
+			}
+		}
+
+		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	2009-08-20 08:17:49 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/RemoveUserAction.java	2009-12-21 08:11:39 +0000
@@ -29,8 +29,10 @@
 
 import java.util.Collection;
 
+import org.hisp.dhis.i18n.I18n;
 import org.hisp.dhis.user.CurrentUserService;
 import org.hisp.dhis.user.User;
+import org.hisp.dhis.user.UserCredentials;
 import org.hisp.dhis.user.UserSetting;
 import org.hisp.dhis.user.UserStore;
 
@@ -72,6 +74,18 @@
         this.id = id;
     }
 
+    private String message;
+
+	public String getMessage() {
+		return message;
+	}
+
+	private I18n i18n;
+
+	public void setI18n(I18n i18n) {
+		this.i18n = i18n;
+	}
+	
     // -------------------------------------------------------------------------
     // Action implementation
     // -------------------------------------------------------------------------

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/UpdateRoleAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/UpdateRoleAction.java	2009-11-25 04:45:30 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/UpdateRoleAction.java	2009-12-21 08:11:39 +0000
@@ -32,6 +32,7 @@
 
 import org.hisp.dhis.dataset.DataSet;
 import org.hisp.dhis.dataset.DataSetService;
+import org.hisp.dhis.i18n.I18n;
 import org.hisp.dhis.reportexcel.ReportExcel;
 import org.hisp.dhis.reportexcel.ReportExcelService;
 import org.hisp.dhis.user.UserAuthorityGroup;
@@ -43,115 +44,115 @@
  * @author Thanh Nguyen
  * @version $Id: UpdateRoleAction.java 5701 2008-09-14 20:34:46Z larshelg $
  */
-public class UpdateRoleAction
-    implements Action
-{
-    // -------------------------------------------------------------------------
-    // Dependencies
-    // -------------------------------------------------------------------------
-
-    private UserStore userStore;
-
-    public void setUserStore( UserStore userStore )
-    {
-        this.userStore = userStore;
-    }
-
-    private DataSetService dataSetService;
-
-    public void setDataSetService( DataSetService dataSetService )
-    {
-        this.dataSetService = dataSetService;
-    }
-
-    private ReportExcelService reportExcelService;
-
-    public void setReportExcelService( ReportExcelService reportExcelService )
-    {
-        this.reportExcelService = reportExcelService;
-    }
-
-    // -------------------------------------------------------------------------
-    // Input
-    // -------------------------------------------------------------------------
-
-    private Integer id;
-
-    public void setId( Integer id )
-    {
-        this.id = id;
-    }
-
-    private String name;
-
-    public void setName( String rolename )
-    {
-        this.name = rolename;
-    }
-
-    private String description;
-
-    public void setDescription( String description )
-    {
-        this.description = description;
-    }
-
-    private Collection<String> selectedList = new ArrayList<String>();
-
-    public void setSelectedList( Collection<String> selectedList )
-    {
-        this.selectedList = selectedList;
-    }
-
-    private Collection<String> selectedListAuthority = new ArrayList<String>();
-
-    public void setSelectedListAuthority( Collection<String> selectedListAuthority )
-    {
-        this.selectedListAuthority = selectedListAuthority;
-    }
-
-    private Collection<String> selectedReportExcel = new ArrayList<String>();
-
-    public void setSelectedReportExcel( Collection<String> selectedReportExcel )
-    {
-        this.selectedReportExcel = selectedReportExcel;
-    }
-
-    // -------------------------------------------------------------------------
-    // Action implementation
-    // -------------------------------------------------------------------------
-
-    public String execute()
-        throws Exception
-    {
-        UserAuthorityGroup group = userStore.getUserAuthorityGroup( id );
-
-        group.setName( name );
-        group.setDescription( description );
-
-        group.getDataSets().clear();
-        group.getAuthorities().clear();
-        group.getReportExcels().clear();
-
-        for ( String id : selectedList )
-        {
-            DataSet dataSet = dataSetService.getDataSet( Integer.parseInt( id ) );
-
-            group.getDataSets().add( dataSet );
-        }
-
-        for ( String id : selectedReportExcel )
-        {
-
-            ReportExcel reportExcel = reportExcelService.getReportExcel( Integer.parseInt( id ) );
-
-            group.getReportExcels().add( reportExcel );
-        }
-
-        group.getAuthorities().addAll( selectedListAuthority );
-
-        userStore.updateUserAuthorityGroup( group );
-
-        return SUCCESS;
-    }
+public class UpdateRoleAction implements Action {
+	// -------------------------------------------------------------------------
+	// Dependencies
+	// -------------------------------------------------------------------------
+
+	private UserStore userStore;
+
+	public void setUserStore(UserStore userStore) {
+		this.userStore = userStore;
+	}
+
+	private DataSetService dataSetService;
+
+	public void setDataSetService(DataSetService dataSetService) {
+		this.dataSetService = dataSetService;
+	}
+
+	private ReportExcelService reportExcelService;
+
+	public void setReportExcelService(ReportExcelService reportExcelService) {
+		this.reportExcelService = reportExcelService;
+	}
+
+	private String message;
+
+	public String getMessage() {
+		return message;
+	}
+
+	private I18n i18n;
+
+	public void setI18n(I18n i18n) {
+		this.i18n = i18n;
+	}
+
+	// -------------------------------------------------------------------------
+	// Input
+	// -------------------------------------------------------------------------
+
+	private Integer id;
+
+	public void setId(Integer id) {
+		this.id = id;
+	}
+
+	private String name;
+
+	public void setName(String rolename) {
+		this.name = rolename;
+	}
+
+	private String description;
+
+	public void setDescription(String description) {
+		this.description = description;
+	}
+
+	private Collection<String> selectedList = new ArrayList<String>();
+
+	public void setSelectedList(Collection<String> selectedList) {
+		this.selectedList = selectedList;
+	}
+
+	private Collection<String> selectedListAuthority = new ArrayList<String>();
+
+	public void setSelectedListAuthority(
+			Collection<String> selectedListAuthority) {
+		this.selectedListAuthority = selectedListAuthority;
+	}
+
+	private Collection<String> selectedReportExcel = new ArrayList<String>();
+
+	public void setSelectedReportExcel(Collection<String> selectedReportExcel) {
+		this.selectedReportExcel = selectedReportExcel;
+	}
+
+	// -------------------------------------------------------------------------
+	// Action implementation
+	// -------------------------------------------------------------------------
+
+	public String execute() throws Exception {
+		
+		UserAuthorityGroup group = userStore.getUserAuthorityGroup(id);
+
+		group.setName(name);
+		group.setDescription(description);
+
+		group.getDataSets().clear();
+		group.getAuthorities().clear();
+		group.getReportExcels().clear();
+
+		for (String id : selectedList) {
+			DataSet dataSet = dataSetService.getDataSet(Integer.parseInt(id));
+
+			group.getDataSets().add(dataSet);
+		}
+
+		for (String id : selectedReportExcel) {
+
+			ReportExcel reportExcel = reportExcelService.getReportExcel(Integer
+					.parseInt(id));
+
+			group.getReportExcels().add(reportExcel);
+		}
+
+		group.getAuthorities().addAll(selectedListAuthority);
+		
+		userStore.updateUserAuthorityGroup(group);
+
+		return SUCCESS;
+	}
 }

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties	2009-12-21 05:32:40 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties	2009-12-21 08:11:39 +0000
@@ -192,3 +192,4 @@
 intro_user_by_orgunit = Create, modify, view and delete users for a given organisation unit.
 intro_user_role = Create, modify, view and delete user roles. A user role has a set of authorities.
 intro_change_password = Change the password for users.
+user_use_group = There are users used this role
\ No newline at end of file

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allRole.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allRole.vm	2009-11-03 10:54:57 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allRole.vm	2009-12-21 08:11:39 +0000
@@ -1,3 +1,4 @@
+<span id="message" style="top:70px;right:5px;position:fixed;width:200px;z-index:100009" onclick="hideById(this.id);"></span>
 
 <h3>$i18n.getString( "user_role_management" )</h3>
 
@@ -26,8 +27,16 @@
 				<tr>
 					<td#alternate( $mark )>$!encoder.htmlEncode( $userAuthorityGroup.name )</td>
 					<td#alternate( $mark )>$!encoder.htmlEncode( $userAuthorityGroup.description )</td>
-					<td style="text-align:center"#alternate( $mark )><a href="showUpdateRoleForm.action?id=$userAuthorityGroup.id" title="$i18n.getString( "edit" )"><img src="../images/edit.png" alt="$i18n.getString( "edit" )"></a></td>
-					<td style="text-align:center"#alternate( $mark )><a href="javascript:removeRole( $userAuthorityGroup.id, '$encoder.jsEncode( $userAuthorityGroup.name )' )" title="$i18n.getString( "remove" )"><img src="../images/delete.png" alt="$i18n.getString( "remove" )"></a></td>
+					<td style="text-align:center"#alternate( $mark )>
+						#if($userAuthorityGroup.name != $!encoder.htmlEncode( $superuserRole))
+							<a href="showUpdateRoleForm.action?id=$userAuthorityGroup.id" title="$i18n.getString( "edit" )"><img src="../images/edit.png" alt="$i18n.getString( "edit" )"></a>
+						#end
+					</td>
+					<td style="text-align:center"#alternate( $mark )>
+						#if($userAuthorityGroup.name != $!encoder.htmlEncode( $superuserRole))
+							<a href="javascript:removeRole( $userAuthorityGroup.id, '$encoder.jsEncode( $userAuthorityGroup.name )' )" title="$i18n.getString( "remove" )"><img src="../images/delete.png" alt="$i18n.getString( "remove" )"></a>
+						#end
+					</td>
                     <td style="text-align:center"#alternate( $mark )><a href="javascript:showRoleDetails( $userAuthorityGroup.id )" title="$i18n.getString( "show_details" )"><img src="../images/information.png" alt="$i18n.getString( "show_details" )"></a></td>
 				</tr>
 				#if( $mark )

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allUser.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allUser.vm	2009-05-20 09:47:08 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/allUser.vm	2009-12-21 08:11:39 +0000
@@ -30,8 +30,15 @@
 					<td#alternate( $mark )>$encoder.htmlEncode( $userCredentials.username )</td>
 					<td#alternate( $mark )>$encoder.htmlEncode( $userCredentials.user.surname ), $encoder.htmlEncode( $userCredentials.user.firstName )</td>
 					<td#alternate( $mark )>$!encoder.htmlEncode( $userCredentials.user.organisationUnit.name )</td>
-					<td style="text-align:center"#alternate( $mark )><a href="showUpdateUserForm.action?id=$userCredentials.id" title="$i18n.getString( "edit" )"><img src="../images/edit.png" alt="$i18n.getString( "edit" )"></a></td>
-					<td style="text-align:center"#alternate( $mark )><a href="javascript:removeUser( $userCredentials.id, '$encoder.jsEncode( $userCredentials.username )' )" title="$i18n.getString( "remove" )"><img src="../images/delete.png" alt="$i18n.getString( "remove" )"></a></td>
+					<td style="text-align:center"#alternate( $mark )>
+						#if($encoder.htmlEncode( $userCredentials.username ) != $!encoder.htmlEncode( $userAdmin))
+							<a href="showUpdateUserForm.action?id=$userCredentials.id" title="$i18n.getString( "edit" )"><img src="../images/edit.png" alt="$i18n.getString( "edit" )"></a></td>
+						#end
+					<td style="text-align:center"#alternate( $mark )>
+						#if($encoder.htmlEncode( $userCredentials.username ) != $!encoder.htmlEncode( $userAdmin))
+							<a href="javascript:removeUser( $userCredentials.id, '$encoder.jsEncode( $userCredentials.username )' )" title="$i18n.getString( "remove" )"><img src="../images/delete.png" alt="$i18n.getString( "remove" )"></a>
+						#end
+					</td>
 					<td style="text-align:center"#alternate( $mark )><a href="javascript:showUserDetails( $userCredentials.id )" title="$i18n.getString( "show_details" )"><img src="../images/information.png" alt="$i18n.getString( "show_details" )"></a></td>
 				</tr>
 					#if( $mark )

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/javascript/role.js'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/javascript/role.js	2009-09-26 09:41:54 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/javascript/role.js	2009-12-21 08:11:39 +0000
@@ -28,10 +28,26 @@
 {
 	if ( confirm( i18n_confirm_delete ) )
 	{
-		window.location.href = 'removeRole.action?id=' + id;						
+		var request = new Request();
+		request.setResponseTypeXML( 'message' );
+		request.setCallbackSuccess( removeRoleCompleted );
+		request.send( 'removeRole.action?id=' + id );
+		//window.location.href = 'removeRole.action?id=' + id;						
 	}		
 }
 
+function removeRoleCompleted(xmlObject){
+	var type = xmlObject.getAttribute( 'type' );
+    
+    if ( type == 'success' )
+    {
+        windown.location.href = 'allRole.action';
+    }
+	
+    else{
+		setMessage(xmlObject.firstChild.nodeValue);
+	}
+}
 // -----------------------------------------------------------------------------
 // Add role
 // -----------------------------------------------------------------------------
@@ -85,7 +101,6 @@
     request.send( 'validateRole.action?id=' + getFieldValue( 'id' ) +
         '&name=' + getFieldValue( 'name' ) +
         '&description=' + getFieldValue( 'description' ) );
-        
     return false;
 }
 


Follow ups