-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
87 lines (72 loc) · 2.61 KB
/
Copy pathapp.js
File metadata and controls
87 lines (72 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
const express = require('express');
const app = express();
const db = require('./db');
const port = 3000;
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const session = require('express-session');
const bcrypt = require('bcryptjs');
// Configuro la strategia locale per l'autenticazione
passport.use(new LocalStrategy(
async (username, password, done) => {
try {
const user = await db('utente').where({ username }).first();
if (!user) {
return done(null, false, { message: 'Username inesistente' });
}
const isMatch = await bcrypt.compare(password, user.password);
if (!isMatch) {
return done(null, false, { message: 'Password errata' });
}
return done(null, user);
} catch (error) {
return done(error);
}
}
));
// Serializza l'utente nella sessione
passport.serializeUser((user, done) => {
done(null, user.username); // salvo lo username dell'utente nella sessione
});
// Deserializza l'utente dalla sessione
passport.deserializeUser(async (username, done) => {
try {
const user = await db('utente').where({ username }).first();
done(null, user); // recupero l'utente dal database
} catch (error) {
done(error, null);
}
});
// gestisco il parsing dei dati del corpo della richiesta (URL)
app.use(express.urlencoded({ extended: true }));
app.use(express.json()); //gestisco i dati JSON
// Configuro le sessioni
app.use(session({
secret: '$2a$10$6Z6IIp2q6/URag4J/YgImOc9/Eysjb0D2kfj/k5/wouEox.4LJeyi', // 'UpoSecret2024' crittografato con bcrypt
resave: false,
saveUninitialized: false
}));
// Inizializzo Passport e le sessioni
app.use(passport.initialize());
app.use(passport.session());
// Configurazione del motore di template
app.set('view engine', 'ejs');
app.set('views', './views'); // Directory dove mettere i file EJS
// Uso di public come cartella per file come CSS, immagini e js
app.use(express.static('public'));
// importazione delle rotte
const index = require('./routes/Index');
const indexSquadra = require('./routes/indexSquadra');
const personaggi = require('./routes/Personaggi');
const autenticazione = require('./routes/Autenticazione');
const squadra = require('./routes/Squadra');
// Uso delle rotte
app.use('/', index);
app.use('/personaggi', personaggi);
app.use('/autenticazione', autenticazione);
app.use('/squadraAPI', squadra);
app.use('/squadra', indexSquadra)
// Avvio del server
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});