-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
126 lines (107 loc) · 3.84 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//Common Importing Statements
const express = require('express')
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const ejsMate = require('ejs-mate')
const methodOverride = require('method-override')
const path = require("path")
const cookieParser = require("cookie-parser");
const sessions = require('express-session');
const dotenv = require('dotenv')
const flash = require('connect-flash');
const Cryptr = require('cryptr');
const cryptr = new Cryptr('myTotallySecretKey');
//models
const User = require("./models/user");
const Circular = require("./models/circular")
const Constant = require("./models/constant")
//middleware
const { isLoggedIn } = require("./middleware/auth")
//routes
const userRoutes = require('./routes/user')
const circularRoutes = require('./routes/circular')
const notificationRoutes=require('./routes/notification')
const departmentCircular = require('./routes/departmentCircular')
//initilizing
const app = express()
app.use(express.static(path.join(__dirname, "/public")))
app.use(methodOverride('_method'))
app.engine('ejs', ejsMate)
dotenv.config()
app.use(express.json({ extended: true }))
app.use(express.urlencoded({ extended: true }));
app.use(flash());
app.use(methodOverride('_method'))
//session
const oneDay = 1000 * 60 * 60 * 24;
app.use(sessions({
secret: "webpirates",
saveUninitialized: true,
cookie: { maxAge: oneDay },
resave: false
}));
//constantQuery
const type = ["Civil Engineering", "Mechanical Engineering", "Mechatronics Engineering", "Automobile Engineering", "Chemical Engineering", "Food Technology", "Electrical and Electronics Engineering", "Electronics and Instrumentation Engineering", "Electronics and Communication Engineering", "Computer Science and Engineering", "Information Technology", "Computer Science and Design", "Artificial Intelligence (AIML & AIDS)", "Management Studies", "Computer Application", "Computer Technology - UG", "Computer Technology - PG", "Mathematics", "Physics", "Chemistry", "English"]
//locals
app.use(async (req, res, next) => {
//const deptt= new Constant({dept:type});
//await deptt.save()
console.log(req.session.dept);
res.locals.success=req.flash('success');
res.locals.error=req.flash('error');
res.locals.currentUser = req.session._id;
res.locals.dept = req.session.dept;
next()
})
app.set('view engine', 'ejs');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
//db connection
mongoose.connect(process.env.DB).then(() => {
console.log('Db connection open')
}).catch(err => {
console.log(err.message, 'oops err');
});
//session variable
var session; //to make variable available in all place
//home routes
app.get("/", async(req, res) => {
session = req.session;
if (session._id) {
const user = await User.findById(session._id)
if(user.isAdmin){
return res.redirect(`/circular/all/web/${user.department}/${user.batch}/${user.type}`)
}else{
return res.redirect(`/dept/all/web/${user.department}/${user.batch}/${user.type}`)
}
}
else {
req.flash("success","Hii")
res.render('auth_page/login')
}
})
//routers
app.use('/user', userRoutes)
app.use('/circular', circularRoutes)
app.use('/api',notificationRoutes)
app.use('/dept',departmentCircular)
app.get('/:id/secured',async(req,res)=>{
try{
const {id} = req.params
const decryptedUrl = await cryptr.decrypt(id);
console.log('decrypted url');
console.log(decryptedUrl);
const circular =await Circular.findOne({filePath:decryptedUrl})
res.redirect(`/circular/hash/${circular._id}`);
}catch(e){
console.log(e);
}
})
//listening port
//port
const PORT = process.env.PORT || 3000
app.listen(PORT, () => {
console.log(`Server is running at Port ${PORT}`)
}
)