-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathindex.js
94 lines (78 loc) · 2.39 KB
/
index.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
92
93
94
const express = require("express");
const router = express.Router();
const User = require("../models/user");
const middlewares = require("../middlewares/index");
const passportLocal = require("../auth/local");
const passportGithub = require("../auth/github");
// rendering signin page
router.get("/", (req, res)=>{
res.redirect("/login");
});
// rendering the dashboard
router.get("/dashboard", middlewares.isLoggedIn, middlewares.ensureTfa, (req, res)=>{
User.findById(req.user.id).then((rUser)=>{
if(!rUser){
return res.redirect("/login");
}
let isChecked = rUser.tfa;
console.log("isChecked: ", isChecked);
res.render("dashboard", {username: rUser.username, isChecked});
})
});
// rendering registration page
router.get("/register", (req, res)=>{
res.render("register");
});
// handling registration
router.post("/register", (req, res)=>{
const user = {username: req.body.username};
User.register(user, req.body.password, (err, rUser)=>{
if(err){
console.log(err);
res.render("register");
}
passportLocal.authenticate("local")(req, res, ()=>{
res.redirect("/dashboard");
});
});
});
// rendering the login page
router.get("/login", (req, res)=>{
if(req.user){
return res.redirect("/dashboard");
}
res.render("login");
});
// handling login
router.post("/login", passportLocal.authenticate("local", {
// successRedirect: "/dashboard",
failureRedirect: "/login"
}), (req, res, next)=>{
User.findById(req.user._id).then((rUser)=>{
next();
});
}, middlewares.isTfa, (req, res)=>{
res.redirect("/dashboard");
});
// hanling login with github
router.get('/login/github', passportGithub.authenticate('github', { scope: [ 'user:email' ] }),
(req,res)=>{
// console.log("In /login/github :",req.user);
}
);
// Github Oauth Callback
router.get('/auth/github/callback', passportGithub.authenticate('github', { failureRedirect: '/login' }),
(req, res)=> {
// Successful authentication, redirect home.
res.redirect('/dashboard');
});
// loggin out
router.get("/logout", middlewares.isLoggedIn, (req, res)=>{
User.findById(req.user._id).then((rUser)=>{
rUser.secret_key.authenticated = false;
rUser.save();
req.logOut();
res.redirect("/");
});
});
module.exports = router;