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"
|
||||
pageEncoding="ISO-8859-1"%>
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
||||
pageEncoding="UTF-8"%>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="ISO-8859-1">
|
||||
<title>Insert title here</title>
|
||||
<meta charset="UTF-8">
|
||||
<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>
|
||||
<body>
|
||||
<jsp:include page="cerca-aggiungi.jsp"></jsp:include>
|
||||
<body style="background-size: 100%">
|
||||
|
||||
<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>
|
||||
</html>
|
|
@ -6,17 +6,17 @@
|
|||
<meta charset="UTF-8">
|
||||
<title>Nav</title>
|
||||
<style>
|
||||
.nav{
|
||||
background-color: #666666;
|
||||
}
|
||||
|
||||
.nav-link{
|
||||
color: white
|
||||
}
|
||||
|
||||
.nav-link:hover{
|
||||
color: #f1f1f1;
|
||||
}
|
||||
.nav {
|
||||
background-color: #666666;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
color: white
|
||||
}
|
||||
|
||||
.nav-link:hover {
|
||||
color: #f1f1f1;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
@ -28,5 +28,10 @@
|
|||
<li class="nav-item"><a class="nav-link" href="elenco-ordini.jsp">Visualizza
|
||||
ordini</a></li>
|
||||
</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>
|
||||
</html>
|
|
@ -1,30 +1,32 @@
|
|||
package dao;
|
||||
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import bean.Utente;
|
||||
|
||||
public class UtenteDao implements UtenteDaoI {
|
||||
|
||||
|
||||
OracleConnection c = new OracleConnection();
|
||||
|
||||
@Override
|
||||
public boolean registrazione(String nickname, String password, String ruolo) {
|
||||
Connection connection = c.open();
|
||||
|
||||
boolean ok = false;
|
||||
|
||||
|
||||
int n = -1;
|
||||
|
||||
String query = "insert into utenti values(?, ?, ?)";
|
||||
|
||||
|
||||
try {
|
||||
PreparedStatement st = connection.prepareStatement(query);
|
||||
|
||||
st.setString(1, nickname);
|
||||
st.setString(2, password);
|
||||
st.setString(3, ruolo);
|
||||
|
||||
// n = st.executeUpdate();
|
||||
n = st.executeUpdate();
|
||||
//
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -32,16 +34,39 @@ public class UtenteDao implements UtenteDaoI {
|
|||
}
|
||||
|
||||
c.close();
|
||||
// return n == -1 ? false : true;
|
||||
|
||||
c.close();
|
||||
return ok;
|
||||
return n == -1 ? false : true;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Utente login(String nickname, String password) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
Utente letto = 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