Author: kevinshen
Date: 2010-01-22 06:38:50 +0100 (Fri, 22 Jan 2010)
New Revision: 40678

Modified:
   
CMSContainer/trunk/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl/SecurePortalServlet.java
Log:
CMSC-1617 SSO -- Error message, to many redirects add a default login url 

Modified: 
CMSContainer/trunk/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl/SecurePortalServlet.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl/SecurePortalServlet.java
  2010-01-22 02:48:19 UTC (rev 40677)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/portal/src/java/com/finalist/cmsc/portalImpl/SecurePortalServlet.java
  2010-01-22 05:38:50 UTC (rev 40678)
@@ -12,6 +12,7 @@
 import org.mmbase.bridge.util.CloudUtil;
 
 import com.finalist.cmsc.beans.om.NavigationItem;
+import com.finalist.cmsc.beans.om.Site;
 import com.finalist.cmsc.navigation.NavigationUtil;
 import com.finalist.cmsc.security.SecurityUtil;
 import com.finalist.cmsc.security.UserRole;
@@ -21,7 +22,8 @@
 
 @SuppressWarnings("serial")
 public class SecurePortalServlet extends PortalServlet {
-
+   private static final String CAS_LOGIN_LOCALE = "cas_login_locale";
+   private static final String DEFAULT_LOGIN_URL = "casServerLoginUrl";
        private static Log log = LogFactory.getLog(SecurePortalServlet.class);
        
        protected boolean doRender(HttpServletRequest request,
@@ -45,14 +47,21 @@
              response.sendRedirect(HttpUtil.getWebappUri(request)+noRightPage);
           }
           String locale = null;
-      if (request.getSession().getAttribute("cas_login_locale") != null) {
-         locale = 
(String)request.getSession().getAttribute("cas_login_locale");       
-      } 
-      String defaultLoginUrl = "casServerLoginUrl";
+      if (request.getSession().getAttribute(CAS_LOGIN_LOCALE) != null) {
+         locale = (String)request.getSession().getAttribute(CAS_LOGIN_LOCALE); 
      
+      }       
+      String loginUrl = DEFAULT_LOGIN_URL;
       if (locale != null) {
-         defaultLoginUrl += "_"+locale;
+         loginUrl += "_"+locale;
       }
-          
response.sendRedirect(getServletContext().getInitParameter(defaultLoginUrl)+"?service="+HttpUtil.getWebappUri(request)+path);
+      else {
+         Site site = SiteManagement.getSiteFromPath(path);
+         if(site != null && site.getLanguage() != null) {
+            loginUrl += "_"+site.getLanguage();
+            request.getSession().setAttribute(CAS_LOGIN_LOCALE, 
site.getLanguage());
+         }
+      }
+          
response.sendRedirect(getServletContext().getInitParameter(loginUrl)==null?getServletContext().getInitParameter(DEFAULT_LOGIN_URL):getServletContext().getInitParameter(loginUrl)+"?service="+HttpUtil.getWebappUri(request)+path);
        log.warn("Page: not allowed to see, no login page found!");
           return false;
        }

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to