From 683ba15662b43243585a949fca5b1ed2dddffd68 Mon Sep 17 00:00:00 2001 From: gpawel <gpawel> Date: Mon, 12 Sep 2011 13:49:38 +0000 Subject: [PATCH] LMS-2426 Perm-Links: anonymous flag should only be considered when there is no session SVN: 22889 --- .../client/web/client/application/Client.java | 5 +++-- .../client/application/GenericViewModel.java | 19 ++++++++++++------- .../client/web/client/dto/SessionContext.java | 12 ++++++++++++ .../web/server/AbstractClientService.java | 3 ++- 4 files changed, 29 insertions(+), 10 deletions(-) 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 bb1fb5bd64d..ebce751dda7 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 bacccd9a521..f14dd347b31 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 6bacb87fbee..122fa8f9234 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 f084492e17c..e8e7e9e3b1b 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); -- GitLab