Files
alfresco-community-repo/source/web/index.jsp
Kevin Roast 3ad9a5fd3d Merged DEV/TEMPORARY to HEAD
17682: Fixed up package structure of standalone alfresco-jlan configelement fa‡ade classes.
   17684: Fix up build.xml for first set of spring-surf integration changes - tested alfresco/share server startup.
   17697: Minor tweaks from V3.3_SPRING3 branch before spring-webscripts JAR integration.
   17730: Updated to latest SpringSurf libs and fixed up build.xml.
   17737: Share war built against SpringSurf libraries and deploys into tomcat.
          - First pass of configuration and web.xml refactored to new structure
          - Refactored Slingshot PageMapper and UserFactory classes to new interfaces
          - Build scripts updated to use SpringSurf libraries to build Share - dependency on old WebScripts and WebFramework projects removed.
          - Some cleanup related to SpringSurf Core project class removal
          - NOTE: Share does not work yet, not even close, just builds and deploys WAR with no errors.
   17738: Updates to WebFrameworkCommons - removes dependency on old WebScripts and WebFramework projects - now uses new  SpringSurf libraries.
   17739: Removed webscripts and webframework references from build targets for slingshot.
   17740: Removed old WebStudio project and build scripts.
   17747: Updated to latest SpringSurf dependent libraries.
          Fixes to Share startup config - added page types.
   17751: More refactoring of Share app-context config.
          Moved StaticAssetCacheFilter to WebFrameworkCommons (as no longer present in SpringSurf).
          Added SlingshotPageMapperFactory to complete classes required for Share SpringSurf customisation.
          Updated SpringSurf jars to latest after recent SpringSurf SVN commits.
          Slingshot surf-config.xml now loads custom app-context from backward compatibility locations.
          URL rewrite config added to allow /service and /proxy URLs to work for backward compatibility.
          Removal of more obsolete sections from Share web.xml.
   17752: Share login and basic authentication and user generation path now working.
   17775: Share dashboards and other pages now working under SpringSurf.
          - Added latest SpringSurf libs after my recent commits for various fixes
          - Added Share overriden PageViewResolver to handle Uri template matching - required for Share
          - Fixed Logout
          - Moved slingshot-region-chome to correct new location
   17785: Removed obsolete system-templates dir.
          Fixed slingshot app context to correctly pickup custom share config xml in web-extension.
          Fixed up JSF client index.jsp to use new ConfigService class location.
   17786: Updated SpringSurf libs after recent commits.
          Share related fixes to app-context.
          
          Share is now working! For the basic use cases i'm no longer seeing any issues; login, dashboards, creation of sites, document library etc. all seem to be working now.
          A complete QA pass of the application will be required for 3.3.
          
          TODO:
           - NTLM filter needs moving to Share (not present in SpringSurf)
           - MessagesWebScript - community tracking image needs adding to Share specific version (not present in SpringSurf)
           - Clustering config overrides - no longer work in SpringSurf, needs a rethink
           - Mobile project is not working
           - Repository Remote API and Web-Client to work ontop of SpringSurf WebScripts (the next BIG bit...)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@17789 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2009-12-14 13:49:45 +00:00

147 lines
6.3 KiB
Plaintext

<%--
* Copyright (C) 2005-2007 Alfresco Software Limited.
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing"
--%>
<%@ page import="javax.faces.context.FacesContext" %>
<%@ page import="javax.transaction.UserTransaction" %>
<%@ page import="org.springframework.web.context.WebApplicationContext" %>
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %>
<%@ page import="org.alfresco.service.transaction.TransactionService" %>
<%@ page import="org.alfresco.service.cmr.security.PermissionService" %>
<%@ page import="org.alfresco.service.cmr.security.AuthenticationService" %>
<%@ page import="org.alfresco.service.cmr.security.PersonService" %>
<%@ page import="org.alfresco.service.cmr.security.PermissionService" %>
<%@ page import="org.alfresco.service.cmr.repository.NodeRef" %>
<%@ page import="org.alfresco.repo.security.authentication.AuthenticationException" %>
<%@ page import="org.springframework.extensions.config.ConfigService" %>
<%@ page import="org.alfresco.web.app.servlet.AuthenticationHelper" %>
<%@ page import="org.alfresco.web.app.servlet.FacesHelper" %>
<%@ page import="org.alfresco.web.bean.NavigationBean" %>
<%@ page import="org.alfresco.web.bean.repository.User" %>
<%@ page import="org.alfresco.web.bean.repository.PreferencesService" %>
<%@ page import="org.alfresco.web.config.ClientConfigElement" %>
<%-- redirect to the web application's appropriate start page --%>
<%
// get the start location as configured by the web-client config
WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(session.getServletContext());
ConfigService configService = (ConfigService)context.getBean("webClientConfigService");
ClientConfigElement configElement = (ClientConfigElement)configService.getGlobalConfig().getConfigElement("client");
String location = configElement.getInitialLocation();
AuthenticationService authService = (AuthenticationService)context.getBean("AuthenticationService");
// override with the users preference if they have one
User user = (User)session.getAttribute(AuthenticationHelper.AUTHENTICATION_USER);
if (user != null)
{
UserTransaction tx = ((TransactionService)context.getBean("TransactionService")).getUserTransaction();;
tx.begin();
try
{
authService.validate(user.getTicket());
// ensure construction of the FacesContext before attemping a service call
FacesContext fc = FacesHelper.getFacesContext(request, response, application);
String preference = (String)PreferencesService.getPreferences(fc).getValue("start-location");
if (preference != null)
{
location = preference;
}
tx.commit();
}
catch (AuthenticationException authErr)
{
try { tx.rollback(); } catch (Throwable tex) {}
// expired ticket
AuthenticationService unpAuth = (AuthenticationService)context.getBean("authenticationService");
unpAuth.invalidateTicket(unpAuth.getCurrentTicket());
unpAuth.clearCurrentSecurityContext();
}
catch (Throwable e)
{
try { tx.rollback(); } catch (Throwable tex) {}
}
}
else
{
UserTransaction tx = ((TransactionService)context.getBean("TransactionService")).getUserTransaction();;
tx.begin();
try
{
authService.authenticateAsGuest();
PersonService personService = (PersonService)context.getBean("personService");
NodeRef guestRef = personService.getPerson(PermissionService.GUEST_AUTHORITY);
user = new User(authService.getCurrentUserName(), authService.getCurrentTicket(), guestRef);
session.setAttribute(AuthenticationHelper.AUTHENTICATION_USER, user);
// ensure construction of the FacesContext before attemping a service call
FacesContext fc = FacesHelper.getFacesContext(request, response, application);
String preference = (String)PreferencesService.getPreferences(session).getValue("start-location");
if (preference != null)
{
location = preference;
}
session.removeAttribute(AuthenticationHelper.AUTHENTICATION_USER);
tx.commit();
}
catch (Throwable e)
{
try { tx.rollback(); } catch (Throwable tex) {}
}
}
if (request.getMethod().equalsIgnoreCase("GET"))
{
if (NavigationBean.LOCATION_MYALFRESCO.equals(location))
{
// Clear previous location - Fixes the issue ADB-61
FacesContext fc = FacesHelper.getFacesContext(request, response, application);
if (fc != null)
{
NavigationBean navigationBean = (NavigationBean)FacesHelper.getManagedBean(fc, "NavigationBean");
if (navigationBean != null)
{
navigationBean.setLocation(null);
navigationBean.setToolbarLocation(null);
}
}
// Send redirect
response.sendRedirect(request.getContextPath() + "/faces/jsp/dashboards/container.jsp");
}
else
{
response.sendRedirect(request.getContextPath() + "/faces/jsp/browse/browse.jsp");
}
}
// route WebDAV requests
else if (request.getMethod().equalsIgnoreCase("PROPFIND") ||
request.getMethod().equalsIgnoreCase("OPTIONS"))
{
response.sendRedirect(request.getContextPath() + "/webdav/");
}
%>