@@ -22,31 +29,30 @@ function Login() {
{
- // axios({
- // method: 'post',
- // url: '/login',
- // data: values,
- // }).then(res => {
- // if (res.status === 404) return alert(res.data.error)
+ axios({
+ method: 'post',
+ url: '/login',
+ data: values,
+ }).then(res => {
+ if (res.status === 404) return alert(res.data.error)
alert("로그인이 완료되었습니다!")
- // localStorage.setItem('token', res.data.token);
- // localStorage.setItem('id', res.data.users._id);
- // setState(true);
- // })
- // .catch(err => {
- // alert(err.error)
- // });
+ localStorage.setItem('token', res.data.token);
+ localStorage.setItem('id', res.data.users._id);
+ setState(true);
+ })
+ .catch(err => {
+ alert(err.error)
+ });
setTimeout(() => {
setSubmitting(false);
@@ -64,14 +70,14 @@ function Login() {
)}
diff --git a/server/client/src/index.js b/server/client/src/index.js
index 66965cbff668716e3b81bde4e81b57c1817ea469..f960b5a2b1367373f41f3c27ece323966e01b87a 100644
--- a/server/client/src/index.js
+++ b/server/client/src/index.js
@@ -4,6 +4,8 @@ import * as serviceWorker from './serviceWorker';
import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom';
import 'bootstrap';
import 'bootstrap/dist/css/bootstrap.css';
+import axios from 'axios';
+import { PrivateRoute } from './Components/PrivateRoute';
import Login from './Pages/LoginPage';
import Home from './Pages/HomePage';
@@ -12,15 +14,22 @@ import Apply from './Pages/ApplyPage';
import Check from './Pages/CheckPage';
import Notice from './Pages/NoticePage';
+axios.defaults.validateStatus = function (status) {
+ return status < 500; // default
+}
+
ReactDOM.render(
-
+
+
+
+
,
document.getElementById('root')
diff --git a/server/package-lock.json b/server/package-lock.json
index cffd89762217ce01bb51a631b7d05c5acc664cc7..74245d37a3b088296945b9f0e5ab9153edeb495f 100644
--- a/server/package-lock.json
+++ b/server/package-lock.json
@@ -4,7 +4,6 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
-<<<<<<< HEAD
"@types/babel-types": {
"version": "7.0.9",
"resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.9.tgz",
@@ -18,14 +17,11 @@
"@types/babel-types": "*"
}
},
-=======
->>>>>>> origin/NewMaster
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
-<<<<<<< HEAD
"accepts": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
@@ -70,8 +66,6 @@
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
},
-=======
->>>>>>> origin/NewMaster
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
@@ -91,7 +85,6 @@
"readable-stream": "^2.0.6"
}
},
-<<<<<<< HEAD
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
@@ -127,14 +120,11 @@
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
},
-=======
->>>>>>> origin/NewMaster
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
-<<<<<<< HEAD
"basic-auth": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
@@ -150,8 +140,6 @@
}
}
},
-=======
->>>>>>> origin/NewMaster
"bcrypt": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz",
@@ -175,7 +163,6 @@
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
"integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
},
-<<<<<<< HEAD
"body-parser": {
"version": "1.18.3",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
@@ -203,8 +190,6 @@
}
}
},
-=======
->>>>>>> origin/NewMaster
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -219,7 +204,11 @@
"resolved": "https://registry.npmjs.org/bson/-/bson-1.1.5.tgz",
"integrity": "sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg=="
},
-<<<<<<< HEAD
+ "buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
+ },
"bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -246,19 +235,12 @@
"requires": {
"is-regex": "^1.0.3"
}
-=======
- "buffer-equal-constant-time": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
- "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
->>>>>>> origin/NewMaster
},
"chownr": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
},
-<<<<<<< HEAD
"clean-css": {
"version": "3.4.28",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz",
@@ -278,14 +260,11 @@
"wordwrap": "0.0.2"
}
},
-=======
->>>>>>> origin/NewMaster
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
-<<<<<<< HEAD
"commander": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
@@ -294,8 +273,6 @@
"graceful-readlink": ">= 1.0.0"
}
},
-=======
->>>>>>> origin/NewMaster
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -306,7 +283,6 @@
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
},
-<<<<<<< HEAD
"constantinople": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz",
@@ -352,14 +328,11 @@
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
"integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg=="
},
-=======
->>>>>>> origin/NewMaster
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
-<<<<<<< HEAD
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -380,8 +353,6 @@
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
},
-=======
->>>>>>> origin/NewMaster
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
@@ -397,7 +368,6 @@
"resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz",
"integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ=="
},
-<<<<<<< HEAD
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -408,27 +378,29 @@
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
-=======
->>>>>>> origin/NewMaster
"detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
},
-<<<<<<< HEAD
"doctypes": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz",
"integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk="
},
-=======
->>>>>>> origin/NewMaster
"dotenv": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
"integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw=="
},
-<<<<<<< HEAD
+ "ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
@@ -527,16 +499,6 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
-=======
- "ecdsa-sig-formatter": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
- "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
->>>>>>> origin/NewMaster
"fs-minipass": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
@@ -578,7 +540,6 @@
"path-is-absolute": "^1.0.0"
}
},
-<<<<<<< HEAD
"graceful-readlink": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
@@ -589,14 +550,11 @@
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="
},
-=======
->>>>>>> origin/NewMaster
"has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
},
-<<<<<<< HEAD
"http-errors": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
@@ -615,8 +573,6 @@
}
}
},
-=======
->>>>>>> origin/NewMaster
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -652,7 +608,6 @@
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
},
-<<<<<<< HEAD
"ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
@@ -679,8 +634,6 @@
}
}
},
-=======
->>>>>>> origin/NewMaster
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
@@ -689,7 +642,6 @@
"number-is-nan": "^1.0.0"
}
},
-<<<<<<< HEAD
"is-promise": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
@@ -703,27 +655,16 @@
"has-symbols": "^1.0.1"
}
},
-=======
->>>>>>> origin/NewMaster
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
-<<<<<<< HEAD
"js-stringify": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
"integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds="
},
- "jstransformer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
- "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=",
- "requires": {
- "is-promise": "^2.0.0",
- "promise": "^7.0.1"
-=======
"jsonwebtoken": {
"version": "8.5.1",
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
@@ -741,6 +682,15 @@
"semver": "^5.6.0"
}
},
+ "jstransformer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
+ "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=",
+ "requires": {
+ "is-promise": "^2.0.0",
+ "promise": "^7.0.1"
+ }
+ },
"jwa": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
@@ -758,7 +708,6 @@
"requires": {
"jwa": "^1.4.1",
"safe-buffer": "^5.0.1"
->>>>>>> origin/NewMaster
}
},
"kareem": {
@@ -766,7 +715,6 @@
"resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz",
"integrity": "sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw=="
},
-<<<<<<< HEAD
"kind-of": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
@@ -785,16 +733,6 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
},
- "longest": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
- "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
- },
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
-=======
"lodash.includes": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
@@ -829,7 +767,16 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
"integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
->>>>>>> origin/NewMaster
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
"memory-pager": {
"version": "1.5.0",
@@ -837,7 +784,6 @@
"integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
"optional": true
},
-<<<<<<< HEAD
"merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
@@ -866,8 +812,6 @@
"mime-db": "1.44.0"
}
},
-=======
->>>>>>> origin/NewMaster
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -942,7 +886,6 @@
"resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz",
"integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ=="
},
-<<<<<<< HEAD
"morgan": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
@@ -955,8 +898,6 @@
"on-headers": "~1.0.1"
}
},
-=======
->>>>>>> origin/NewMaster
"mpath": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/mpath/-/mpath-0.7.0.tgz",
@@ -1019,14 +960,11 @@
}
}
},
-<<<<<<< HEAD
"negotiator": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
},
-=======
->>>>>>> origin/NewMaster
"node-addon-api": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz",
@@ -1102,7 +1040,6 @@
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
-<<<<<<< HEAD
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -1116,8 +1053,6 @@
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
},
-=======
->>>>>>> origin/NewMaster
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -1145,20 +1080,16 @@
"os-tmpdir": "^1.0.0"
}
},
-<<<<<<< HEAD
"parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
},
-=======
->>>>>>> origin/NewMaster
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
-<<<<<<< HEAD
"path-parse": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
@@ -1169,14 +1100,11 @@
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
-=======
->>>>>>> origin/NewMaster
"process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
-<<<<<<< HEAD
"promise": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
@@ -1339,8 +1267,6 @@
}
}
},
-=======
->>>>>>> origin/NewMaster
"rc": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
@@ -1373,27 +1299,21 @@
}
}
},
-<<<<<<< HEAD
"regenerator-runtime": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
-=======
->>>>>>> origin/NewMaster
"regexp-clone": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz",
"integrity": "sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw=="
},
-<<<<<<< HEAD
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
},
-=======
->>>>>>> origin/NewMaster
"require_optional": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
@@ -1403,7 +1323,6 @@
"semver": "^5.1.0"
}
},
-<<<<<<< HEAD
"resolve": {
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
@@ -1412,14 +1331,11 @@
"path-parse": "^1.0.6"
}
},
-=======
->>>>>>> origin/NewMaster
"resolve-from": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
"integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
},
-<<<<<<< HEAD
"right-align": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
@@ -1428,8 +1344,6 @@
"align-text": "^0.1.1"
}
},
-=======
->>>>>>> origin/NewMaster
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
@@ -1467,7 +1381,6 @@
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
},
-<<<<<<< HEAD
"send": {
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
@@ -1506,21 +1419,16 @@
"send": "0.16.2"
}
},
-=======
->>>>>>> origin/NewMaster
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
-<<<<<<< HEAD
"setprototypeof": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
},
-=======
->>>>>>> origin/NewMaster
"sift": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
@@ -1536,7 +1444,6 @@
"resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
"integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
},
-<<<<<<< HEAD
"source-map": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
@@ -1545,8 +1452,6 @@
"amdefine": ">=0.0.4"
}
},
-=======
->>>>>>> origin/NewMaster
"sparse-bitfield": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
@@ -1556,14 +1461,11 @@
"memory-pager": "^1.0.2"
}
},
-<<<<<<< HEAD
"statuses": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
},
-=======
->>>>>>> origin/NewMaster
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
@@ -1616,7 +1518,6 @@
"yallist": "^3.0.3"
}
},
-<<<<<<< HEAD
"to-fast-properties": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
@@ -1664,14 +1565,11 @@
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
-=======
->>>>>>> origin/NewMaster
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
-<<<<<<< HEAD
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@@ -1687,8 +1585,6 @@
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
"integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
},
-=======
->>>>>>> origin/NewMaster
"wide-align": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
@@ -1697,7 +1593,6 @@
"string-width": "^1.0.2 || 2"
}
},
-<<<<<<< HEAD
"window-size": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz",
@@ -1717,8 +1612,6 @@
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz",
"integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
},
-=======
->>>>>>> origin/NewMaster
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -1728,7 +1621,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
-<<<<<<< HEAD
},
"yargs": {
"version": "3.10.0",
@@ -1740,8 +1632,9 @@
"decamelize": "^1.0.0",
"window-size": "0.1.0"
}
-=======
->>>>>>> origin/NewMaster
}
}
}
+
+
+
\ No newline at end of file
diff --git a/server/package.json b/server/package.json
index 7ab083d2fcdb0dbda6a7b6822c6c8901cd113762..ee73d0d4036389609a59e8b81a71c9fb8d135824 100644
--- a/server/package.json
+++ b/server/package.json
@@ -18,3 +18,4 @@
"pug": "2.0.0-beta11"
}
}
+
diff --git a/server/routes/index.js b/server/routes/index.js
index ecca96a56b309a315ddf6399155fd2f953031d3b..c1b8c3e03fe77e455e6d7aaefc1658be362b9cce 100644
--- a/server/routes/index.js
+++ b/server/routes/index.js
@@ -1,9 +1,11 @@
-var express = require('express');
-var router = express.Router();
+const express = require('express');
+const User = require('../schemas/user');
+
+const router = express.Router();
/* GET home page. */
-router.get('/', function(req, res, next) {
- res.render('index', { title: 'Express' });
-});
+// router.get('/', function(req, res, next) {
+// res.render('index', { title: 'Express' });
+// });
module.exports = router;
diff --git a/server/routes/login.js b/server/routes/login.js
new file mode 100644
index 0000000000000000000000000000000000000000..8cc9fd0ce8115cb82c4a63070fc40a9b0edcf949
--- /dev/null
+++ b/server/routes/login.js
@@ -0,0 +1,52 @@
+const express = require('express');
+const User = require('../schemas/user');
+const bcrypt = require("bcrypt");
+const jwt = require('jsonwebtoken');
+
+const router = express.Router();
+
+router.get('/', function (req, res, next) {
+ console.log('/login get request', req.body)
+ User.find({})
+ .then((signups) => {
+ res.json(signups);
+ })
+ .catch((err) => {
+ console.error(err);
+ next(err);
+ });
+});
+
+router.post('/', function (req, res, next) {
+ console.log('/login post request', req.body)
+ User.findOne({ id: req.body.id }, 'id password', function (err, users) {
+ if (err) return res.status(500).json({ error: err });
+
+ if (!users) {
+ return res.status(404).json({ error: '해당 아이디가 존재하지 않습니다.' });
+ }
+
+ bcrypt.compare(req.body.password, users.password, function (err, result) {
+ if (err) {
+ console.log(err)
+ return res.status(500).json({ error: err });
+ }
+
+ if (result) {
+ const token = jwt.sign({
+ id:users.id,
+ }, process.env.JWT_SECRET, {
+ expiresIn: '1m',
+ });
+ return res.status(201).json({
+ token,
+ users,
+ });
+ }
+ res.status(404).json({ error: '비밀번호를 다시 입력해주세요.' });
+ });
+
+ })
+});
+
+module.exports = router;
diff --git a/server/routes/middlewares.js b/server/routes/middlewares.js
new file mode 100644
index 0000000000000000000000000000000000000000..81c6dc1bd22f6ac4f546d140d8740644be26d6b1
--- /dev/null
+++ b/server/routes/middlewares.js
@@ -0,0 +1,36 @@
+const jwt = require('jsonwebtoken');
+
+exports.isLoggedIn = (req, res, next) => {
+ if (req.isAuthenticated()) {
+ next();
+ } else {
+ res.status(403).send('로그인 필요');
+ }
+};
+
+exports.isNotLoggedIn = (req, res, next) => {
+ if (!req.isAuthenticated()) {
+ next();
+ } else {
+ res.redirect('/');
+ }
+};
+
+exports.verifyToken = (req, res, next) => {
+ try {
+ req.decoded = jwt.verify(req.headers.authorization, process.env.JWT_SECRET);
+ console.log('decode', req.decoded)
+ return next();
+ } catch (error) {
+ if (error.name === 'TokenExpiredError') { // 유효기간 초과
+ return res.status(419).json({
+ code: 419,
+ error: '토큰이 만료되었습니다. 다시 로그인 해주세요.',
+ });
+ }
+ return res.status(401).json({
+ code: 401,
+ error: '유효하지 않은 토큰입니다. 다시 로그인 해주세요.',
+ });
+ }
+};
diff --git a/server/routes/users.js b/server/routes/users.js
index 623e4302bee32ccc080d1c83ee2e55a426c9bac8..fd136181fc40fbdf3f1a8a4da031f0e045ca1faa 100644
--- a/server/routes/users.js
+++ b/server/routes/users.js
@@ -1,9 +1,34 @@
-var express = require('express');
-var router = express.Router();
+const express = require('express');
+const User = require('../schemas/user');
+const bcrypt = require("bcrypt");
+const { verifyToken } = require('./middlewares');
-/* GET users listing. */
-router.get('/', function(req, res, next) {
- res.send('respond with a resource');
-});
+const router = express.Router();
+
+router.post('/', function (req, res, next) {
+ console.log('/users post req.body', req.body)
+ User.findOne({ id: req.body.id }, function (err, users) {
+ if (err) return res.status(500).json({ error: err });
+
+ if (users) {
+ return res.status(404).json({ error: '이미 존재하는 아이디입니다.' })
+ };
+ const user = new User({
+ name: req.body.name,
+ id: req.body.id,
+ password: req.body.password,
+ });
+
+ user.save()
+ .then((result) => {
+ console.log(result);
+ res.status(201).json(result);
+ })
+ .catch((err) => {
+ console.error(err);
+ next(err);
+ });
+ })
+});
module.exports = router;
diff --git a/server/schemas/index.js b/server/schemas/index.js
index a36c287c9803332f94321fa88439c8e5dfec3c4f..848acb8da5d842e50e8f92aac5b957ed09f1d271 100644
--- a/server/schemas/index.js
+++ b/server/schemas/index.js
@@ -6,7 +6,7 @@ module.exports = () => {
mongoose.set('debug', true);
}
mongoose.connect('mongodb://rkyoung7:rkdud127@localhost:27017/admin', {
- dbName: 'KU_Rental',
+ dbName: 'ku_rental', useNewUrlParser: true, useUnifiedTopology: true,
}, (error) => {
if (error) {
console.log('몽고디비 연결 에러', error);
@@ -20,10 +20,10 @@ module.exports = () => {
console.error('몽고디비 연결 에러', error);
});
mongoose.connection.on('disconnected', () => {
- console.error('몽고디비 연결이 끊겼습니다. 연결을재시도합니다.');
+ console.error('몽고디비 연결이 끊겼습니다. 연결을 재시도합니다.');
connect();
});
+
require('./user');
require('./reserve');
-
};