Author: kevinshen
Date: 2010-01-22 06:39:22 +0100 (Fri, 22 Jan 2010)
New Revision: 40679

Modified:
   
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/servlet/CommunityLogoutServlet.java
   
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/LogLinkTag.java
Log:
CMSC-1617 SSO -- Error message, to many redirects add a default login url 

Modified: 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/servlet/CommunityLogoutServlet.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/servlet/CommunityLogoutServlet.java
  2010-01-22 05:38:50 UTC (rev 40678)
+++ 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/servlet/CommunityLogoutServlet.java
  2010-01-22 05:39:22 UTC (rev 40679)
@@ -13,6 +13,8 @@
 @SuppressWarnings("serial")
 public class CommunityLogoutServlet extends HttpServlet {
 
+   private static final String CAS_SERVER_LOGOUT_URL = "casServerLogoutUrl";
+   private static final String CAS_LOGIN_LOCALE = "cas_login_locale";
    private static final Logger log = 
Logger.getLogger(CommunityLogoutServlet.class);
    @Override
    public void init(ServletConfig config) throws ServletException {
@@ -23,11 +25,11 @@
    public void service(HttpServletRequest request, HttpServletResponse 
response) throws IOException {
       
       String locale = null;
-      if (request.getSession().getAttribute("cas_login_locale") != null) {
-         locale = 
(String)request.getSession().getAttribute("cas_login_locale");       
+      if (request.getSession().getAttribute(CAS_LOGIN_LOCALE) != null) {
+         locale = (String)request.getSession().getAttribute(CAS_LOGIN_LOCALE); 
      
       }
       request.getSession().invalidate();
-      String defaultLogoutUrl = "casServerLogoutUrl";
+      String defaultLogoutUrl = CAS_SERVER_LOGOUT_URL;
       if (locale != null) {
          defaultLogoutUrl += "_"+locale;
       }

Modified: 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/LogLinkTag.java
===================================================================
--- 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/LogLinkTag.java
       2010-01-22 05:38:50 UTC (rev 40678)
+++ 
CMSContainer/trunk/CMSContainer_Modules/community/src/java/com/finalist/cmsc/community/taglib/LogLinkTag.java
       2010-01-22 05:39:22 UTC (rev 40679)
@@ -5,10 +5,13 @@
 
 import org.acegisecurity.context.SecurityContextHolder;
 
+import com.finalist.cmsc.beans.om.Site;
+import com.finalist.cmsc.services.sitemanagement.SiteManagement;
 import com.finalist.cmsc.util.HttpUtil;
 
 public class LogLinkTag extends AbstractSSOTag  {
 
+   private static final String CAS_SERVER_LOGIN_URL = "casServerLoginUrl";
    private static final String CAS_LOGIN_LOCALE = "cas_login_locale";
    private String referurl;    
 
@@ -38,12 +41,20 @@
       }
       org.acegisecurity.Authentication authentication = 
SecurityContextHolder.getContext().getAuthentication();
       if(authentication == null) {
-         String defaultLoginUrl = "casServerLoginUrl";
+         String LoginUrl = CAS_SERVER_LOGIN_URL;
          if(locale != null) {
-            defaultLoginUrl += "_"+locale;
+            LoginUrl += "_"+locale;
+            req.getSession().setAttribute(CAS_LOGIN_LOCALE, locale);
          }
-         link = getParameter(defaultLoginUrl)+"?service="+backUrl;
-         req.getSession().setAttribute(CAS_LOGIN_LOCALE, locale);
+         else {
+            String path = getPath();
+            Site site = SiteManagement.getSiteFromPath(path);
+            if(site != null && site.getLanguage() != null) {
+                  LoginUrl += "_"+site.getLanguage();
+                  req.getSession().setAttribute(CAS_LOGIN_LOCALE, 
site.getLanguage());
+            }
+         }
+         link = 
getParameter(LoginUrl)==null?getParameter(CAS_SERVER_LOGIN_URL):getParameter(LoginUrl)+"?service="+backUrl;
       }
       else {
          link = HttpUtil.getWebappUri(req)+"LogoutServlet";

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

Reply via email to