=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/AddUserAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/AddUserAction.java 2014-03-23 18:26:50 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/AddUserAction.java 2014-04-05 06:00:20 +0000 @@ -28,14 +28,8 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import javax.servlet.http.HttpServletRequest; - +import com.google.common.collect.Lists; +import com.opensymphony.xwork2.Action; import org.apache.struts2.ServletActionContext; import org.hisp.dhis.api.utils.ContextUtils; import org.hisp.dhis.attribute.AttributeService; @@ -50,18 +44,26 @@ import org.hisp.dhis.user.User; import org.hisp.dhis.user.UserAuthorityGroup; import org.hisp.dhis.user.UserCredentials; +import org.hisp.dhis.user.UserGroup; +import org.hisp.dhis.user.UserGroupService; import org.hisp.dhis.user.UserService; import org.hisp.dhis.user.UserSetting; import org.hisp.dhis.user.UserSettingService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; -import com.opensymphony.xwork2.Action; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; /** * @author Torgeir Lorange Ostby */ public class AddUserAction - implements Action + implements Action { private String ACCOUNT_ACTION_INVITE = "invite"; @@ -90,6 +92,9 @@ this.userService = userService; } + @Autowired + private UserGroupService userGroupService; + private SecurityService securityService; public void setSecurityService( SecurityService securityService ) @@ -218,6 +223,13 @@ this.selectedList = selectedList; } + private List ugSelected = Lists.newArrayList(); + + public void setUgSelected( List ugSelected ) + { + this.ugSelected = ugSelected; + } + private List jsonAttributeValues; public void setJsonAttributeValues( List jsonAttributeValues ) @@ -230,7 +242,7 @@ // ------------------------------------------------------------------------- public String execute() - throws Exception + throws Exception { // --------------------------------------------------------------------- // Prepare values @@ -269,7 +281,7 @@ userCredentials.setUsername( inviteUsername ); user.setEmail( inviteEmail ); - securityService.prepareUserForInvite ( userCredentials ); + securityService.prepareUserForInvite( userCredentials ); } else { @@ -284,20 +296,20 @@ user.updateOrganisationUnits( new HashSet( orgUnits ) ); Set userAuthorityGroups = new HashSet(); - + for ( String id : selectedList ) { userAuthorityGroups.add( userService.getUserAuthorityGroup( Integer.parseInt( id ) ) ); } userService.canIssueFilter( userAuthorityGroups ); - + userCredentials.setUserAuthorityGroups( userAuthorityGroups ); if ( jsonAttributeValues != null ) { AttributeUtils.updateAttributeValuesFromJson( user.getAttributeValues(), jsonAttributeValues, - attributeService ); + attributeService ); } userService.addUser( user ); @@ -318,6 +330,17 @@ securityService.sendRestoreMessage( userCredentials, getRootPath(), restoreOptions ); } + for ( String id : ugSelected ) + { + UserGroup userGroup = userGroupService.getUserGroup( id ); + + if ( userGroup != null ) + { + userGroup.addUser( user ); + userGroupService.updateUserGroup( userGroup ); + } + } + return SUCCESS; } === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/SetupTreeAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/SetupTreeAction.java 2014-03-23 18:26:50 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/SetupTreeAction.java 2014-04-05 06:00:20 +0000 @@ -126,6 +126,13 @@ return userCredentials; } + private User user; + + public User getUser() + { + return user; + } + private List userAuthorityGroups; public List getUserAuthorityGroups() @@ -199,7 +206,7 @@ if ( id != null ) { - User user = userService.getUser( id ); + user = userService.getUser( id ); if ( user.getOrganisationUnits().size() > 0 ) { === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/UpdateUserAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/UpdateUserAction.java 2014-03-23 18:26:50 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/java/org/hisp/dhis/user/action/UpdateUserAction.java 2014-04-05 06:00:20 +0000 @@ -28,12 +28,9 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import com.opensymphony.xwork2.Action; import org.hisp.dhis.attribute.AttributeService; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.oust.manager.SelectionTreeManager; @@ -45,12 +42,19 @@ import org.hisp.dhis.user.User; import org.hisp.dhis.user.UserAuthorityGroup; import org.hisp.dhis.user.UserCredentials; +import org.hisp.dhis.user.UserGroup; +import org.hisp.dhis.user.UserGroupService; import org.hisp.dhis.user.UserService; import org.hisp.dhis.user.UserSetting; import org.hisp.dhis.user.UserSettingService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; -import com.opensymphony.xwork2.Action; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; /** * @author Torgeir Lorange Ostby @@ -69,6 +73,9 @@ this.userService = userService; } + @Autowired + private UserGroupService userGroupService; + private PasswordManager passwordManager; public void setPasswordManager( PasswordManager passwordManager ) @@ -178,6 +185,13 @@ this.selectedList = selectedList; } + private List ugSelected = Lists.newArrayList(); + + public void setUgSelected( List ugSelected ) + { + this.ugSelected = ugSelected; + } + private List jsonAttributeValues; public void setJsonAttributeValues( List jsonAttributeValues ) @@ -238,7 +252,7 @@ } userService.canIssueFilter( userAuthorityGroups ); - + userCredentials.setUserAuthorityGroups( userAuthorityGroups ); if ( rawPassword != null ) @@ -272,6 +286,33 @@ userService.addOrUpdateUserSetting( new UserSetting( user, UserSettingService.KEY_UI_LOCALE, LocaleUtils.getLocale( localeUi ) ) ); userService.addOrUpdateUserSetting( new UserSetting( user, UserSettingService.KEY_DB_LOCALE, LocaleUtils.getLocale( localeDb ) ) ); + Set userGroups = Sets.newHashSet(); + + for ( String id : ugSelected ) + { + UserGroup userGroup = userGroupService.getUserGroup( id ); + + if ( userGroup != null ) + { + userGroups.add( userGroup ); + } + } + + for ( UserGroup userGroup : Sets.newHashSet( user.getGroups() ) ) + { + if ( !userGroups.contains( userGroup ) ) + { + userGroup.removeUser( user ); + userGroupService.updateUserGroup( userGroup ); + } + } + + for ( UserGroup userGroup : userGroups ) + { + userGroup.addUser( user ); + userGroupService.updateUserGroup( userGroup ); + } + 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 2014-03-28 01:53:11 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/resources/org/hisp/dhis/user/i18n_module.properties 2014-04-05 06:00:20 +0000 @@ -290,6 +290,8 @@ unit=Unit selected_roles=Selected roles available_roles=Available roles +selected_user_groups=Selected User Groups +available_user_groups=Available User Groups create_new_user=Create new user password=Password firstName=First name === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/addUserForm.vm' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/addUserForm.vm 2014-03-05 05:52:03 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-user/src/main/webapp/dhis-web-maintenance-user/addUserForm.vm 2014-04-05 06:00:20 +0000 @@ -1,9 +1,11 @@ +