01: /**
02: * LibreSource
03: * Copyright (C) 2004-2008 Artenum SARL / INRIA
04: * http://www.libresource.org - contact@artenum.com
05: *
06: * This file is part of the LibreSource software,
07: * which can be used and distributed under license conditions.
08: * The license conditions are provided in the LICENSE.TXT file
09: * at the root path of the packaging that enclose this file.
10: * More information can be found at
11: * - http://dev.libresource.org/home/license
12: *
13: * Initial authors :
14: *
15: * Guillaume Bort / INRIA
16: * Francois Charoy / Universite Nancy 2
17: * Julien Forest / Artenum
18: * Claude Godart / Universite Henry Poincare
19: * Florent Jouille / INRIA
20: * Sebastien Jourdain / INRIA / Artenum
21: * Yves Lerumeur / Artenum
22: * Pascal Molli / Universite Henry Poincare
23: * Gerald Oster / INRIA
24: * Mariarosa Penzi / Artenum
25: * Gerard Sookahet / Artenum
26: * Raphael Tani / INRIA
27: *
28: * Contributors :
29: *
30: * Stephane Bagnier / Artenum
31: * Amadou Dia / Artenum-IUP Blois
32: * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33: */package org.libresource.web.servlets;
34:
35: import org.libresource.Libresource;
36:
37: import org.libresource.kernel.KernelConstants;
38: import org.libresource.kernel.interfaces.KernelService;
39:
40: import org.libresource.membership.MembershipConstants;
41: import org.libresource.membership.interfaces.MembershipService;
42:
43: import javax.security.auth.callback.CallbackHandler;
44: import javax.security.auth.login.LoginContext;
45:
46: import javax.servlet.http.HttpServletRequest;
47: import javax.servlet.http.HttpServletResponse;
48:
49: public class Login extends BaseServlet {
50: protected void process(HttpServletRequest request,
51: HttpServletResponse response) throws Exception {
52: MembershipService membershipService = (MembershipService) Libresource
53: .getService("Membership");
54: KernelService kernelService = (KernelService) Libresource
55: .getService("Kernel");
56:
57: if (request.getParameter("username") == null) {
58: request.getRequestDispatcher("/pages/login.jsp").forward(
59: request, response);
60:
61: return;
62: }
63:
64: String username = request.getParameter("username");
65: String password = request.getParameter("password");
66:
67: CallbackHandler handler = org.libresource.Libresource
68: .buildCallBackHandler(username, password);
69: LoginContext loginContext = new LoginContext("libresource",
70: handler);
71:
72: try {
73: loginContext.login();
74: kernelService.getConnectedResource();
75: } catch (Exception e) {
76: request.setAttribute("error", e.getMessage());
77: request.getRequestDispatcher("/pages/login.jsp").forward(
78: request, response);
79:
80: return;
81: }
82:
83: loginContext.logout();
84:
85: request.getSession().invalidate();
86: request.getSession()
87: .setAttribute("security_username", username);
88: request.getSession()
89: .setAttribute("security_password", password);
90:
91: String redirect = (request.getParameter("loginRedirectURL")
92: .endsWith("CreateUser")) ? ("users/" + request
93: .getParameter("username")) : request
94: .getParameter("loginRedirectURL");
95:
96: // String redirect = "users/" + request.getParameter("username");
97: response.sendRedirect(redirect);
98: }
99: }
|