diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateController.java index 8a2e1f4e4..d241f10c0 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/TemplateController.java @@ -23,6 +23,7 @@ package org.navalplanner.web.common; import java.util.Collections; import java.util.List; +import org.navalplanner.business.scenarios.bootstrap.PredefinedScenarios; import org.navalplanner.business.scenarios.entities.Scenario; import org.navalplanner.web.common.components.bandboxsearch.BandboxSearch; import org.navalplanner.web.security.SecurityUtils; @@ -58,10 +59,10 @@ public class TemplateController extends GenericForwardComposer { window = (Window) comp.getFellow("changeScenarioWindow"); } - public String getScenario() { + public Scenario getScenario() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication == null) { - return ""; + return PredefinedScenarios.MASTER.getScenario(); } CustomUser customUser = (CustomUser) authentication.getPrincipal(); return customUser.getScenario(); @@ -83,7 +84,7 @@ public class TemplateController extends GenericForwardComposer { if (templateModel == null) { return null; } - return templateModel.getScenarioByName(getScenario()); + return getScenario(); } public void accept() { @@ -97,7 +98,7 @@ public class TemplateController extends GenericForwardComposer { CustomUser customUser = (CustomUser) SecurityContextHolder.getContext() .getAuthentication().getPrincipal(); - customUser.setScenario(scenario.getName()); + customUser.setScenario(scenario); window.setVisible(false); Executions.sendRedirect("/"); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/CustomUser.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/CustomUser.java index 3ca11535a..145a0911b 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/CustomUser.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/CustomUser.java @@ -20,6 +20,7 @@ package org.navalplanner.web.users.services; +import org.apache.commons.lang.Validate; import org.navalplanner.business.scenarios.entities.Scenario; import org.springframework.security.GrantedAuthority; import org.springframework.security.userdetails.User; @@ -32,22 +33,25 @@ import org.springframework.security.userdetails.User; */ public class CustomUser extends User { - private String scenario; + private Scenario scenario; public CustomUser(String username, String password, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, GrantedAuthority[] authorities, - String scenario) throws IllegalArgumentException { + Scenario scenario) throws IllegalArgumentException { super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); + Validate.notNull(scenario); this.scenario = scenario; + // force name load + scenario.getName(); } - public String getScenario() { + public Scenario getScenario() { return scenario; } - public void setScenario(String scenario) { + public void setScenario(Scenario scenario) { this.scenario = scenario; } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/DBUserDetailsService.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/DBUserDetailsService.java index 63a06cfdd..161a29f94 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/DBUserDetailsService.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/services/DBUserDetailsService.java @@ -75,12 +75,9 @@ public class DBUserDetailsService implements UserDetailsService { allRoles.addAll(eachProfile.getRoles()); } - String scenarioName; Scenario scenario = user.getLastConnectedScenario(); if (scenario == null) { - scenarioName = PredefinedScenarios.MASTER.getName(); - } else { - scenarioName = scenario.getName(); + scenario = PredefinedScenarios.MASTER.getScenario(); } return new CustomUser( @@ -91,8 +88,7 @@ public class DBUserDetailsService implements UserDetailsService { true, // credentialsNonExpired true, // accountNonLocked getGrantedAuthorities(allRoles), - scenarioName); - + scenario); } private GrantedAuthority[] getGrantedAuthorities(Set roles) { diff --git a/navalplanner-webapp/src/main/webapp/common/layout/template.zul b/navalplanner-webapp/src/main/webapp/common/layout/template.zul index 1ebd3deaf..9b83ca30e 100644 --- a/navalplanner-webapp/src/main/webapp/common/layout/template.zul +++ b/navalplanner-webapp/src/main/webapp/common/layout/template.zul @@ -67,7 +67,7 @@ ${i18n:_('scenario')}: