X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=inline;f=org.argeo.cms.ui.workbench.rap%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fworkbench%2Frap%2FAnonymousEntryPoint.java;fp=org.argeo.cms.ui.workbench.rap%2Fsrc%2Forg%2Fargeo%2Fcms%2Fui%2Fworkbench%2Frap%2FAnonymousEntryPoint.java;h=0000000000000000000000000000000000000000;hb=0f2684acd8274f302020a5d2628c4e5d3cc84500;hp=f657ec3689491d195669ed02d34d318879be1077;hpb=5b444174cd13680f99944026877f6cac2e1faba1;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui.workbench.rap/src/org/argeo/cms/ui/workbench/rap/AnonymousEntryPoint.java b/org.argeo.cms.ui.workbench.rap/src/org/argeo/cms/ui/workbench/rap/AnonymousEntryPoint.java deleted file mode 100644 index f657ec368..000000000 --- a/org.argeo.cms.ui.workbench.rap/src/org/argeo/cms/ui/workbench/rap/AnonymousEntryPoint.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (C) 2007-2012 Argeo GmbH - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.argeo.cms.ui.workbench.rap; - -import java.security.PrivilegedAction; - -import javax.security.auth.Subject; -import javax.security.auth.login.LoginContext; -import javax.security.auth.login.LoginException; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.cms.CmsException; -import org.argeo.node.NodeConstants; -import org.eclipse.rap.rwt.RWT; -import org.eclipse.rap.rwt.application.EntryPoint; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.PlatformUI; - -/** - * RAP entry point which authenticates the subject as anonymous, for public - * unauthenticated access. - */ -public class AnonymousEntryPoint implements EntryPoint { - private final static Log log = LogFactory.getLog(AnonymousEntryPoint.class); - - /** - * How many seconds to wait before invalidating the session if the user has - * not yet logged in. - */ - private Integer sessionTimeout = 5 * 60; - - @Override - public int createUI() { - RWT.getRequest().getSession().setMaxInactiveInterval(sessionTimeout); - - // if (log.isDebugEnabled()) - // log.debug("Anonymous THREAD=" + Thread.currentThread().getId() - // + ", sessionStore=" + RWT.getSessionStore().getId()); - - final Display display = PlatformUI.createDisplay(); - Subject subject = new Subject(); - - final LoginContext loginContext; - try { - loginContext = new LoginContext(NodeConstants.LOGIN_CONTEXT_ANONYMOUS, - subject); - loginContext.login(); - } catch (LoginException e1) { - throw new CmsException("Cannot initialize login context", e1); - } - - // identify after successful login - if (log.isDebugEnabled()) - log.debug("Authenticated " + subject); - final String username = subject.getPrincipals().iterator().next() - .getName(); - - // Logout callback when the display is disposed - display.disposeExec(new Runnable() { - public void run() { - log.debug("Display disposed"); - logout(loginContext, username); - } - }); - - // - // RUN THE WORKBENCH - // - Integer returnCode = null; - try { - returnCode = Subject.doAs(subject, new PrivilegedAction() { - public Integer run() { - RapWorkbenchAdvisor workbenchAdvisor = new RapWorkbenchAdvisor( - null); - int result = PlatformUI.createAndRunWorkbench(display, - workbenchAdvisor); - return new Integer(result); - } - }); - logout(loginContext, username); - if (log.isTraceEnabled()) - log.trace("Return code " + returnCode); - } finally { - display.dispose(); - } - return 1; - } - - private void logout(LoginContext loginContext, String username) { - try { - loginContext.logout(); - log.info("Logged out " + (username != null ? username : "") - + " (THREAD=" + Thread.currentThread().getId() + ")"); - } catch (LoginException e) { - log.error("Erorr when logging out", e); - } - } -}