1 /*
2 * $Id: CheckLogonTag.java 471754 2006-11-06 14:55:09Z husted $
3 *
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22
23 package org.apache.struts.webapp.example;
24
25
26 import javax.servlet.http.HttpSession;
27 import javax.servlet.jsp.JspException;
28 import javax.servlet.jsp.tagext.TagSupport;
29
30
31 /**
32 * Check for a valid User logged on in the current session. If there is no
33 * such user, forward control to the logon page.
34 *
35 * @author Craig R. McClanahan
36 * @author Marius Barduta
37 * @version $Rev: 471754 $ $Date: 2006-11-06 08:55:09 -0600 (Mon, 06 Nov 2006) $
38 */
39
40 public final class CheckLogonTag extends TagSupport {
41
42
43 // --------------------------------------------------- Instance Variables
44
45
46 /**
47 * The key of the session-scope bean we look for.
48 */
49 private String name = Constants.USER_KEY;
50
51
52 /**
53 * The page to which we should forward for the user to log on.
54 */
55 private String page = "/logon.jsp";
56
57
58 // ----------------------------------------------------------- Properties
59
60
61 /**
62 * Return the bean name.
63 */
64 public String getName() {
65
66 return (this.name);
67
68 }
69
70
71 /**
72 * Set the bean name.
73 *
74 * @param name The new bean name
75 */
76 public void setName(String name) {
77
78 this.name = name;
79
80 }
81
82
83 /**
84 * Return the forward page.
85 */
86 public String getPage() {
87
88 return (this.page);
89
90 }
91
92
93 /**
94 * Set the forward page.
95 *
96 * @param page The new forward page
97 */
98 public void setPage(String page) {
99
100 this.page = page;
101
102 }
103
104
105 // ------------------------------------------------------- Public Methods
106
107
108 /**
109 * Defer our checking until the end of this tag is encountered.
110 *
111 * @exception JspException if a JSP exception has occurred
112 */
113 public int doStartTag() throws JspException {
114
115 return (SKIP_BODY);
116
117 }
118
119
120 /**
121 * Perform our logged-in user check by looking for the existence of
122 * a session scope bean under the specified name. If this bean is not
123 * present, control is forwarded to the specified logon page.
124 *
125 * @exception JspException if a JSP exception has occurred
126 */
127 public int doEndTag() throws JspException {
128
129 // Is there a valid user logged on?
130 boolean valid = false;
131 HttpSession session = pageContext.getSession();
132 if ((session != null) && (session.getAttribute(name) != null))
133 valid = true;
134
135 // Forward control based on the results
136 if (valid)
137 return (EVAL_PAGE);
138 else {
139 try {
140 pageContext.forward(page);
141 } catch (Exception e) {
142 throw new JspException(e.toString());
143 }
144 return (SKIP_PAGE);
145 }
146
147 }
148
149
150 /**
151 * Release any acquired resources.
152 */
153 public void release() {
154
155 super.release();
156 this.name = Constants.USER_KEY;
157 this.page = "/logon.jsp";
158
159 }
160
161
162 }