Hi everybody,
I’m trying to handle input parameters on a Vaadin webapp for authentication purpose, when the app receives username/password as parameters it should display directly the main window if authentication succeeded without showing the login window. This works very good, but the customized theme “myTheme” is never loaded. The only way for loading the theme was setting the user with setUser(user) outside the handleParameters() method.
I hope you can help me. Thanks
public class GestOrdApplication extends Application implements ParameterHandler, UserChangeListener {
private static final long serialVersionUID = 1L;
private Window mainWindow;
private Window loginWindow;
private String user;
private String password;
@Override
public void init() {
setTheme("myTheme");
// login
buildLoginWindow();
setMainWindow(loginWindow);
addListener(this);
}
@Override
public void handleParameters(Map<String, String[]> parameters) {
if (parameters.containsKey("user") && parameters.containsKey("password")) {
// set user
user = parameters.get("user")[0]
;
password = parameters.get("password")[0]
;
if(auth(user,password)) {
setUser(user);
}
}
}
@Override
public void applicationUserChanged(UserChangeEvent event) {
if (event.getNewUser() == null) {
// show login
setMainWindow(loginWindow);
removeWindow(mainWindow);
loginWindow.showNotification("Logged out.");
} else if (event.getNewUser() != null) {
// load UI
buildMainWindow(user);
setMainWindow(mainWindow);
removeWindow(loginWindow);
mainWindow.showNotification("Welcome.");
}
}
public void buildMainWindow(String utente) {
mainWindow = new Window("Main Window");
mainWindow.setContent(new MainUI());
}
public void buildLoginWindow(String utente) {
loginWindow = new Window("Login Window");
loginWindow.setContent(new LoginUI());
// startup parameters
loginWindow.addParameterHandler(this);
}
}