Showing
4 changed files
with
99 additions
and
41 deletions
1 | var express = require("express"); | 1 | var express = require("express"); |
2 | var router = express.Router(); | 2 | var router = express.Router(); |
3 | 3 | ||
4 | -var request = require("request"); | ||
5 | var bodyParser = require("body-parser"); | 4 | var bodyParser = require("body-parser"); |
6 | 5 | ||
7 | var { OAuth2Client } = require("google-auth-library"); | 6 | var { OAuth2Client } = require("google-auth-library"); |
8 | -var querystring = require("querystring"); | ||
9 | 7 | ||
10 | var CLIENT_ID = | 8 | var CLIENT_ID = |
11 | "94679084723-s5f0686p2porp9mkakrp1p89a48n24nj.apps.googleusercontent.com"; | 9 | "94679084723-s5f0686p2porp9mkakrp1p89a48n24nj.apps.googleusercontent.com"; |
... | @@ -13,15 +11,18 @@ var client = new OAuth2Client(CLIENT_ID); | ... | @@ -13,15 +11,18 @@ var client = new OAuth2Client(CLIENT_ID); |
13 | var mysql = require("mysql"); | 11 | var mysql = require("mysql"); |
14 | var session = require("express-session"); | 12 | var session = require("express-session"); |
15 | var FileStore = require("session-file-store")(session); | 13 | var FileStore = require("session-file-store")(session); |
14 | + | ||
16 | router.use(bodyParser.urlencoded({ extended: false })); //url인코딩 x | 15 | router.use(bodyParser.urlencoded({ extended: false })); //url인코딩 x |
17 | -router.use(bodyParser.json()); //json방식으로 파 | 16 | +router.use(bodyParser.json()); //json방식으로 파싱 |
18 | router.use( | 17 | router.use( |
19 | session({ | 18 | session({ |
20 | secret: "209", // 암호화 | 19 | secret: "209", // 암호화 |
21 | resave: false, | 20 | resave: false, |
22 | saveUninitialized: true, | 21 | saveUninitialized: true, |
23 | store: new FileStore(), | 22 | store: new FileStore(), |
24 | - })) | 23 | + }) |
24 | +); | ||
25 | + | ||
25 | var connection = mysql.createConnection({ | 26 | var connection = mysql.createConnection({ |
26 | host: "localhost", | 27 | host: "localhost", |
27 | user: "root", | 28 | user: "root", |
... | @@ -29,6 +30,7 @@ var connection = mysql.createConnection({ | ... | @@ -29,6 +30,7 @@ var connection = mysql.createConnection({ |
29 | database: "caferecommend", | 30 | database: "caferecommend", |
30 | }); | 31 | }); |
31 | connection.connect(); | 32 | connection.connect(); |
33 | + | ||
32 | /* GET home page. */ | 34 | /* GET home page. */ |
33 | router.get("/", function (req, res, next) { | 35 | router.get("/", function (req, res, next) { |
34 | res.render("index", { | 36 | res.render("index", { |
... | @@ -49,7 +51,7 @@ router.post("/index", (req, res) => { | ... | @@ -49,7 +51,7 @@ router.post("/index", (req, res) => { |
49 | audience: CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend | 51 | audience: CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend |
50 | }); | 52 | }); |
51 | const payload = ticket.getPayload(); | 53 | const payload = ticket.getPayload(); |
52 | - const userid = payload['sub'] | 54 | + const userid = payload["sub"]; |
53 | } | 55 | } |
54 | verify() | 56 | verify() |
55 | .then(() => { | 57 | .then(() => { |
... | @@ -61,7 +63,7 @@ router.post("/index", (req, res) => { | ... | @@ -61,7 +63,7 @@ router.post("/index", (req, res) => { |
61 | 63 | ||
62 | router.get("/login", checkAuthenticated, (req, res) => { | 64 | router.get("/login", checkAuthenticated, (req, res) => { |
63 | let user = req.user; | 65 | let user = req.user; |
64 | - req.session.user=user; | 66 | + req.session.user = user; |
65 | var sql = "SELECT * FROM USER WHERE EMAIL=?"; | 67 | var sql = "SELECT * FROM USER WHERE EMAIL=?"; |
66 | var parameter = [req.session.user.email]; | 68 | var parameter = [req.session.user.email]; |
67 | connection.query(sql, parameter, function (err, row) { | 69 | connection.query(sql, parameter, function (err, row) { |
... | @@ -111,7 +113,7 @@ router.post("/login", (req, res) => { | ... | @@ -111,7 +113,7 @@ router.post("/login", (req, res) => { |
111 | req.session.user.age, | 113 | req.session.user.age, |
112 | req.session.user.gender, | 114 | req.session.user.gender, |
113 | ]; | 115 | ]; |
114 | - connection.query(sql, parameter, function (err, row) { | 116 | + connection.query(sql, parameter, function (err) { |
115 | if (err) { | 117 | if (err) { |
116 | console.log(err); | 118 | console.log(err); |
117 | } else { | 119 | } else { |
... | @@ -123,8 +125,6 @@ router.post("/login", (req, res) => { | ... | @@ -123,8 +125,6 @@ router.post("/login", (req, res) => { |
123 | }); | 125 | }); |
124 | }); | 126 | }); |
125 | 127 | ||
126 | -module.exports = router; | ||
127 | - | ||
128 | function checkAuthenticated(req, res, next) { | 128 | function checkAuthenticated(req, res, next) { |
129 | let token = req.cookies["session-token"]; | 129 | let token = req.cookies["session-token"]; |
130 | let user = {}; | 130 | let user = {}; |
... | @@ -158,3 +158,34 @@ router.get("/logout", function (req, res) { | ... | @@ -158,3 +158,34 @@ router.get("/logout", function (req, res) { |
158 | req.session.destroy(); //세션비우기 | 158 | req.session.destroy(); //세션비우기 |
159 | res.redirect("/"); | 159 | res.redirect("/"); |
160 | }); | 160 | }); |
161 | + | ||
162 | +// 카페 후기 등록 | ||
163 | +router.post("/comment", function (req, res) { | ||
164 | + var cafeId = req.body.cafeId; | ||
165 | + var price = req.body.price; | ||
166 | + var kindness = req.body.kindness; | ||
167 | + var noise = req.body.noise; | ||
168 | + var accessibility = req.body.accessibility; | ||
169 | + | ||
170 | + // 입력받지 않은 데이터가 하나라도 존재 (카페아이디는 후기작성시 자동으로 받아옴) | ||
171 | + if (!price || !kindness || !noise || !accessibility) { | ||
172 | + console.log("입력받지 않은 데이터 존재"); | ||
173 | + return; // 후기작성으로 다시 이동 | ||
174 | + } | ||
175 | + | ||
176 | + var sql = | ||
177 | + "INSERT INTO COMMENT(CAFE_ID, PRICE, KINDNESS, NOISE, ACCESSIBILITY) VALUES(?,?,?,?,?)"; | ||
178 | + | ||
179 | + var parameter = [cafeId, price, kindness, noise, accessibility]; | ||
180 | + | ||
181 | + connection.query(sql, parameter, function (err) { | ||
182 | + if (err) { | ||
183 | + console.log(err); | ||
184 | + } else { | ||
185 | + console.log("새로운 comment 데이터 입력"); | ||
186 | + } | ||
187 | + }); | ||
188 | + return res.render("map"); | ||
189 | +}); | ||
190 | + | ||
191 | +module.exports = router; | ... | ... |
1 | +{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"__lastAccess":1621766908867,"user":{"name":"김대철[학생](소프트웨어융합대학 컴퓨터공학과)","email":"kdc9619@khu.ac.kr","nickname":"Meerkat","age":"26","gender":"male"}} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"__lastAccess":1621952163379} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html> | 2 | <html> |
3 | -<head> | 3 | + <head> |
4 | - <link rel="stylesheet" href="stylesheets/bootstrap.css"> | 4 | + <link rel="stylesheet" href="stylesheets/bootstrap.css" /> |
5 | <title>Cafe Map</title> | 5 | <title>Cafe Map</title> |
6 | <style> | 6 | <style> |
7 | - .navbar{ | 7 | + .navbar { |
8 | background-color: #1d2124 !important; | 8 | background-color: #1d2124 !important; |
9 | } | 9 | } |
10 | - .btn-primary{ | 10 | + .btn-primary { |
11 | - color : white !important; | 11 | + color: white !important; |
12 | + } | ||
13 | + p { | ||
14 | + font-family: "Noto Sans KR", sans-serif; | ||
15 | + } | ||
16 | + h1 { | ||
17 | + font-family: "Noto Sans KR", sans-serif; | ||
18 | + } | ||
19 | + h4 { | ||
20 | + font-family: "Noto Sans KR", sans-serif; | ||
21 | + } | ||
22 | + h2 { | ||
23 | + font-family: "Noto Sans KR", sans-serif; | ||
24 | + } | ||
25 | + h3 { | ||
26 | + font-family: "Noto Sans KR", sans-serif; | ||
27 | + } | ||
28 | + h5 { | ||
29 | + font-family: "Noto Sans KR", sans-serif; | ||
12 | } | 30 | } |
13 | - p{font-family: 'Noto Sans KR', sans-serif;} | ||
14 | - h1{font-family: 'Noto Sans KR', sans-serif;} | ||
15 | - h4{font-family: 'Noto Sans KR', sans-serif;} | ||
16 | - h2{font-family: 'Noto Sans KR', sans-serif;} | ||
17 | - h3{font-family: 'Noto Sans KR', sans-serif;} | ||
18 | - h5{font-family: 'Noto Sans KR', sans-serif;} | ||
19 | .placeinfo_wrap { | 31 | .placeinfo_wrap { |
20 | position: absolute; | 32 | position: absolute; |
21 | bottom: 28px; | 33 | bottom: 28px; |
... | @@ -83,35 +95,48 @@ | ... | @@ -83,35 +95,48 @@ |
83 | margin-top: 0; | 95 | margin-top: 0; |
84 | } | 96 | } |
85 | </style> | 97 | </style> |
86 | -</head> | 98 | + </head> |
87 | -<body> | 99 | + <body> |
88 | -<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> | 100 | + <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> |
89 | - <a class="navbar-brand" href="/"><img src="images/home.png" width="40" height="40" alt=""> | 101 | + <a class="navbar-brand" href="/" |
102 | + ><img src="images/home.png" width="40" height="40" alt="" /> | ||
90 | </a> | 103 | </a> |
91 | - <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> | 104 | + <button |
105 | + class="navbar-toggler" | ||
106 | + type="button" | ||
107 | + data-toggle="collapse" | ||
108 | + data-target="#navbarSupportedContent" | ||
109 | + aria-controls="navbarSupportedContent" | ||
110 | + aria-expanded="false" | ||
111 | + aria-label="Toggle navigation" | ||
112 | + > | ||
92 | <span class="navbar-toggler-icon"></span> | 113 | <span class="navbar-toggler-icon"></span> |
93 | </button> | 114 | </button> |
94 | <div class="collapse navbar-collapse" id="navbarSupportedContent"> | 115 | <div class="collapse navbar-collapse" id="navbarSupportedContent"> |
95 | - <a class="navbar-brand" href="/" ><strong>Home</strong></a> | 116 | + <a class="navbar-brand" href="/"><strong>Home</strong></a> |
96 | <ul class="navbar-nav mr-auto mt-2 mt-lg-0"> | 117 | <ul class="navbar-nav mr-auto mt-2 mt-lg-0"> |
97 | - | ||
98 | <li class="nav-item active"> | 118 | <li class="nav-item active"> |
99 | - <a class="nav-link" style="color:#ffffff" href="/" onclick="signOut();">Logout<span class="sr-only">(current)</span></a> | 119 | + <a |
120 | + class="nav-link" | ||
121 | + style="color: #ffffff" | ||
122 | + href="/" | ||
123 | + onclick="signOut();" | ||
124 | + >Logout<span class="sr-only">(current)</span></a | ||
125 | + > | ||
100 | </li> | 126 | </li> |
101 | - | ||
102 | </ul> | 127 | </ul> |
103 | </div> | 128 | </div> |
104 | -</nav> | 129 | + </nav> |
105 | -<div class="pricing-header px-3 py-1 pt-md-3 pb-md-1 mx-auto text-center"> | 130 | + <div class="pricing-header px-3 py-1 pt-md-3 pb-md-1 mx-auto text-center"> |
106 | - <h3 class="display-6 font-weight-bold" >Map</h3> | 131 | + <h3 class="display-6 font-weight-bold">Map</h3> |
107 | -</div> | 132 | + </div> |
108 | 133 | ||
109 | -<div id="map" style="width: 100%; height: 575px"></div> | 134 | + <div id="map" style="width: 100%; height: 575px"></div> |
110 | -<script | 135 | + <script |
111 | type="text/javascript" | 136 | type="text/javascript" |
112 | src="//dapi.kakao.com/v2/maps/sdk.js?appkey=68cbccbcd6f0fef0a213e62ad37393ee&libraries=services" | 137 | src="//dapi.kakao.com/v2/maps/sdk.js?appkey=68cbccbcd6f0fef0a213e62ad37393ee&libraries=services" |
113 | -></script> | 138 | + ></script> |
114 | -<script> | 139 | + <script> |
115 | var lat = ""; | 140 | var lat = ""; |
116 | var lon = ""; | 141 | var lon = ""; |
117 | var placeOverlay = new kakao.maps.CustomOverlay({ zIndex: 1 }); | 142 | var placeOverlay = new kakao.maps.CustomOverlay({ zIndex: 1 }); |
... | @@ -241,8 +266,8 @@ | ... | @@ -241,8 +266,8 @@ |
241 | placeOverlay.setPosition(new kakao.maps.LatLng(place.y, place.x)); | 266 | placeOverlay.setPosition(new kakao.maps.LatLng(place.y, place.x)); |
242 | placeOverlay.setMap(map); | 267 | placeOverlay.setMap(map); |
243 | } | 268 | } |
244 | -</script> | 269 | + </script> |
245 | -<script src="javascripts/bootstrap.js"></script> | 270 | + <script src="javascripts/bootstrap.js"></script> |
246 | -<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> | 271 | + <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> |
247 | -</body> | 272 | + </body> |
248 | </html> | 273 | </html> | ... | ... |
-
Please register or login to post a comment