2 * AuthenticationAction.java created on 05.09.2003
4 * Copyright (C) 2001, 2002, 2003 The Mir-coders group
6 * This file is part of Mir.
8 * Mir is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * Mir is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with Mir; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 * In addition, as a special exception, The Mir-coders gives permission to link
23 * the code of this program with any library licensed under the Apache Software License,
24 * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
25 * (or with modified versions of the above that use the same license as the above),
26 * and distribute linked combinations including the two. You must obey the
27 * GNU General Public License in all respects for all of the code used other than
28 * the above mentioned libraries. If you modify this file, you may extend this
29 * exception to your version of the file, but you are not obligated to do so.
30 * If you do not wish to do so, delete this exception statement from your version.
32 package mir.core.ui.action.admin;
34 import javax.servlet.ServletContext;
35 import javax.servlet.http.HttpServletRequest;
36 import javax.servlet.http.HttpServletResponse;
37 import javax.servlet.http.HttpSession;
39 import mir.config.MirPropertiesConfiguration;
40 import mir.config.MirPropertiesConfiguration.PropertiesConfigExc;
41 import mir.core.model.MirUser;
42 import mir.core.service.storage.UserService;
43 import mir.core.ui.action.DispatchAction;
44 import mir.core.ui.servlet.ServletConstants;
45 import multex.Failure;
46 import net.sf.hibernate.SessionFactory;
48 import org.apache.struts.action.ActionForm;
49 import org.apache.struts.action.ActionForward;
50 import org.apache.struts.action.ActionMapping;
51 import org.apache.struts.action.DynaActionForm;
52 import org.apache.struts.action.RedirectingActionForward;
55 * AuthenticationAction
57 * @version $Id: AuthenticationAction.java,v 1.3 2003/09/18 21:42:16 idfx Exp $
59 public class AuthenticationAction extends DispatchAction {
60 private MirPropertiesConfiguration _configuration;
62 public AuthenticationAction(){
64 _configuration = MirPropertiesConfiguration.instance();
65 } catch (PropertiesConfigExc e) {
66 throw new Failure("could not load config", e);
70 private ActionForward logon(ActionMapping actionMapping, ActionForm actionForm,
71 HttpServletRequest request, HttpServletResponse response)
74 //retrieve the form input data
75 DynaActionForm form = (DynaActionForm)actionForm;
76 String login = (String) form.get("login");
77 String password = (String) form.get("password");
79 if((login == null || login.trim().length() == 0)
80 && (password == null || password.trim().length() == 0)){
82 return actionMapping.findForward("failed");
85 //access to persitence layer
86 ServletContext context = this.getServlet().getServletContext();
87 UserService userService =
88 new UserService((SessionFactory)context
89 .getAttribute(ServletConstants.SESSION_FACTORY));
92 //try to retrieve user for the given values
93 MirUser mirUser = userService.loadUser(login, password);
95 //not existent user --> error
96 return actionMapping.findForward("failed");
99 //add user to the session context
100 HttpSession session = request.getSession();
101 session.setAttribute(ServletConstants.USER, mirUser);
103 //check if we have to redirect the user
105 (String) session.getAttribute(ServletConstants.REDIRECT_ACTION);
106 System.out.println(requestUri);
107 if(requestUri != null && requestUri.indexOf("index") == -1
108 && requestUri.indexOf("logon") == -1){
110 // we have to redirect the user
111 requestUri = requestUri.substring(requestUri.lastIndexOf("/"));
113 //retrieve the correct action name
115 (String) session.getAttribute(ServletConstants.REDIRECT_QUERY_STRING);
116 if(queryString != null){
117 requestUri = requestUri + "?" +queryString;
120 //construct a redirect
121 RedirectingActionForward actionForward =
122 new RedirectingActionForward(requestUri);
123 System.out.println("redirect");
124 //return the redirect
125 return actionForward;
128 //normal redirect to the startpage
129 System.out.println("success");
130 return actionMapping.findForward("success");
133 private ActionForward logoff(ActionMapping actionMapping, ActionForm actionForm,
134 HttpServletRequest request, HttpServletResponse response)
138 HttpSession session = request.getSession();
139 session.setAttribute(ServletConstants.USER, null);
140 session.invalidate();
142 //return to the logon form
143 return actionMapping.findForward("logon");