forked from marg-o/brigate
-- login - logout - registrazione
This commit is contained in:
parent
76a3d2be78
commit
717612bc8a
|
@ -1,12 +1,46 @@
|
||||||
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||||||
pageEncoding="ISO-8859-1"%>
|
pageEncoding="UTF-8"%>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="ISO-8859-1">
|
<meta charset="UTF-8">
|
||||||
<title>Insert title here</title>
|
<title>Login</title>
|
||||||
|
<link rel="stylesheet"
|
||||||
|
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
|
||||||
|
crossorigin="anonymous">
|
||||||
|
<link rel="stylesheet" href="css/stile.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body style="background-size: 100%">
|
||||||
<jsp:include page="cerca-aggiungi.jsp"></jsp:include>
|
|
||||||
|
<h2>Login</h2>
|
||||||
|
<%
|
||||||
|
String messaggio = (String) request.getAttribute("messaggio");
|
||||||
|
if (messaggio != null) {
|
||||||
|
%>
|
||||||
|
<p><%=messaggio%></p>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<form action="utente-servlet" method="post" name="modulo">
|
||||||
|
<div>Nickname</div>
|
||||||
|
<input type="text" name="nickname" required><br>
|
||||||
|
<div>Password</div>
|
||||||
|
<input type="password" name="password" required><br>
|
||||||
|
<input type="hidden" name="azione" value="login">
|
||||||
|
<input type="submit" value="Login">
|
||||||
|
</form>
|
||||||
|
<hr>
|
||||||
|
<h2>Registrazione</h2>
|
||||||
|
<form action="utente-servlet" method="post" name="modulo">
|
||||||
|
<div>Nickname</div>
|
||||||
|
<input type="text" name="nickname" required>
|
||||||
|
<div>Password</div>
|
||||||
|
<input type="password" name="password" required>
|
||||||
|
<div>Conferma password</div>
|
||||||
|
<input type="password" name="conferma" required>
|
||||||
|
<input type="hidden" name="azione" value="registrazione"><br><input
|
||||||
|
type="submit" value="Registrati" class="bottone bottone-small">
|
||||||
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -6,17 +6,17 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Nav</title>
|
<title>Nav</title>
|
||||||
<style>
|
<style>
|
||||||
.nav{
|
.nav {
|
||||||
background-color: #666666;
|
background-color: #666666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-link{
|
.nav-link {
|
||||||
color: white
|
color: white
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-link:hover{
|
.nav-link:hover {
|
||||||
color: #f1f1f1;
|
color: #f1f1f1;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -28,5 +28,10 @@
|
||||||
<li class="nav-item"><a class="nav-link" href="elenco-ordini.jsp">Visualizza
|
<li class="nav-item"><a class="nav-link" href="elenco-ordini.jsp">Visualizza
|
||||||
ordini</a></li>
|
ordini</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<form action="utente-servlet" method="post" class="logout-form"
|
||||||
|
style="position: fixed; top: 2px; right: 5px">
|
||||||
|
<input type="hidden" name="azione" value="logout"> <input
|
||||||
|
type="submit" value="logout" class="nav-item">
|
||||||
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
|
@ -1,30 +1,32 @@
|
||||||
package dao;
|
package dao;
|
||||||
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
import bean.Utente;
|
import bean.Utente;
|
||||||
|
|
||||||
public class UtenteDao implements UtenteDaoI {
|
public class UtenteDao implements UtenteDaoI {
|
||||||
|
|
||||||
OracleConnection c = new OracleConnection();
|
OracleConnection c = new OracleConnection();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean registrazione(String nickname, String password, String ruolo) {
|
public boolean registrazione(String nickname, String password, String ruolo) {
|
||||||
Connection connection = c.open();
|
Connection connection = c.open();
|
||||||
|
|
||||||
boolean ok = false;
|
int n = -1;
|
||||||
|
|
||||||
String query = "insert into utenti values(?, ?, ?)";
|
String query = "insert into utenti values(?, ?, ?)";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
PreparedStatement st = connection.prepareStatement(query);
|
PreparedStatement st = connection.prepareStatement(query);
|
||||||
|
|
||||||
st.setString(1, nickname);
|
st.setString(1, nickname);
|
||||||
|
st.setString(2, password);
|
||||||
|
st.setString(3, ruolo);
|
||||||
|
|
||||||
// n = st.executeUpdate();
|
n = st.executeUpdate();
|
||||||
//
|
//
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -32,16 +34,39 @@ public class UtenteDao implements UtenteDaoI {
|
||||||
}
|
}
|
||||||
|
|
||||||
c.close();
|
c.close();
|
||||||
// return n == -1 ? false : true;
|
return n == -1 ? false : true;
|
||||||
|
|
||||||
c.close();
|
|
||||||
return ok;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Utente login(String nickname, String password) {
|
public Utente login(String nickname, String password) {
|
||||||
// TODO Auto-generated method stub
|
Utente letto = null;
|
||||||
return null;
|
Connection connection = c.open();
|
||||||
|
|
||||||
|
String query = "select * from utenti where nickname = ? and password = ?";
|
||||||
|
|
||||||
|
try {
|
||||||
|
PreparedStatement st = connection.prepareStatement(query);
|
||||||
|
|
||||||
|
st.setString(1, nickname);
|
||||||
|
st.setString(2, password);
|
||||||
|
|
||||||
|
ResultSet rs = st.executeQuery();
|
||||||
|
while(rs.next()) {
|
||||||
|
letto = new Utente();
|
||||||
|
letto.setNick(rs.getString(1));
|
||||||
|
letto.setPassword(rs.getString(2));
|
||||||
|
letto.setRuolo(rs.getString(3));
|
||||||
|
System.out.println(letto);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
c.close();
|
||||||
|
return letto;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
74
src/filtri/FiltroLogin.java
Normal file
74
src/filtri/FiltroLogin.java
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
package filtri;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import javax.servlet.Filter;
|
||||||
|
import javax.servlet.FilterChain;
|
||||||
|
import javax.servlet.FilterConfig;
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.ServletRequest;
|
||||||
|
import javax.servlet.ServletResponse;
|
||||||
|
import javax.servlet.annotation.WebFilter;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
|
import bean.Utente;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Servlet Filter implementation class FiltroLogin
|
||||||
|
*/
|
||||||
|
@WebFilter(urlPatterns = { "/cerca-aggiungi.jsp", "/elenco-contatti.jsp",
|
||||||
|
"/elenco-ordini.jsp",
|
||||||
|
"/error.jsp", "/home-contatto.jsp" }) // Annotation
|
||||||
|
public class FiltroLogin implements Filter {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default constructor.
|
||||||
|
*/
|
||||||
|
public FiltroLogin() {
|
||||||
|
// TODO Auto-generated constructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see Filter#destroy()
|
||||||
|
*/
|
||||||
|
public void destroy() {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
|
||||||
|
*/
|
||||||
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
|
||||||
|
throws IOException, ServletException {
|
||||||
|
HttpServletRequest request1 = (HttpServletRequest) request;
|
||||||
|
HttpServletResponse response1 = (HttpServletResponse) response;
|
||||||
|
|
||||||
|
// La sessione viene creata la prima volta che viene invocato il server
|
||||||
|
// Ottengo l'oggetto sessione già esistente
|
||||||
|
HttpSession session = request1.getSession(false);
|
||||||
|
|
||||||
|
// Se la sessione non esiste, ne creo una nuova
|
||||||
|
if (session == null) {
|
||||||
|
session = request1.getSession(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ottengo l'attributo di sessione "utente"
|
||||||
|
Utente u = (Utente) session.getAttribute("utente");
|
||||||
|
|
||||||
|
if (u == null) { // Se l'utente non esiste, non è stata effettuata la login -> torno indietro
|
||||||
|
response1.sendRedirect("index.jsp");
|
||||||
|
} else { // Altrimenti, proseguo
|
||||||
|
chain.doFilter(request1, response1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see Filter#init(FilterConfig)
|
||||||
|
*/
|
||||||
|
public void init(FilterConfig fConfig) throws ServletException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
62
src/service/UtenteService.java
Normal file
62
src/service/UtenteService.java
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
|
||||||
|
package service;
|
||||||
|
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
|
||||||
|
import bean.Utente;
|
||||||
|
import dao.UtenteDao;
|
||||||
|
|
||||||
|
public class UtenteService {
|
||||||
|
|
||||||
|
public static final String SALT = "lol-123";
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static UtenteDao ud = new UtenteDao();
|
||||||
|
|
||||||
|
public static boolean registrazione(String nickname, String password) {
|
||||||
|
String saltedPassword = SALT + password;
|
||||||
|
String hashedPassword = generateHash(saltedPassword);
|
||||||
|
|
||||||
|
return ud.registrazione(nickname, hashedPassword, "utente");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean registrazione(String nickname, String password, String ruolo) {
|
||||||
|
String saltedPassword = SALT + password;
|
||||||
|
String hashedPassword = generateHash(saltedPassword);
|
||||||
|
|
||||||
|
return ud.registrazione(nickname, hashedPassword, ruolo);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Utente login(String nickname, String password) {
|
||||||
|
String saltedPassword = SALT + password;
|
||||||
|
String hashedPassword = generateHash(saltedPassword);
|
||||||
|
|
||||||
|
System.out.println("Inserita " + hashedPassword);
|
||||||
|
return ud.login(nickname, hashedPassword);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String generateHash(String input) {
|
||||||
|
StringBuilder hash = new StringBuilder();
|
||||||
|
|
||||||
|
try {
|
||||||
|
MessageDigest sha = MessageDigest.getInstance("SHA-1");
|
||||||
|
byte[] hashedBytes = sha.digest(input.getBytes());
|
||||||
|
char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
|
||||||
|
'a', 'b', 'c', 'd', 'e', 'f' };
|
||||||
|
for (int idx = 0; idx < hashedBytes.length; ++idx) {
|
||||||
|
byte b = hashedBytes[idx];
|
||||||
|
hash.append(digits[(b & 0xf0) >> 4]);
|
||||||
|
hash.append(digits[b & 0x0f]);
|
||||||
|
}
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
// handle error here.
|
||||||
|
}
|
||||||
|
|
||||||
|
return hash.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
109
src/servlet/UtenteServlet.java
Normal file
109
src/servlet/UtenteServlet.java
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
|
||||||
|
package servlet;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.annotation.WebServlet;
|
||||||
|
import javax.servlet.http.HttpServlet;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
|
import bean.Utente;
|
||||||
|
import service.UtenteService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Servlet implementation class ServletUtente
|
||||||
|
*/
|
||||||
|
@WebServlet("/utente-servlet")
|
||||||
|
public class UtenteServlet extends HttpServlet {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
|
||||||
|
* response)
|
||||||
|
*/
|
||||||
|
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||||
|
throws ServletException, IOException {
|
||||||
|
response.getWriter().append("Served at: ").append(request.getContextPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
|
||||||
|
* response)
|
||||||
|
*/
|
||||||
|
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||||
|
throws ServletException, IOException {
|
||||||
|
// Leggo il parametro azione
|
||||||
|
String azione = request.getParameter("azione");
|
||||||
|
|
||||||
|
// Registrazione
|
||||||
|
if (azione.equals("registrazione")) {
|
||||||
|
// Leggo i parametri nickname, nome, cognome, email, numero, password
|
||||||
|
String nickname = request.getParameter("nickname");
|
||||||
|
String password = request.getParameter("password");
|
||||||
|
|
||||||
|
// Invoco il metodo registrazione
|
||||||
|
boolean ok = UtenteService.registrazione(nickname, password, "utente");
|
||||||
|
|
||||||
|
// Se tutto ok, inviare con un messaggio di conferma la risposta a login.jsp
|
||||||
|
if (ok) {
|
||||||
|
String messaggio = "Registrazione effettuata, ora procedi con la login";
|
||||||
|
request.setAttribute("messaggio", messaggio);
|
||||||
|
request.getRequestDispatcher("index.jsp").forward(request, response);
|
||||||
|
} else { // Altrimenti, inviare con un messaggio di errore la risposta a
|
||||||
|
// registrazione.jsp
|
||||||
|
String messaggio = "Registrazione fallita, il nickname non è disponinibile, ritenta";
|
||||||
|
request.setAttribute("messaggio", messaggio);
|
||||||
|
request.getRequestDispatcher("index.jsp").forward(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (azione.equals("login")) { // Login
|
||||||
|
// Leggo i parametri nickname e password
|
||||||
|
String nickname = request.getParameter("nickname");
|
||||||
|
String password = request.getParameter("password");
|
||||||
|
|
||||||
|
// Chiamo il metodo login
|
||||||
|
Utente loggato = UtenteService.login(nickname, password);
|
||||||
|
|
||||||
|
// Se tutto ok, link a index.jsp
|
||||||
|
if (loggato != null) {
|
||||||
|
|
||||||
|
//Ottengo l'oggetto Session
|
||||||
|
HttpSession sessione = request.getSession(false);
|
||||||
|
|
||||||
|
//Setto come attributo di sessione l'utente e la sua lista dei preferiti vuota
|
||||||
|
if(sessione != null) {
|
||||||
|
sessione.setAttribute("utente", loggato);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(loggato.getRuolo().equals("utente")) {
|
||||||
|
response.sendRedirect("cerca-aggiungi.jsp");
|
||||||
|
}else {
|
||||||
|
response.sendRedirect("elenco-ordini.jsp");
|
||||||
|
}
|
||||||
|
} else {// Altrimenti, link a login.jsp con un messaggio di errore
|
||||||
|
String messaggio = "Login fallita, ritenta";
|
||||||
|
request.setAttribute("messaggio", messaggio);
|
||||||
|
request.getRequestDispatcher("index.jsp").forward(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}else if(azione.equals("logout")) { //Logout
|
||||||
|
//Chiudo la sessione
|
||||||
|
HttpSession sessione = request.getSession(false);
|
||||||
|
|
||||||
|
if(sessione != null) {
|
||||||
|
sessione.invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Link alla login.jsp
|
||||||
|
response.sendRedirect("index.jsp");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user