diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java index bb1fb5bd64d12976cc81ec7cb855ad8fb678243d..ebce751dda764520e4e781f8ed8cc39a1e4958a0 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/Client.java @@ -213,7 +213,7 @@ public class Client implements EntryPoint, ValueChangeHandler<String> model.setApplicationInfo(info); model.setViewMode(viewMode); boolean anonymous = isAnonymousLogin(info); - model.setAnonymousLogin(anonymous); + model.setAnonymousAllowed(anonymous); // the callback sets the SessionContext and redirects to the login page or the // initial page and may additionaly open an initial tab SessionContextCallback sessionContextCallback = @@ -331,7 +331,7 @@ public class Client implements EntryPoint, ValueChangeHandler<String> final Dispatcher dispatcher = Dispatcher.get(); if (sessionContext == null) { - if (viewContext.getModel().isAnonymousLogin()) + if (viewContext.getModel().isAnonymousAllowed()) { viewContext.getService().tryToLoginAnonymously( new BasicLoginCallback(viewContext.getCommonViewContext(), null) @@ -354,6 +354,7 @@ public class Client implements EntryPoint, ValueChangeHandler<String> // restart than display settings of the user that logged in first would be used // also for the second user. viewContext.initDisplaySettingsManager(); + dispatcher.dispatch(AppEvents.INIT); if (viewContext.isSimpleOrEmbeddedMode() == false) diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericViewModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericViewModel.java index bacccd9a5216bac1354d8a333ec80b13b32c8499..f14dd347b31e3e89e56b6b57ce0b2a3a7fa65eab 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericViewModel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/GenericViewModel.java @@ -33,7 +33,7 @@ public class GenericViewModel private ViewMode viewMode; - private boolean anonymousLogin; + private boolean anonymousAllowed; public final ApplicationInfo getApplicationInfo() { @@ -65,14 +65,9 @@ public class GenericViewModel this.viewMode = viewMode; } - public void setAnonymousLogin(boolean anonymousLogin) - { - this.anonymousLogin = anonymousLogin; - } - public boolean isAnonymousLogin() { - return anonymousLogin; + return sessionContext.isAnonymous(); } public boolean isEmbeddedMode() @@ -84,4 +79,14 @@ public class GenericViewModel { return isAnonymousLogin() == false && ViewMode.NORMAL.equals(getViewMode()); } + + public void setAnonymousAllowed(boolean anonymousAllowed) + { + this.anonymousAllowed = anonymousAllowed; + } + + public boolean isAnonymousAllowed() + { + return anonymousAllowed; + } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SessionContext.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SessionContext.java index 6bacb87fbee7f91644b697f68b70b92cc320fa78..122fa8f923442b42de8790cf5331ee2d822fe959 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SessionContext.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/dto/SessionContext.java @@ -37,6 +37,8 @@ public class SessionContext implements IsSerializable private DisplaySettings displaySettings; + private boolean anonymous; + public final User getUser() { return user; @@ -77,4 +79,14 @@ public class SessionContext implements IsSerializable this.displaySettings = displaySettings; } + public void setAnonymous(boolean anonymous) + { + this.anonymous = anonymous; + } + + public boolean isAnonymous() + { + return this.anonymous; + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java index f084492e17cbcc1f488e0b32f8cda621f2e6d47f..e8e7e9e3b1b3064db7cc82357639b0407a7e05cd 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/AbstractClientService.java @@ -301,6 +301,7 @@ public abstract class AbstractClientService implements IClientService, user.setHomeGroupCode(session.tryGetHomeGroupCode()); user.setUserEmail(session.getUserEmail()); sessionContext.setUser(user); + sessionContext.setAnonymous(session.isAnonymous()); return sessionContext; } @@ -471,7 +472,7 @@ public abstract class AbstractClientService implements IClientService, if (session == null) { return null; - } else if (anonymous != session.isAnonymous()) + } else if (anonymous == false && session.isAnonymous()) { operationLog.debug("expected: " + anonymous + " found: " + session.isAnonymous()); getServer().logout(sessionToken);