Ravi Nori has uploaded a new change for review.

Change subject: aaa: Modify welcome screen to show user name and options as menu
......................................................................

aaa: Modify welcome screen to show user name and options as menu

Adds menu to welcome screen.

Will be merged to patch #2 until intial review

Change-Id: I0227778d53f4c63867aa2887580539efab8fa7c8
Bug-Url: https://bugzilla.redhat.com/1092744
Signed-off-by: Ravi Nori <rn...@redhat.com>
---
M 
backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/FiltersHelper.java
M 
backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/SSOLoginFilter.java
M 
backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/SSORestApiLoginFilter.java
M 
backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/servlet/SSOPostLoginServlet.java
M 
backend/manager/modules/aaa/src/main/modules/org/ovirt/engine/core/aaa/main/module.xml
M backend/manager/modules/welcome/pom.xml
M 
backend/manager/modules/welcome/src/main/java/org/ovirt/engine/core/WelcomeServlet.java
M backend/manager/modules/welcome/src/main/webapp/WEB-INF/error.jsp
M backend/manager/modules/welcome/src/main/webapp/WEB-INF/ovirt-engine.jsp
M backend/manager/modules/welcome/src/main/webapp/WEB-INF/web.xml
M 
backend/manager/modules/welcome/src/test/java/org/ovirt/engine/core/WelcomeServletTest.java
M packaging/services/ovirt-engine/ovirt-engine.conf.in
12 files changed, 198 insertions(+), 61 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/72/40672/1

diff --git 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/FiltersHelper.java
 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/FiltersHelper.java
index 7e5fd14..37a079e 100644
--- 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/FiltersHelper.java
+++ 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/FiltersHelper.java
@@ -8,6 +8,8 @@
 import java.security.GeneralSecurityException;
 import java.security.KeyStore;
 import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
 
 import javax.naming.Context;
 import javax.naming.InitialContext;
@@ -18,6 +20,8 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.http.HeaderElement;
 import org.apache.http.message.BasicHeaderValueParser;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
 import org.ovirt.engine.core.aaa.SSOQueryServiceUtils;
 import org.ovirt.engine.core.common.constants.SessionConstants;
 import org.ovirt.engine.core.common.interfaces.BackendLocal;
@@ -77,20 +81,37 @@
         }
     }
 
-    public static boolean isSessionValid(HttpServletRequest req) throws 
NamingException {
-        String sessionId = (String) 
req.getSession(true).getAttribute(SessionConstants.SSO_TOKEN_KEY);
+    public static boolean isSessionValid(HttpServletRequest req) {
+        return isSessionValid(req, (String) 
req.getSession(true).getAttribute(SessionConstants.SSO_TOKEN_KEY));
+    }
+
+    public static boolean isSessionValid(HttpServletRequest req, String token) 
{
         boolean isValid = false;
-        if (StringUtils.isNotEmpty(sessionId)) {
+        if (StringUtils.isNotEmpty(token)) {
             try {
-                SSOQueryServiceUtils.getFromSsoQueryService(req, 
"command=sso-token-validate&sso_token=%s", sessionId);
+                SSOQueryServiceUtils.getFromSsoQueryService(req, 
"command=sso-token-validate&sso_token=%s", token);
                 isValid = true;
             } catch (Exception e) {
-                log.error("Session not valid session id = " + sessionId, 
e.getMessage());
+                log.error("Session not valid session id = " + token, 
e.getMessage());
             }
         }
         return isValid;
     }
 
+    public static String getCurrentSsoSessionUser(HttpServletRequest req, 
String token) {
+        String username  = "Not Logged In";
+        try {
+            String userInfoJson = 
SSOQueryServiceUtils.getFromSsoQueryService(req, 
"command=sso-token-query&sso_token=%s", token);
+            ObjectMapper mapper = new 
ObjectMapper().configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,
 false)
+                    
.enableDefaultTyping(ObjectMapper.DefaultTyping.OBJECT_AND_NON_CONCRETE);
+            Map<String, String> userInfoMap = mapper.readValue(userInfoJson, 
HashMap.class);
+            username = userInfoMap.get("userName") + "@" + 
userInfoMap.get("profile");
+        } catch (Exception e) {
+            log.error("Unable to query sso for current user", e.getMessage());
+        }
+        return username;
+    }
+
     public static HttpURLConnection create(URL url) throws IOException, 
GeneralSecurityException {
         return new HttpURLConnectionBuilder(url).setHttpsProtocol("TLSv1")
                 .setReadTimeout(0)
diff --git 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/SSOLoginFilter.java
 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/SSOLoginFilter.java
index 04820d8..cae47be 100644
--- 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/SSOLoginFilter.java
+++ 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/SSOLoginFilter.java
@@ -5,7 +5,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.naming.NamingException;
 import javax.servlet.Filter;
 import javax.servlet.FilterChain;
 import javax.servlet.FilterConfig;
@@ -33,20 +32,16 @@
     public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException,
             ServletException {
         HttpServletRequest req = (HttpServletRequest) request;
-        String queryString = req.getQueryString();
-        String requestUri = req.getRequestURI() + 
(StringUtils.isEmpty(queryString) ? "" : "?" + queryString);
-
-        try {
-            if (!FiltersHelper.isAuthenticated(req) || 
!FiltersHelper.isSessionValid((HttpServletRequest) request)) {
-                ((HttpServletResponse) 
response).sendRedirect(String.format("%s%s&app_url=%s", 
req.getServletContext().getContextPath(), loginUrl, ((HttpServletResponse) 
response).encodeURL(requestUri)));
-            } else {
-                ((HttpServletResponse) response).addHeader("OVIRT-SSO-TOKEN",
-                        (String) 
(((HttpServletRequest)request).getSession(true)).getAttribute(SessionConstants.HTTP_SESSION_ENGINE_SESSION_ID_KEY));
-                chain.doFilter(request, response);
-            }
-        } catch (NamingException ex) {
-            log.error("Unable to get reference to backend bean.", ex);
-            throw new RuntimeException(ex);
+        StringBuffer requestURL = req.getRequestURL();
+        if (StringUtils.isNotEmpty(req.getQueryString())) {
+            requestURL.append("?").append(req.getQueryString());
+        }
+        if (!FiltersHelper.isAuthenticated(req) || 
!FiltersHelper.isSessionValid((HttpServletRequest) request)) {
+            ((HttpServletResponse) 
response).sendRedirect(String.format("%s%s&app_url=%s", 
req.getServletContext().getContextPath(), loginUrl, ((HttpServletResponse) 
response).encodeURL(requestURL.toString())));
+        } else {
+            ((HttpServletResponse) response).addHeader("OVIRT-SSO-TOKEN",
+                    (String) (((HttpServletRequest) 
request).getSession(true)).getAttribute(SessionConstants.HTTP_SESSION_ENGINE_SESSION_ID_KEY));
+            chain.doFilter(request, response);
         }
     }
 
diff --git 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/SSORestApiLoginFilter.java
 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/SSORestApiLoginFilter.java
index 4f7fa24..4bfc318 100644
--- 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/SSORestApiLoginFilter.java
+++ 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/filters/SSORestApiLoginFilter.java
@@ -38,15 +38,10 @@
     public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain) throws IOException,
             ServletException {
         HttpServletRequest req = (HttpServletRequest) request;
-        try {
-            if (!FiltersHelper.isAuthenticated(req) || 
!FiltersHelper.isSessionValid((HttpServletRequest) request)) {
-                authenticateWithSSO(req);
-            }
-            chain.doFilter(request, response);
-        } catch (NamingException ex) {
-            log.error("Unable to get reference to backend bean {}", ex);
-            throw new RuntimeException(ex);
+        if (!FiltersHelper.isAuthenticated(req) || 
!FiltersHelper.isSessionValid((HttpServletRequest) request)) {
+            authenticateWithSSO(req);
         }
+        chain.doFilter(request, response);
     }
 
     private void authenticateWithSSO(HttpServletRequest req) throws 
ServletException {
diff --git 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/servlet/SSOPostLoginServlet.java
 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/servlet/SSOPostLoginServlet.java
index c29454d..a72270f 100644
--- 
a/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/servlet/SSOPostLoginServlet.java
+++ 
b/backend/manager/modules/aaa/src/main/java/org/ovirt/engine/core/aaa/servlet/SSOPostLoginServlet.java
@@ -21,6 +21,7 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import java.io.IOException;
+import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -63,6 +64,11 @@
                                 (ExtMap) payload.get("principalRecord"),
                                 loginAsAdmin));
                 if (!queryRetVal.getSucceeded()) {
+                    URL url = new 
URL(request.getServletContext().getContextPath() + 
EngineLocalConfig.getInstance().getProperty("SSO_WELCOME_URL"));
+                    String welcomeUrl = url.toString() + "?";
+                    String switchUserUrl = 
EngineLocalConfig.getInstance().getProperty("SSO_SWITCH_USER_URL") + "?";
+                    request.setAttribute("sso_user", username);
+                    request.setAttribute("sso_switch_user_url", 
String.format("%s?post_action_url=%s&version=%s&invalidate=1&external=0", 
switchUserUrl, response.encodeURL(welcomeUrl), "0"));
                     String msg = String.format("The user %s is not authorized 
to perform login", username);
                     log.error(msg);
                     response.sendRedirect(String.format("%s?msg=%s", 
EngineLocalConfig.getInstance().getProperty("ERROR_PAGE"), 
response.encodeURL(msg)));
diff --git 
a/backend/manager/modules/aaa/src/main/modules/org/ovirt/engine/core/aaa/main/module.xml
 
b/backend/manager/modules/aaa/src/main/modules/org/ovirt/engine/core/aaa/main/module.xml
index 5b49356..a14a420 100644
--- 
a/backend/manager/modules/aaa/src/main/modules/org/ovirt/engine/core/aaa/main/module.xml
+++ 
b/backend/manager/modules/aaa/src/main/modules/org/ovirt/engine/core/aaa/main/module.xml
@@ -18,6 +18,8 @@
     <module name="org.ovirt.engine.core.uutils"/>
     <module name="org.ovirt.engine.api.ovirt-engine-extensions-api"/>
     <module name="org.slf4j"/>
+    <module name="org.codehaus.jackson.jackson-core-asl"/>
+    <module name="org.codehaus.jackson.jackson-mapper-asl"/>
   </dependencies>
 
 </module>
diff --git a/backend/manager/modules/welcome/pom.xml 
b/backend/manager/modules/welcome/pom.xml
index 3106908..bfca87a 100644
--- a/backend/manager/modules/welcome/pom.xml
+++ b/backend/manager/modules/welcome/pom.xml
@@ -60,6 +60,16 @@
       <version>${engine.version}</version>
     </dependency>
 
+    <dependency>
+      <groupId>${engine.groupId}</groupId>
+      <artifactId>aaa</artifactId>
+      <version>${engine.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.codehaus.jackson</groupId>
+      <artifactId>jackson-core-asl</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
diff --git 
a/backend/manager/modules/welcome/src/main/java/org/ovirt/engine/core/WelcomeServlet.java
 
b/backend/manager/modules/welcome/src/main/java/org/ovirt/engine/core/WelcomeServlet.java
index 24969d1..cdf7aaa 100644
--- 
a/backend/manager/modules/welcome/src/main/java/org/ovirt/engine/core/WelcomeServlet.java
+++ 
b/backend/manager/modules/welcome/src/main/java/org/ovirt/engine/core/WelcomeServlet.java
@@ -12,8 +12,10 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang.StringUtils;
+import org.ovirt.engine.core.aaa.filters.FiltersHelper;
 import org.ovirt.engine.core.branding.BrandingManager;
 import org.ovirt.engine.core.common.config.ConfigCommon;
+import org.ovirt.engine.core.common.constants.SessionConstants;
 import org.ovirt.engine.core.common.interfaces.BackendLocal;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.core.common.queries.GetConfigurationValueParameters;
@@ -21,6 +23,8 @@
 import org.ovirt.engine.core.utils.EngineLocalConfig;
 import org.ovirt.engine.core.utils.servlet.LocaleFilter;
 import org.ovirt.engine.core.utils.servlet.UnsupportedLocaleHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This Servlet serves the welcome page to allow users to select either web 
admin or user portal.
@@ -56,7 +60,11 @@
      */
     private transient BrandingManager brandingManager;
 
+    private String ssoGetTokenUrl;
     private String switchUserUrl;
+    private String logoutUrl;
+
+    private final Logger log = LoggerFactory.getLogger(getClass());
 
     /**
      * Setter for the {@code BackendLocal} bean.
@@ -71,14 +79,17 @@
     @Override
     public void init() {
         init(BrandingManager.getInstance());
-        switchUserUrl = 
getServletConfig().getInitParameter("sso-switch-user-url");
-        if (switchUserUrl == null) {
-            throw new RuntimeException("No sso-switch-user-url init parameter 
specified for WelcomeServlet.");
+        ssoGetTokenUrl = getInitString("SSO_GET_TOKEN_URL") + "?";
+        switchUserUrl = getInitString("SSO_SWITCH_USER_URL");
+        logoutUrl = getInitString("SSO_LOGOUT_URL");
+    }
+
+    private String getInitString(String paramName) {
+        String initParamVal = 
EngineLocalConfig.getInstance().getProperty(paramName);
+        if (StringUtils.isEmpty(initParamVal)) {
+            throw new RuntimeException(String.format("No %s engine config 
value found.", paramName));
         }
-        switchUserUrl = 
EngineLocalConfig.getInstance().expandString(switchUserUrl.replaceAll("%\\{", 
"\\${"));
-        if (StringUtils.isEmpty(switchUserUrl)) {
-            throw new RuntimeException("No SSO_SWITCH_USER_URL engine config 
value found.");
-        }
+        return initParamVal;
     }
     /**
      * Init with the branding manager as a parameter.
@@ -91,18 +102,34 @@
     @Override
     protected void doGet(final HttpServletRequest request, final 
HttpServletResponse response) throws IOException,
             ServletException {
-        request.setAttribute("sso_switch_user_url", 
String.format("%s?post_action_url=%s&version=%s&invalidate=1&external=0", 
switchUserUrl, response.encodeURL("/ovirt-engine/?"), "0"));
-        request.setAttribute(LOCALE_KEYS, 
UnsupportedLocaleHelper.getDisplayedLocales(LocaleFilter.getLocaleKeys()));
-        String oVirtVersion = 
backend.runPublicQuery(VdcQueryType.GetConfigurationValue,
-                new 
GetConfigurationValueParameters(ConfigurationValues.ProductRPMVersion,
-                        
ConfigCommon.defaultConfigurationVersion)).getReturnValue();
-        request.setAttribute(VERSION, oVirtVersion != null ? oVirtVersion : 
"myVersion");
-        request.setAttribute(SECTIONS, brandingManager
-                .getWelcomeSections((Locale) 
request.getAttribute(LocaleFilter.LOCALE)));
-        RequestDispatcher dispatcher = 
request.getRequestDispatcher("/WEB-INF/ovirt-engine.jsp");
-        response.setContentType("text/html;charset=UTF-8");
-        if (dispatcher != null) {
-            dispatcher.include(request, response);
+        String sso_token = 
request.getParameter(SessionConstants.SSO_TOKEN_KEY);
+        if (!"".equals(sso_token) && !FiltersHelper.isSessionValid(request, 
sso_token)) {
+            
response.sendRedirect(String.format("%s&post_action_url=%s&version=%s",
+                    ssoGetTokenUrl,
+                    response.encodeURL(request.getRequestURL().toString() + 
"?"),
+                    FiltersHelper.VERSION));
+        } else {
+            try {
+                if (StringUtils.isNotEmpty(sso_token)) {
+                    request.setAttribute("sso_user", 
FiltersHelper.getCurrentSsoSessionUser(request, sso_token));
+                }
+            } catch (Exception e) {
+                log.error("Unable to get session user");
+            }
+            request.setAttribute("sso_logout_url", 
String.format("%s?post_action_url=%s&version=%s&invalidate=1&external=0", 
logoutUrl, response.encodeURL(request.getRequestURL().toString() + "?"), "0"));
+            request.setAttribute("sso_switch_user_url", 
String.format("%s?post_action_url=%s&version=%s&invalidate=1&external=0", 
switchUserUrl, response.encodeURL(request.getRequestURL().toString() + "?"), 
"0"));
+            request.setAttribute(LOCALE_KEYS, 
UnsupportedLocaleHelper.getDisplayedLocales(LocaleFilter.getLocaleKeys()));
+            String oVirtVersion = 
backend.runPublicQuery(VdcQueryType.GetConfigurationValue,
+                    new 
GetConfigurationValueParameters(ConfigurationValues.ProductRPMVersion,
+                            
ConfigCommon.defaultConfigurationVersion)).getReturnValue();
+            request.setAttribute(VERSION, oVirtVersion != null ? oVirtVersion 
: "myVersion");
+            request.setAttribute(SECTIONS, brandingManager
+                    .getWelcomeSections((Locale) 
request.getAttribute(LocaleFilter.LOCALE)));
+            RequestDispatcher dispatcher = 
request.getRequestDispatcher("/WEB-INF/ovirt-engine.jsp");
+            response.setContentType("text/html;charset=UTF-8");
+            if (dispatcher != null) {
+                dispatcher.include(request, response);
+            }
         }
     }
 
diff --git a/backend/manager/modules/welcome/src/main/webapp/WEB-INF/error.jsp 
b/backend/manager/modules/welcome/src/main/webapp/WEB-INF/error.jsp
index dc78c51..8a3d92c 100644
--- a/backend/manager/modules/welcome/src/main/webapp/WEB-INF/error.jsp
+++ b/backend/manager/modules/welcome/src/main/webapp/WEB-INF/error.jsp
@@ -18,6 +18,40 @@
         <a href="<obrand:messages key="obrand.common.vendor_url"/>" 
class="obrand_loginPageLogoImageLink">
              <span class="obrand_loginPageLogoImage"></span>
         </a>
+        <div style="height: 40px; background-image: -webkit-gradient(linear, 
left 0%, left 100%, from(#474c50), to(#383f43));
+                     background-image: -webkit-linear-gradient(top, #474c50 
0%, #383f43 100%);
+                     background-image: -moz-linear-gradient(top, #474c50 0%, 
#383f43 100%);
+                     background-image: linear-gradient(to bottom, #474c50 0%, 
#383f43 100%);
+                     background-repeat: repeat-x;
+                     filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff474c50', 
endColorstr='#ff383f43', GradientType=0);">
+           <div class="collapse navbar-collapse navbar-collapse-1" 
style="position: absolute; top 0px; right: 20px;">
+             <ul class="nav navbar-nav navbar-utility">
+                 <li class="dropdown">
+                     <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">
+                         <span class="pficon pficon-user" style="font-size: 
11px; cursor: pointer;" ></span>
+                         <c:choose>
+                         <c:when test='${requestScope["sso_user"] != null}'>
+                             ${requestScope["sso_user"]}
+                         </c:when>
+                         <c:otherwise>
+                              Not Logged In
+                         </c:otherwise>
+                         </c:choose>
+                         <b class="caret"></b>
+                     </a>
+                     <ul class="dropdown-menu">
+                         <c:choose>
+                         <c:otherwise>
+                             <li>
+                                 <a 
href='${requestScope["sso_switch_user_url"]}' style="font-size: 11px; cursor: 
pointer;">Switch User</a>
+                             </li>
+                         </c:otherwise>
+                         </c:choose>
+                     </ul>
+                 </li>
+             </ul>
+           </div>
+        </div>
         <div class="login-pf">
             <div class="container">
                 <div class="row">
diff --git 
a/backend/manager/modules/welcome/src/main/webapp/WEB-INF/ovirt-engine.jsp 
b/backend/manager/modules/welcome/src/main/webapp/WEB-INF/ovirt-engine.jsp
index 1e9a936..03474c5 100644
--- a/backend/manager/modules/welcome/src/main/webapp/WEB-INF/ovirt-engine.jsp
+++ b/backend/manager/modules/welcome/src/main/webapp/WEB-INF/ovirt-engine.jsp
@@ -18,6 +18,60 @@
         <a href="<obrand:messages key="obrand.common.vendor_url"/>" 
class="obrand_loginPageLogoImageLink">
              <span class="obrand_loginPageLogoImage"></span>
         </a>
+        <div class="navbar-header">
+            <!-- toggles navbar at mobile resolutions -->
+            <button type="button" class="navbar-toggle" data-toggle="collapse" 
data-target=".navbar-collapse-1">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+            <a class="navbar-brand" href="/">
+                <img class="{style.obrand_headerLogoImage}" 
url="clear.cache.gif" />
+            </a>
+        </div>
+        <div style="height: 40px; background-image: -webkit-gradient(linear, 
left 0%, left 100%, from(#474c50), to(#383f43));
+                    background-image: -webkit-linear-gradient(top, #474c50 0%, 
#383f43 100%);
+                    background-image: -moz-linear-gradient(top, #474c50 0%, 
#383f43 100%);
+                    background-image: linear-gradient(to bottom, #474c50 0%, 
#383f43 100%);
+                    background-repeat: repeat-x;
+                    filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff474c50', 
endColorstr='#ff383f43', GradientType=0);">
+          <div class="collapse navbar-collapse navbar-collapse-1" 
style="position: absolute; top 0px; right: 20px;">
+            <ul class="nav navbar-nav navbar-utility">
+                <li class="dropdown">
+                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+                        <span class="pficon pficon-user" style="font-size: 
11px; cursor: pointer;" ></span>
+                        <c:choose>
+                        <c:when test='${requestScope["sso_user"] != null}'>
+                            ${requestScope["sso_user"]}
+                        </c:when>
+                        <c:otherwise>
+                             Not Logged In
+                        </c:otherwise>
+                        </c:choose>
+                        <b class="caret"></b>
+                    </a>
+                    <ul class="dropdown-menu">
+                        <c:choose>
+                        <c:when test='${requestScope["sso_user"] != null}'>
+                            <li>
+                                <a href='${requestScope["sso_logout_url"]}' 
style="font-size: 11px; cursor: pointer;">Sign Out</a>
+                            </li>
+                            <li>
+                                <a 
href='${requestScope["sso_switch_user_url"]}' style="font-size: 11px; cursor: 
pointer;">Switch User</a>
+                            </li>
+                        </c:when>
+                        <c:otherwise>
+                            <li>
+                                <a 
href='${requestScope["sso_switch_user_url"]}' style="font-size: 11px; cursor: 
pointer;">Login</a>
+                            </li>
+                        </c:otherwise>
+                        </c:choose>
+                    </ul>
+                </li>
+            </ul>
+          </div>
+        </div>
         <div class="login-pf">
             <div class="container">
                 <div class="row">
@@ -42,14 +96,6 @@
                         <script type="text/JavaScript">
                         <!--
                         document.write('<span 
class="version-text"><fmt:message key="obrand.welcome.version"><fmt:param 
value="${requestScope[\'version\']}" /> </fmt:message></span>')
-                        //-->
-                        </script>
-                    </div>
-
-                    <div class="col-sm-12">
-                        <script type="text/JavaScript">
-                        <!--
-                        document.write('<span class="label"><a 
href=${requestScope["sso_switch_user_url"]}>Switch User</a></span>')
                         //-->
                         </script>
                     </div>
diff --git a/backend/manager/modules/welcome/src/main/webapp/WEB-INF/web.xml 
b/backend/manager/modules/welcome/src/main/webapp/WEB-INF/web.xml
index 9c3f1fb..513b600 100644
--- a/backend/manager/modules/welcome/src/main/webapp/WEB-INF/web.xml
+++ b/backend/manager/modules/welcome/src/main/webapp/WEB-INF/web.xml
@@ -87,10 +87,6 @@
   <servlet>
     <servlet-name>WelcomeServlet</servlet-name>
     <servlet-class>org.ovirt.engine.core.WelcomeServlet</servlet-class>
-    <init-param>
-        <param-name>sso-switch-user-url</param-name>
-        <param-value>%{SSO_SWITCH_USER_URL}</param-value>
-    </init-param>
   </servlet>
 
   <servlet-mapping>
diff --git 
a/backend/manager/modules/welcome/src/test/java/org/ovirt/engine/core/WelcomeServletTest.java
 
b/backend/manager/modules/welcome/src/test/java/org/ovirt/engine/core/WelcomeServletTest.java
index 97274a9..075c57c 100644
--- 
a/backend/manager/modules/welcome/src/test/java/org/ovirt/engine/core/WelcomeServletTest.java
+++ 
b/backend/manager/modules/welcome/src/test/java/org/ovirt/engine/core/WelcomeServletTest.java
@@ -26,6 +26,7 @@
 import org.ovirt.engine.core.branding.BrandingManager;
 import org.ovirt.engine.core.branding.BrandingTheme;
 import org.ovirt.engine.core.common.config.ConfigValues;
+import org.ovirt.engine.core.common.constants.SessionConstants;
 import org.ovirt.engine.core.common.interfaces.BackendLocal;
 import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
 import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
@@ -78,7 +79,8 @@
     @Test
     public void testDoGetHttpServletRequestHttpServletResponseNoDispatcher() 
throws IOException, ServletException {
         
when(mockRequest.getAttribute(LocaleFilter.LOCALE)).thenReturn(Locale.JAPANESE);
-        when(mockRequest.getParameter("user")).thenReturn("");
+        
when(mockRequest.getParameter(SessionConstants.SSO_TOKEN_KEY)).thenReturn("");
+        when(mockRequest.getRequestURL()).thenReturn(new 
StringBuffer("http://localhost:8080/ovirt-engine/";));
         testServlet.doGet(mockRequest, mockResponse);
         verify(mockRequest).setAttribute("localeKeys", localeKeys);
         //Make sure the content type contains UTF-8 so the characters display 
properly.
@@ -89,7 +91,8 @@
     public void testDoGetHttpServletRequestHttpServletResponseWithDispatcher() 
throws IOException, ServletException {
         
when(mockRequest.getAttribute(LocaleFilter.LOCALE)).thenReturn(Locale.JAPANESE);
         
when(mockRequest.getRequestDispatcher("/WEB-INF/ovirt-engine.jsp")).thenReturn(mockDispatcher);
-        when(mockRequest.getParameter("user")).thenReturn("");
+        
when(mockRequest.getParameter(SessionConstants.SSO_TOKEN_KEY)).thenReturn("");
+        when(mockRequest.getRequestURL()).thenReturn(new 
StringBuffer("http://localhost:8080/ovirt-engine/";));
         testServlet.doGet(mockRequest, mockResponse);
         verify(mockRequest).setAttribute("localeKeys", localeKeys);
         //Make sure the content type contains UTF-8 so the characters display 
properly.
diff --git a/packaging/services/ovirt-engine/ovirt-engine.conf.in 
b/packaging/services/ovirt-engine/ovirt-engine.conf.in
index 9de8c4c..b14cafe 100644
--- a/packaging/services/ovirt-engine/ovirt-engine.conf.in
+++ b/packaging/services/ovirt-engine/ovirt-engine.conf.in
@@ -268,6 +268,8 @@
 SSO_WELCOME_URL=${ENGINE_URI}
 SSO_URL=${ENGINE_URI}/sso
 SSO_SWITCH_USER_URL=${SSO_URL}/login
+SSO_LOGOUT_URL=${ENGINE_URI}/sso/logout
+SSO_GET_TOKEN_URL=${ENGINE_URI}/sso/get-token
 SSO_ENABLE_EXTERNAL_AUTH=true
 SSO_ENFORCE_NEGO=false
 SSO_ACCEPT_BASIC_AUTH_HEADERS=true


-- 
To view, visit https://gerrit.ovirt.org/40672
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0227778d53f4c63867aa2887580539efab8fa7c8
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Ravi Nori <rn...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to