Showing
9 changed files
with
89 additions
and
69 deletions
... | @@ -7,6 +7,7 @@ var bodyParser = require('body-parser') | ... | @@ -7,6 +7,7 @@ var bodyParser = require('body-parser') |
7 | var expressErrorHandler = require('express-error-handler'); | 7 | var expressErrorHandler = require('express-error-handler'); |
8 | var indexRouter = require('./routes/index') | 8 | var indexRouter = require('./routes/index') |
9 | var loginRouter = require('./routes/login') | 9 | var loginRouter = require('./routes/login') |
10 | +var logoutRouter = require('./routes/logout') | ||
10 | var signupRouter = require('./routes/signup') | 11 | var signupRouter = require('./routes/signup') |
11 | var lpgRouter = require('./routes/lpg') | 12 | var lpgRouter = require('./routes/lpg') |
12 | var weatherRouter = require('./routes/weather') | 13 | var weatherRouter = require('./routes/weather') |
... | @@ -21,7 +22,7 @@ var app = express(); | ... | @@ -21,7 +22,7 @@ var app = express(); |
21 | var router = express.Router(); | 22 | var router = express.Router(); |
22 | 23 | ||
23 | var cookieParser = require('cookie-parser') | 24 | var cookieParser = require('cookie-parser') |
24 | -var ExpressSession = require('express-session') | 25 | +var session = require('express-session') |
25 | 26 | ||
26 | var database = require('./database/database'); | 27 | var database = require('./database/database'); |
27 | var config = require('./config'); | 28 | var config = require('./config'); |
... | @@ -46,11 +47,19 @@ app.use(express.static(path.join(__dirname, 'public'))); | ... | @@ -46,11 +47,19 @@ app.use(express.static(path.join(__dirname, 'public'))); |
46 | app.use('/js', express.static(__dirname + '/node_modules/bootstrap/dist/js')); // redirect bootstrap JS | 47 | app.use('/js', express.static(__dirname + '/node_modules/bootstrap/dist/js')); // redirect bootstrap JS |
47 | app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css')); // redirect CSS bootstrap | 48 | app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css')); // redirect CSS bootstrap |
48 | 49 | ||
50 | +//Session 처리 | ||
51 | +app.use(cookieParser()); | ||
52 | +app.use(session({ | ||
53 | + secret:'key', | ||
54 | + resave: true, | ||
55 | + saveUninitialized:true | ||
56 | +})); | ||
49 | 57 | ||
50 | // | 58 | // |
51 | app.use('/csv',csvRouter) | 59 | app.use('/csv',csvRouter) |
52 | app.use('/menu',menuRouter) | 60 | app.use('/menu',menuRouter) |
53 | app.use('/login',loginRouter); // login page route | 61 | app.use('/login',loginRouter); // login page route |
62 | +app.use('/logout',logoutRouter); // login page route | ||
54 | app.use('/weather',weatherRouter) | 63 | app.use('/weather',weatherRouter) |
55 | app.use('/lpg',lpgRouter) | 64 | app.use('/lpg',lpgRouter) |
56 | app.use('/signup',signupRouter); // sign up page route | 65 | app.use('/signup',signupRouter); // sign up page route |
... | @@ -60,13 +69,6 @@ app.use('/showpost',showpostRouter); | ... | @@ -60,13 +69,6 @@ app.use('/showpost',showpostRouter); |
60 | app.use('/', indexRouter); // main page route | 69 | app.use('/', indexRouter); // main page route |
61 | 70 | ||
62 | 71 | ||
63 | -//Session 처리 | ||
64 | -app.use(cookieParser()); | ||
65 | -app.use(ExpressSession({ | ||
66 | - secret:'key', | ||
67 | - resave: true, | ||
68 | - saveUninitialized:true | ||
69 | -})); | ||
70 | 72 | ||
71 | //모든 router 처리가 끝난 후 404 오류 페이지 처리 | 73 | //모든 router 처리가 끝난 후 404 오류 페이지 처리 |
72 | var errorHandler = expressErrorHandler({ | 74 | var errorHandler = expressErrorHandler({ | ... | ... |
... | @@ -5,7 +5,9 @@ var router = express.Router(); | ... | @@ -5,7 +5,9 @@ var router = express.Router(); |
5 | 5 | ||
6 | 6 | ||
7 | router.get('/',function(req,res){ | 7 | router.get('/',function(req,res){ |
8 | - res.render('index.html') | 8 | + res.render('index.html', { |
9 | + session : req.session | ||
10 | + }) | ||
9 | }) | 11 | }) |
10 | 12 | ||
11 | 13 | ... | ... |
... | @@ -36,13 +36,16 @@ router.post('/process', function(req, res) { | ... | @@ -36,13 +36,16 @@ router.post('/process', function(req, res) { |
36 | // 조회된 레코드가 있으면 성공 응답 전송 | 36 | // 조회된 레코드가 있으면 성공 응답 전송 |
37 | if (docs) { | 37 | if (docs) { |
38 | console.dir(docs); | 38 | console.dir(docs); |
39 | - | 39 | + req.session.sessId = paramId; |
40 | + req.session.save(); | ||
40 | // 조회 결과에서 사용자 이름 확인 | 41 | // 조회 결과에서 사용자 이름 확인 |
41 | - res.render('/') | 42 | + res.render('index.html',{ |
43 | + session : req.session | ||
44 | + }); | ||
42 | 45 | ||
43 | 46 | ||
44 | } else { // 조회된 레코드가 없는 경우 실패 응답 전송 | 47 | } else { // 조회된 레코드가 없는 경우 실패 응답 전송 |
45 | - res.render('/') | 48 | + res.render('login.html'); |
46 | 49 | ||
47 | } | 50 | } |
48 | }); | 51 | }); | ... | ... |
app/routes/logout.js
0 → 100644
1 | +var Conn = require('../database/database') | ||
2 | +var express = require('express') | ||
3 | +var router = express.Router(); | ||
4 | + | ||
5 | +//라우팅 함수 등록 | ||
6 | + | ||
7 | +router.get('/',function(req,res){ | ||
8 | + req.session.destroy(function() { | ||
9 | + req.session; | ||
10 | + }); | ||
11 | + res.render('index.html') | ||
12 | +}); | ||
13 | + | ||
14 | +module.exports = router | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | - | ||
2 | var express = require('express') | 1 | var express = require('express') |
3 | var router = express.Router() | 2 | var router = express.Router() |
4 | var Entities = require('html-entities').AllHtmlEntities; | 3 | var Entities = require('html-entities').AllHtmlEntities; |
... | @@ -39,6 +38,7 @@ router.get('/',function(req,res){ | ... | @@ -39,6 +38,7 @@ router.get('/',function(req,res){ |
39 | 38 | ||
40 | // 뷰 템플레이트를 이용하여 렌더링한 후 전송 | 39 | // 뷰 템플레이트를 이용하여 렌더링한 후 전송 |
41 | var context = { | 40 | var context = { |
41 | + session: req.session, | ||
42 | title: '글 목록', | 42 | title: '글 목록', |
43 | posts: results, | 43 | posts: results, |
44 | page: parseInt(paramPage), | 44 | page: parseInt(paramPage), | ... | ... |
... | @@ -4,7 +4,9 @@ var router = express.Router() | ... | @@ -4,7 +4,9 @@ var router = express.Router() |
4 | var Entities = require('html-entities').AllHtmlEntities; | 4 | var Entities = require('html-entities').AllHtmlEntities; |
5 | 5 | ||
6 | router.get('/',function(req,res){ | 6 | router.get('/',function(req,res){ |
7 | - res.render('postadd.ejs'); | 7 | + res.render('postadd.ejs',{ |
8 | + session : req.session | ||
9 | + }); | ||
8 | }) | 10 | }) |
9 | 11 | ||
10 | module.exports = router; | 12 | module.exports = router; | ... | ... |
app/views/footer.ejs
0 → 100644
File mode changed
app/views/header.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html lang="en"> | ||
3 | + | ||
4 | +<head> | ||
5 | + <meta charset="utf-8" /> | ||
6 | + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> | ||
7 | + <meta name="description" content="" /> | ||
8 | + <meta name="author" content="" /> | ||
9 | + <title>Modern Business - Start Bootstrap Template</title> | ||
10 | + <!-- Favicon--> | ||
11 | + <link rel="icon" type="image/x-icon" href="assets/favicon.ico" /> | ||
12 | + <!-- Bootstrap icons--> | ||
13 | + <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" /> | ||
14 | + <!-- Core theme CSS (includes Bootstrap)--> | ||
15 | + <link href="css/styles.css" rel="stylesheet" /> | ||
16 | + <script src="http://code.jquery.com/jquery-2.1.4.js"></script> | ||
17 | +</head> | ||
18 | + | ||
19 | +<body class="d-flex flex-column h-100"> | ||
20 | + <main class="flex-shrink-0"> | ||
21 | + <!-- Navigation--> | ||
22 | + <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> | ||
23 | + <div class="container px-5"> | ||
24 | + <a class="navbar-brand" href="/">휴게소 정보</a> | ||
25 | + <button class="navbar-toggler" type="button" data-bs-toggle="collapse" | ||
26 | + data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" | ||
27 | + aria-expanded="false" aria-label="Toggle navigation"><span | ||
28 | + class="navbar-toggler-icon"></span></button> | ||
29 | + <div class="collapse navbar-collapse" id="navbarSupportedContent"> | ||
30 | + <ul class="navbar-nav ms-auto mb-2 mb-lg-0"> | ||
31 | + <li class="nav-item"><a class="nav-link" href="/">Home</a></li> | ||
32 | + <li class="nav-item"><a class="nav-link" href="/menu">휴게소 메뉴</a></li> | ||
33 | + <li class="nav-item"><a class="nav-link" href="/weather">날씨</a></li> | ||
34 | + <li class="nav-item"><a class="nav-link" href="/lpg">LPG</a></li> | ||
35 | + <li class="nav-item"><a class="nav-link" href="/post">Board</a></li> | ||
36 | + <% if(session.sessId){ %> | ||
37 | + <li class="nav-item"><a class="nav-link" href="/logout">Log-Out</a></li> | ||
38 | + <% } else { %> | ||
39 | + <li class="nav-item dropdown"> | ||
40 | + <a class="nav-link dropdown-toggle" id="navbarDropdownLogin" href="#" role="button" | ||
41 | + data-bs-toggle="dropdown" aria-expanded="false">Login</a> | ||
42 | + <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdownLogin"> | ||
43 | + <li><a class="dropdown-item" href="/login">Login</a></li> | ||
44 | + <li><a class="dropdown-item" href="/signup">Sign-up</a></li> | ||
45 | + </ul> | ||
46 | + </li> | ||
47 | + <% } %> | ||
48 | + </ul> | ||
49 | + </div> | ||
50 | + </div> | ||
51 | + </nav> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | -<!DOCTYPE html> | 1 | +<%- include('./header.ejs') %> |
2 | -<html lang="en"> | ||
3 | - | ||
4 | -<head> | ||
5 | - <meta charset="utf-8" /> | ||
6 | - <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> | ||
7 | - <meta name="description" content="" /> | ||
8 | - <meta name="author" content="" /> | ||
9 | - <title>Modern Business - Start Bootstrap Template</title> | ||
10 | - <!-- Favicon--> | ||
11 | - <link rel="icon" type="image/x-icon" href="assets/favicon.ico" /> | ||
12 | - <!-- Bootstrap icons--> | ||
13 | - <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" /> | ||
14 | - <!-- Core theme CSS (includes Bootstrap)--> | ||
15 | - <link href="css/styles.css" rel="stylesheet" /> | ||
16 | - <script src="http://code.jquery.com/jquery-2.1.4.js"></script> | ||
17 | -</head> | ||
18 | - | ||
19 | -<body class="d-flex flex-column h-100"> | ||
20 | - <main class="flex-shrink-0"> | ||
21 | - <!-- Navigation--> | ||
22 | - <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> | ||
23 | - <div class="container px-5"> | ||
24 | - <a class="navbar-brand" href="/">휴게소 정보</a> | ||
25 | - <button class="navbar-toggler" type="button" data-bs-toggle="collapse" | ||
26 | - data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" | ||
27 | - aria-expanded="false" aria-label="Toggle navigation"><span | ||
28 | - class="navbar-toggler-icon"></span></button> | ||
29 | - <div class="collapse navbar-collapse" id="navbarSupportedContent"> | ||
30 | - <ul class="navbar-nav ms-auto mb-2 mb-lg-0"> | ||
31 | - <li class="nav-item"><a class="nav-link" href="/">Home</a></li> | ||
32 | - <li class="nav-item"><a class="nav-link" href="/menu">휴게소 메뉴</a></li> | ||
33 | - <li class="nav-item"><a class="nav-link" href="/weather">날씨</a></li> | ||
34 | - <li class="nav-item"><a class="nav-link" href="/lpg">LPG</a></li> | ||
35 | - <li class="nav-item"><a class="nav-link" href="/post">Board</a></li> | ||
36 | - <li class="nav-item dropdown"> | ||
37 | - <a class="nav-link dropdown-toggle" id="navbarDropdownBlog" href="#" role="button" | ||
38 | - data-bs-toggle="dropdown" aria-expanded="false">Blog</a> | ||
39 | - <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdownBlog"> | ||
40 | - <li><a class="dropdown-item" href="blog-home.html">Blog Home</a></li> | ||
41 | - <li><a class="dropdown-item" href="blog-post.html">Blog Post</a></li> | ||
42 | - </ul> | ||
43 | - </li> | ||
44 | - <li class="nav-item dropdown"> | ||
45 | - <a class="nav-link dropdown-toggle" id="navbarDropdownLogin" href="#" role="button" | ||
46 | - data-bs-toggle="dropdown" aria-expanded="false">Login</a> | ||
47 | - <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdownLogin"> | ||
48 | - <li><a class="dropdown-item" href="/login">Login</a></li> | ||
49 | - <li><a class="dropdown-item" href="/signup">Sign-up</a></li> | ||
50 | - </ul> | ||
51 | - </li> | ||
52 | - </ul> | ||
53 | - </div> | ||
54 | - </div> | ||
55 | - </nav> | ||
56 | <!-- Page Content--> | 2 | <!-- Page Content--> |
57 | <div class="container"> | 3 | <div class="container"> |
58 | <br> | 4 | <br> | ... | ... |
-
Please register or login to post a comment