001: /*
002: * $Header: /cvsroot/nemesis-forum/forum/WEB-INF/src/forum-web-admin/org/nemesis/forum/webapp/admin/tag/CheckLogonTag.java,v 1.1 2003/05/05 07:59:06 davidlaurent Exp $
003: * $Revision: 1.1 $
004: * $Date: 2003/05/05 07:59:06 $
005: *
006: * ====================================================================
007: *
008: * The Apache Software License, Version 1.1
009: *
010: * Copyright (c) 1999-2001 The Apache Software Foundation. All rights
011: * reserved.
012: *
013: * Redistribution and use in source and binary forms, with or without
014: * modification, are permitted provided that the following conditions
015: * are met:
016: *
017: * 1. Redistributions of source code must retain the above copyright
018: * notice, this list of conditions and the following disclaimer.
019: *
020: * 2. Redistributions in binary form must reproduce the above copyright
021: * notice, this list of conditions and the following disclaimer in
022: * the documentation and/or other materials provided with the
023: * distribution.
024: *
025: * 3. The end-user documentation included with the redistribution, if
026: * any, must include the following acknowlegement:
027: * "This product includes software developed by the
028: * Apache Software Foundation (http://www.apache.org/)."
029: * Alternately, this acknowlegement may appear in the software itself,
030: * if and wherever such third-party acknowlegements normally appear.
031: *
032: * 4. The names "The Jakarta Project", "Struts", and "Apache Software
033: * Foundation" must not be used to endorse or promote products derived
034: * from this software without prior written permission. For written
035: * permission, please contact apache@apache.org.
036: *
037: * 5. Products derived from this software may not be called "Apache"
038: * nor may "Apache" appear in their names without prior written
039: * permission of the Apache Group.
040: *
041: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
042: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
043: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
044: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
045: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
046: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
047: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
048: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
049: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
050: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
051: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
052: * SUCH DAMAGE.
053: * ====================================================================
054: *
055: * This software consists of voluntary contributions made by many
056: * individuals on behalf of the Apache Software Foundation. For more
057: * information on the Apache Software Foundation, please see
058: * <http://www.apache.org/>.
059: *
060: */
061:
062: package org.nemesis.forum.webapp.admin.tag;
063:
064: import javax.servlet.http.HttpSession;
065: import javax.servlet.jsp.JspException;
066: import javax.servlet.jsp.tagext.TagSupport;
067:
068: import org.apache.struts.config.ModuleConfig;
069: import org.nemesis.forum.webapp.admin.Constants;
070:
071: /**
072: * Check for a valid User logged on in the current session. If there is no
073: * such user, forward control to the logon page.
074: *
075: * @author Craig R. McClanahan
076: * @author Marius Barduta
077: * @version $Revision: 1.1 $ $Date: 2003/05/05 07:59:06 $
078: */
079:
080: public final class CheckLogonTag extends TagSupport {
081:
082: // --------------------------------------------------- Instance Variables
083:
084: /**
085: * The key of the session-scope bean we look for.
086: */
087: private String name = Constants.USER_KEY;
088:
089: /**
090: * The page to which we should forward for the user to log on.
091: */
092: private String page = "/frameset.do";
093:
094: // ----------------------------------------------------------- Properties
095:
096: /**
097: * Return the bean name.
098: */
099: public String getName() {
100:
101: return (this .name);
102:
103: }
104:
105: /**
106: * Set the bean name.
107: *
108: * @param name The new bean name
109: */
110: public void setName(String name) {
111:
112: this .name = name;
113:
114: }
115:
116: /**
117: * Return the forward page.
118: */
119: public String getPage() {
120:
121: return (this .page);
122:
123: }
124:
125: /**
126: * Set the forward page.
127: *
128: * @param page The new forward page
129: */
130: public void setPage(String page) {
131:
132: this .page = page;
133:
134: }
135:
136: // ------------------------------------------------------- Public Methods
137:
138: /**
139: * Defer our checking until the end of this tag is encountered.
140: *
141: * @exception JspException if a JSP exception has occurred
142: */
143: public int doStartTag() throws JspException {
144:
145: return (SKIP_BODY);
146:
147: }
148:
149: /**
150: * Perform our logged-in user check by looking for the existence of
151: * a session scope bean under the specified name. If this bean is not
152: * present, control is forwarded to the specified logon page.
153: *
154: * @exception JspException if a JSP exception has occurred
155: */
156: public int doEndTag() throws JspException {
157:
158: // Is there a valid user logged on?
159: boolean valid = false;
160:
161: HttpSession session = pageContext.getSession();
162: if ((session != null) && (session.getAttribute(name) != null))
163: valid = true;
164:
165: // Forward control based on the results
166: if (valid)
167: return (EVAL_PAGE);
168: else {
169: ModuleConfig config = (ModuleConfig) pageContext
170: .getRequest().getAttribute(
171: org.apache.struts.Globals.MODULE_KEY);
172: try {
173:
174: pageContext.forward(/*config.getPrefix() +*/page);
175: } catch (Exception e) {
176: e.printStackTrace();
177: throw new JspException(e.toString());
178: }
179: return (SKIP_PAGE);
180: }
181:
182: }
183:
184: /**
185: * Release any acquired resources.
186: */
187: public void release() {
188:
189: super .release();
190: this .name = Constants.USER_KEY;
191: this .page = "/frameset.do";
192:
193: }
194:
195: }
|