| Author | Dave Jarvis <email> |
|---|---|
| Date | 2015-01-23 01:43:42 GMT-0800 |
| Commit | 76975c8c5fcbbb19802d9bc4d3a9afa05ab336b2 |
| Parent | 47f4b9b |
| import javax.xml.transform.Transformer; | ||
| +import org.apache.shiro.SecurityUtils; | ||
| +import org.apache.shiro.subject.Subject; | ||
| + | ||
| import to.discuss.Base; | ||
| import to.discuss.util.AppURIResolver; | ||
| private void sendContent( HttpServletResponse response ) throws Exception { | ||
| Transformer transformer = getTransformer(); | ||
| + setParameters( transformer ); | ||
| transformer.setOutputProperty( OutputKeys.ENCODING, getEncoding() ); | ||
| transformer.transform( getDocument(), getResultStream( response ) ); | ||
| + } | ||
| + | ||
| + protected void setParameters( Transformer transformer ) { | ||
| + Subject user = SecurityUtils.getSubject(); | ||
| + | ||
| + transformer.setParameter( "P_AUTHENTICATED", user.isAuthenticated() ); | ||
| } | ||
| import org.apache.shiro.subject.Subject; | ||
| import org.apache.shiro.SecurityUtils; | ||
| +import org.apache.shiro.authc.AuthenticationException; | ||
| import org.apache.shiro.authc.AuthenticationToken; | ||
| import org.apache.shiro.authc.UsernamePasswordToken; | ||
| response.sendRedirect( saved.getRequestUrl() ); | ||
| } | ||
| + } | ||
| + catch( AuthenticationException ae ) { | ||
| + // Login again. | ||
| + super.doGet( request, response ); | ||
| } | ||
| catch( Exception e ) { | ||
| package to.discuss.servlet; | ||
| +import javax.servlet.ServletException; | ||
| +import javax.servlet.http.HttpServletRequest; | ||
| +import javax.servlet.http.HttpServletResponse; | ||
| + | ||
| +import org.apache.shiro.SecurityUtils; | ||
| +import org.apache.shiro.subject.Subject; | ||
| + | ||
| /** | ||
| * Main HTTP request handler for /app/logout. | ||
| */ | ||
| public class Logout extends App { | ||
| public Logout() { | ||
| + } | ||
| + | ||
| + /** | ||
| + * Log the user out and redirect back to the home page. | ||
| + */ | ||
| + @Override | ||
| + protected boolean preprocess( | ||
| + HttpServletRequest request, | ||
| + HttpServletResponse response ) throws ServletException { | ||
| + | ||
| + try { | ||
| + SecurityUtils.getSubject().logout(); | ||
| + response.sendRedirect( "/app/home" ); | ||
| + } | ||
| + catch( Exception e ) { | ||
| + throw new ServletException( e ); | ||
| + } | ||
| + | ||
| + return false; | ||
| } | ||
| } |
| | Copyright 2014 White Magic Software, Inc. | ||
| +--> | ||
| -<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
| +<xsl:stylesheet version="2.0" | ||
| + xmlns:xs="http://www.w3.org/2001/XMLSchema" | ||
| + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> | ||
| <xsl:output | ||
| <!-- Application context that responds to HTTP requests. --> | ||
| -<xsl:param name="CONTEXT" select="'/app'"/> | ||
| +<xsl:param name="P_CONTEXT" select="'/app'"/> | ||
| + | ||
| +<!-- Set to true if the user is authenticated. --> | ||
| +<xsl:param name="P_AUTHENTICATED" select="false()"/> | ||
| <xsl:template match="/"> | ||
| <xsl:template match="*[@id]"> | ||
| <div class="{local-name()}"><a | ||
| - href="{$CONTEXT}/{local-name()}/{@id}"><xsl:apply-templates | ||
| + href="{$P_CONTEXT}/{local-name()}/{@id}"><xsl:apply-templates | ||
| select="node()|*"/></a></div> | ||
| </xsl:template> | ||
| <xsl:template match="menu" mode="menu"> | ||
| - <ul class="menu"><xsl:apply-templates mode="menu"/></ul> | ||
| + <ul class="menu"> | ||
| + <xsl:apply-templates mode="menu"/> | ||
| + </ul> | ||
| +</xsl:template> | ||
| + | ||
| +<!-- If the user is authenticated, then provide a log out link. --> | ||
| +<xsl:template match="item[@id = '15']" mode="menu" priority="1"> | ||
| + <xsl:if test="$P_AUTHENTICATED"> | ||
| + <li class="item"> | ||
| + <a href="{$P_CONTEXT}/{@link}"><xsl:apply-templates/></a> | ||
| + </li> | ||
| + </xsl:if> | ||
| </xsl:template> | ||
| <xsl:template match="item" mode="menu"> | ||
| <li class="item"> | ||
| - <a href="{$CONTEXT}/{@link}"><xsl:apply-templates/></a> | ||
| + <a href="{$P_CONTEXT}/{@link}"><xsl:apply-templates/></a> | ||
| </li> | ||
| </xsl:template> | ||
| <xsl:template match="policy"> | ||
| - <form id="login" method="post" action="{$CONTEXT}/login" autocomplete="off"> | ||
| + <form id="login" method="post" action="{$P_CONTEXT}/login" autocomplete="off"> | ||
| <fieldset form="login" name="login"> | ||
| <input type="text" autocomplete="off" id="account" name="account" |
| </items> | ||
| <menu id="1"> | ||
| - <item id="7"/> <item id="8"/> <item id="12"/> | ||
| + <item id="7"/> <item id="8"/> <item id="12"/> <item id="15"/> | ||
| </menu> | ||
| <menu id="2"> | ||
| <item id="1"/> <item id="3"/> <item id="4"/> <item id="5"/> <item id="6"/> | ||
| - <item id="7"/> | ||
| + <item id="7"/> <item id="15"/> | ||
| </menu> | ||
| <menu id="3"> | ||
| <item id="1"/> <item id="2"/> <item id="4"/> <item id="5"/> <item id="6"/> | ||
| - <item id="7"/> <item id="9"/> <item id="10"/> | ||
| + <item id="7"/> <item id="9"/> <item id="10"/> <item id="15"/> | ||
| </menu> | ||
| <menu id="4"> | ||
| <item id="1"/> <item id="2"/> <item id="3"/> <item id="5"/> <item id="6"/> | ||
| - <item id="7"/> <item id="9"/> <item id="10"/> | ||
| + <item id="7"/> <item id="9"/> <item id="10"/> <item id="15"/> | ||
| </menu> | ||
| <menu id="5"> | ||
| <item id="1"/> <item id="2"/> <item id="3"/> <item id="4"/> <item id="6"/> | ||
| - <item id="7"/> <item id="12"/> | ||
| + <item id="7"/> <item id="12"/> <item id="15"/> | ||
| </menu> | ||
| <menu id="6"> | ||
| <item id="1"/> <item id="2"/> <item id="3"/> <item id="4"/> <item id="5"/> | ||
| - <item id="7"/> <item id="9"/> <item id="10"/> | ||
| + <item id="7"/> <item id="9"/> <item id="10"/> <item id="15"/> | ||
| </menu> | ||
| <menu id="7"> | ||
| - <item id="1"/> | ||
| + <item id="1"/> <item id="15"/> | ||
| </menu> | ||
| <menu id="8"> | ||
| - <item id="1"/> | ||
| + <item id="1"/> <item id="15"/> | ||
| </menu> | ||
| <menu id="11"> | ||
| <item id="1"/> <item id="3"/> <item id="4"/> <item id="4"/> <item id="5"/> | ||
| <item id="6"/> <item id="7"/> <item id="9"/> <item id="10"/> | ||
| - <item id="13"/> | ||
| + <item id="13"/> <item id="15"/> | ||
| </menu> | ||
| <menu id="14"> | ||
| - <item id="1"/> | ||
| + <item id="1"/> <item id="15"/> | ||
| </menu> | ||
| <menu id="15"> |
| </xsl:template> | ||
| +<!-- The ID is required so that the menu can change dynamically. --> | ||
| <xsl:template match="item"> | ||
| - <item> | ||
| + <item id="{@id}"> | ||
| <xsl:attribute name="link" select="key( 'items', @id )/@link"/> | ||
| <xsl:value-of select="key( 'items', @id )"/> |
| Delta | 75 lines added, 17 lines removed, 58-line increase |
|---|