Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
use encoded url for sign in redirect
Browse files Browse the repository at this point in the history
  • Loading branch information
davidmason committed Jan 27, 2012
1 parent b09ef23 commit 4379753
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 5 deletions.
81 changes: 81 additions & 0 deletions server/zanata-war/src/main/java/org/zanata/util/UrlUtil.java
@@ -0,0 +1,81 @@
/*
* Copyright 2010, Red Hat, Inc. and individual contributors as indicated by the
* @author tags. See the copyright.txt file in the distribution for a full
* listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This software 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 Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this software; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
* site: http://www.fsf.org.
*/
package org.zanata.util;

import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import javax.servlet.http.HttpServletRequest;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;

/**
* Get the URL for the current page in URL encoded format for use in the query
* string
*
* @author David Mason, damason@redhat.com
*/
@Name("urlUtil")
@Scope(ScopeType.SESSION)
@AutoCreate
public class UrlUtil implements Serializable
{

/**
*
*/
private static final long serialVersionUID = 1L;
private final static String ENCODING = "UTF-8";

/**
* Get the local url part, including context path, for the given page
* request, encoded for use in query string.
*
* Current implementation only works for forwarded requests
*
* @param request the current request
* @return local part of url from original request, url encoded
*/
public String getEncodedLocalUrl(HttpServletRequest request)
{
String url = (String) request.getAttribute("javax.servlet.forward.context_path");
url += (String) request.getAttribute("javax.servlet.forward.servlet_path");
String queryString = (String) request.getAttribute("javax.servlet.forward.query_string");
if (queryString != null && queryString.length() > 0)
{
url += "?" + queryString;
}

try
{
return URLEncoder.encode(url, ENCODING);
}
catch (UnsupportedEncodingException e)
{
throw new RuntimeException(e);
}
}

}
Expand Up @@ -43,11 +43,7 @@
</s:fragment>

<s:fragment rendered="#{not identity.loggedIn}">
<s:link id="Sign_in" view="/account/sign_in?continue=#{applicationConfiguration.serverPath}#{request.getAttribute('javax.servlet.forward.servlet_path')}" value="#{messages['jsf.SignIn']}" propagation="none" />
<!-- works without server path being set, but does not use rewritten urls
the empty server path condition is always false due to hard-coded default
<s:link id="Sign_in" rendered="#{empty applicationConfiguration.serverPath}" view="/account/sign_in?continue=#{request.requestURL}#{not empty request.queryString ? '%3F' : ''}#{request.queryString}" value="#{messages['jsf.SignIn']}" propagation="none" />
-->
<s:link id="Sign_in" view="/account/sign_in?continue=#{urlUtil.getEncodedLocalUrl(request)}" value="#{messages['jsf.SignIn']}" propagation="none" />

<rich:spacer width="10px" />

Expand Down

0 comments on commit 4379753

Please sign in to comment.