01: /* ***** BEGIN LICENSE BLOCK *****
02: * Version: MPL 1.1
03: * The contents of this file are subject to the Mozilla Public License Version
04: * 1.1 (the "License"); you may not use this file except in compliance with
05: * the License. You may obtain a copy of the License at
06: * http://www.mozilla.org/MPL/
07: *
08: * Software distributed under the License is distributed on an "AS IS" basis,
09: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
10: * for the specific language governing rights and limitations under the
11: * License.
12: *
13: * The Original Code is Riot.
14: *
15: * The Initial Developer of the Original Code is
16: * Neteye GmbH.
17: * Portions created by the Initial Developer are Copyright (C) 2006
18: * the Initial Developer. All Rights Reserved.
19: *
20: * Contributor(s):
21: * Felix Gnass [fgnass at neteye dot de]
22: *
23: * ***** END LICENSE BLOCK ***** */
24: package org.riotfamily.riot.security.session;
25:
26: import javax.servlet.http.HttpServletRequest;
27: import javax.servlet.http.HttpServletResponse;
28:
29: import org.riotfamily.riot.runtime.RiotRuntime;
30: import org.riotfamily.riot.runtime.RiotRuntimeAware;
31: import org.riotfamily.riot.security.auth.RiotUser;
32:
33: /**
34: * HandlerInterceptor that sends a redirect to the login URL in case the
35: * user is not logged in.
36: *
37: * @author Felix Gnass [fgnass at neteye dot de]
38: */
39: public class LoginInterceptor extends AccessControlInterceptor
40: implements RiotRuntimeAware {
41:
42: private String loginUrl;
43:
44: private RiotRuntime runtime;
45:
46: public void setLoginUrl(String loginUrl) {
47: this .loginUrl = loginUrl;
48: }
49:
50: public void setRiotRuntime(RiotRuntime runtime) {
51: this .runtime = runtime;
52: }
53:
54: /**
55: * Returns <code>true</code> if a principal is set, otherwise
56: * <code>false</code> is returned and a redirect to the login form is sent.
57: */
58: protected boolean isAuthorized(HttpServletRequest request,
59: HttpServletResponse response, RiotUser user)
60: throws Exception {
61:
62: if (user != null) {
63: return true;
64: } else {
65: response.sendRedirect(response.encodeRedirectURL(request
66: .getContextPath()
67: + runtime.getServletPrefix() + loginUrl));
68:
69: return false;
70: }
71: }
72:
73: }
|