forked from 2021-oasis-hackathon/a-boiled-egg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
142 lines (104 loc) · 3.79 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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
app.use(express.urlencoded({extended: true}));
const MongoClient = require('mongodb').MongoClient;
var db;
MongoClient.connect('mongodb+srv://hackathon1234:[email protected]/myFirstDatabase?retryWrites=true&w=majority', function(error, client){
if (error) return console.log(error);
db = client.db('database');
app.listen(3000, function(request, response){
console.log('서버실행!');
});
})
//미들웨어-------------------------------------------------------------------------
app.set('view engine', 'ejs');
app.use('/public', express.static('public'));
app.use(express.urlencoded({extended: true}))
//----------------------------------------------------------------------------로그인기능세팅
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const session = require('express-session');
app.use(session({secret : '비밀코드', resave : true, saveUninitialized: false}));
app.use(passport.initialize());
app.use(passport.session());
//-------------------------------------------------------------------------
app.get("/face",(request,response) => {
response.render('index.ejs')
});
app.get("/mainpage",(request,response) => {
response.render('mainpage.ejs')
});
app.get("/page1",(request,response) => {
response.render('page1.ejs')
});
app.get("/help",(request,response) => {
response.render('help.ejs')
});
//-------------------------------------------------------------------------저장하기
// app.post('/add', function(request,response){
// response.send('전송완료');
// console.log(request.body);
// for ( let i=0 ; i<3 ; i++ ){
// db.collection('collection').insertOne( { _id : i, 내용: request.body.contents[i]} , function(에러,결과){
// console.log('저장완료!');
// });
// }
// });
//-------------------------------------------------------------------------몽고db 모든 데이터 가져오기
app.get('/list', function(요청, 응답){
for ( let i=0 ; i<3 ; i++ ){
db.collection('collection').find({_id : 2}).toArray(function(에러, 결과){
console.log(결과)
})
}
})
//-----------------------------------------------------------------------------로그인포스트요청실행
app.post('/add', passport.authenticate('local', {
failureRedirect : '/fail'
}), function(req, res){
res.redirect('/mainpage')
});
passport.use(new LocalStrategy({
usernameField: 'id',
passwordField: 'pw',
session: true,
passReqToCallback: false,
}, function (input_id, input_pw, done) {
//console.log(입력한아이디, 입력한비번);
db.collection('login').findOne({ id: input_id }, function (error, result) {
if (error) return done(error)
if (!result) return done(null, false, { message: '존재하지않는 아이디입니다' })
if (input_pw == result.pw) {
return done(null, result)
} else {
return done(null, false, { message: '비미번호가 틀렸어요' })
}
})
}));
//-----------------------------------------------로그인세션만들기
passport.serializeUser(function (user, done) {
done(null, user.id)
});
passport.deserializeUser(function (아이디, done) {
db.collection('login').findOne({ id: 아이디 }, function (에러, 결과) {
done(null, 결과)
})
});
//-------------------------------------------
app.get("/page2", dologin,(request,response) => {
console.log(request.query.time)
const time = request.query.time;
response.render('page2.ejs', {time : time});
});
app.get("/page3",dologin,(request,response) => {
response.render('page3.ejs')
});
function dologin(request, response, next){
console.log(request.user)
if (request.user){
next();
} else {
response.render('page1.ejs')
};
};