-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
91 lines (76 loc) · 2.18 KB
/
server.js
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
88
89
90
91
import express from "express";
import parser from "body-parser";
import ejs from "ejs";
import allRoutes from "./src/routes/web.js";
import flash from "connect-flash";
import cookie from "cookie-parser";
import session from "express-session";
import cookieParser from "cookie-parser";
import passport from "passport";
import passportLocal from "passport-local";
import database from "./src/model/database.js";
import cors from "cors";
const app = express();
app.use(cors({optionsSuccessStatus:200}))
app.use(parser.json());
app.use(parser.urlencoded({extended: true}));
app.use(cookieParser());
app.use(session({
secret: process.env["secret"],
resave: false,
saveUninitialized: false,
cookie: {
maxAge: 1000*60*60*24
}
}))
app.use(flash())
app.use(express.static("./src/public"));
app.set("view engine", "ejs");
app.set("views", "./src/views");
app.use(passport.initialize());
app.use(passport.session());
const localStrategy = passportLocal.Strategy;
passport.use( new localStrategy({
usernameField: "email",
passwordField: "password",
passReqToCallback: true
},
async (req, email, password, done)=>{
try{
await database.getUserByEmail(email)
.then(async user=>{
if(!user){
return done(
null,
false,
req.flash("message", `The user with email ${email} does not exist`)
);
}
if(user){
let match = await database.comparePassword(password, user);
if(match === true){
return done(null, user, null);
}
}
})
}catch(e){
return done(null, false, req.flash("message", ""+e))
}
}
))
passport.serializeUser((user, done)=>{
done(null, user.userid);
})
passport.deserializeUser( (id, done)=>{
database.getUserById(id)
.then(user=>{
return done(null, user)
}).catch(err=>{
return done(err, null)
})
})
allRoutes(app);
const port = process.env.PORT || 5050;
app.listen(port, ()=>{
console.log("Server is running.")
})