Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
students
reservation-service
Commits
32dcbf22
Commit
32dcbf22
authored
Sep 18, 2020
by
Ha YeaJin
Browse files
pages
parent
2a21eaec
Changes
18
Hide whitespace changes
Inline
Side-by-side
server/app.js
View file @
32dcbf22
...
...
@@ -9,6 +9,9 @@ var usersRouter = require('./routes/users');
var
app
=
express
();
const
port
=
3030
;
app
.
listen
(
port
,
()
=>
console
.
log
(
port
));
// view engine setup
app
.
set
(
'
views
'
,
path
.
join
(
__dirname
,
'
views
'
));
app
.
set
(
'
view engine
'
,
'
pug
'
);
...
...
server/client/package-lock.json
View file @
32dcbf22
...
...
@@ -2545,6 +2545,14 @@
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz",
"integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA=="
},
"axios": {
"version": "0.20.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.20.0.tgz",
"integrity": "sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA==",
"requires": {
"follow-redirects": "^1.10.0"
}
},
"axobject-query": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
...
...
@@ -4399,6 +4407,11 @@
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
},
"deepmerge": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
"integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA=="
},
"default-gateway": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
...
...
@@ -5965,6 +5978,11 @@
}
}
},
"fn-name": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/fn-name/-/fn-name-3.0.0.tgz",
"integrity": "sha512-eNMNr5exLoavuAMhIUVsOKF79SWd/zG104ef6sxBTSw+cZc6BXdQXDvYcGvp0VbxVVSp1XDUNoz7mg1xMtSznA=="
},
"follow-redirects": {
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz",
...
...
@@ -6020,6 +6038,32 @@
"mime-types": "^2.1.12"
}
},
"formik": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/formik/-/formik-2.1.5.tgz",
"integrity": "sha512-bWpo3PiqVDYslvrRjTq0Isrm0mFXHiO33D8MS6t6dWcqSFGeYF52nlpCM2xwOJ6tRVRznDkL+zz/iHPL4LDuvQ==",
"requires": {
"deepmerge": "^2.1.1",
"hoist-non-react-statics": "^3.3.0",
"lodash": "^4.17.14",
"lodash-es": "^4.17.14",
"react-fast-compare": "^2.0.1",
"scheduler": "^0.18.0",
"tiny-warning": "^1.0.2",
"tslib": "^1.10.0"
},
"dependencies": {
"scheduler": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz",
"integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1"
}
}
}
},
"forwarded": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
...
...
@@ -8055,6 +8099,11 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
"integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
},
"lodash-es": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz",
"integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ=="
},
"lodash._reinterpolate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
...
...
@@ -10415,6 +10464,11 @@
"react-is": "^16.8.1"
}
},
"property-expr": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.4.tgz",
"integrity": "sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg=="
},
"proxy-addr": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
...
...
@@ -10811,6 +10865,11 @@
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.7.tgz",
"integrity": "sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA=="
},
"react-fast-compare": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
"integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw=="
},
"react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
...
...
@@ -12536,6 +12595,11 @@
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
},
"synchronous-promise": {
"version": "2.0.13",
"resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.13.tgz",
"integrity": "sha512-R9N6uDkVsghHePKh1TEqbnLddO2IY25OcsksyFp/qBe7XYd0PVbKEWxhcdMhpLzE1I6skj5l4aEZ3CRxcbArlA=="
},
"table": {
"version": "5.4.6",
"resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
...
...
@@ -12835,6 +12899,11 @@
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
},
"toposort": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
"integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA="
},
"tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
...
...
@@ -14100,6 +14169,20 @@
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
},
"yup": {
"version": "0.29.3",
"resolved": "https://registry.npmjs.org/yup/-/yup-0.29.3.tgz",
"integrity": "sha512-RNUGiZ/sQ37CkhzKFoedkeMfJM0vNQyaz+wRZJzxdKE7VfDeVKH8bb4rr7XhRLbHJz5hSjoDNwMEIaKhuMZ8gQ==",
"requires": {
"@babel/runtime": "^7.10.5",
"fn-name": "~3.0.0",
"lodash": "^4.17.15",
"lodash-es": "^4.17.11",
"property-expr": "^2.0.2",
"synchronous-promise": "^2.0.13",
"toposort": "^2.0.2"
}
}
}
}
server/client/package.json
View file @
32dcbf22
...
...
@@ -6,12 +6,15 @@
"@testing-library/jest-dom"
:
"^4.2.4"
,
"@testing-library/react"
:
"^9.5.0"
,
"@testing-library/user-event"
:
"^7.2.1"
,
"axios"
:
"^0.20.0"
,
"bootstrap"
:
"^4.5.2"
,
"formik"
:
"^2.1.5"
,
"react"
:
"^16.13.1"
,
"react-dom"
:
"^16.13.1"
,
"react-router-dom"
:
"^5.2.0"
,
"react-scripts"
:
"3.4.3"
,
"styled-components"
:
"^5.2.0"
"styled-components"
:
"^5.2.0"
,
"yup"
:
"^0.29.3"
},
"scripts"
:
{
"start"
:
"react-scripts start"
,
...
...
@@ -19,6 +22,7 @@
"test"
:
"react-scripts test"
,
"eject"
:
"react-scripts eject"
},
"proxy"
:
"http://localhost:3030"
,
"eslintConfig"
:
{
"extends"
:
"react-app"
},
...
...
server/client/src/Components/Menu.js
0 → 100644
View file @
32dcbf22
import
React
,
{
useState
,
useEffect
}
from
'
react
'
;
import
{
Link
}
from
'
react-router-dom
'
;
import
styled
from
'
styled-components
'
;
const
Nav
=
styled
.
nav
`
background-color: #981e1e;
`
function
Menu
()
{
return
(
<
Nav
className
=
"
navbar sticky-top navbar-expand-md
"
>
<
Link
to
=
"
/home
"
className
=
"
navbar-brand
"
>
대관
서비스
<
/Link
>
<
button
className
=
"
navbar-toggler
"
type
=
"
button
"
data
-
toggle
=
"
collapse
"
data
-
target
=
"
#collapsibleNavbar
"
aria
-
controls
=
"
collapsibleNavbar
"
>
<
span
className
=
"
navbar-toggler-icon
"
><
/span
>
<
/button
>
<
div
className
=
"
collapse navbar-collapse
"
id
=
"
collapsibleNavbar
"
>
<
ul
className
=
"
navbar-nav
"
>
<
li
className
=
"
nav-item
"
>
<
Link
to
=
"
/home
"
className
=
"
nav-link
"
>
대관
현황
<
/Link
>
<
/li
>
<
li
className
=
"
nav-item
"
>
<
Link
to
=
"
/apply
"
className
=
"
nav-link
"
>
대관
신청
<
/Link
>
<
/li
>
<
li
className
=
"
nav-item
"
>
<
Link
to
=
"
/check
"
className
=
"
nav-link
"
>
대관
확인
/
취소
<
/Link
>
<
/li
>
<
li
className
=
"
nav-item
"
>
<
Link
to
=
"
/notice
"
className
=
"
nav-link
"
>
공지사항
<
/Link
>
<
/li
>
<
/ul
>
<
/div
>
<
/Nav
>
)
}
export
default
Menu
\ No newline at end of file
server/client/src/Pages/ApplyPage.js
0 → 100644
View file @
32dcbf22
import
React
,
{
useState
,
useEffect
}
from
'
react
'
;
import
Menu
from
'
../Components/Menu
'
;
function
Apply
()
{
return
(
<
div
>
<
Menu
/>
<
div
className
=
"
container
"
>
apply
<
/div
>
<
/div
>
)
}
export
default
Apply
\ No newline at end of file
server/client/src/Pages/CheckPage.js
0 → 100644
View file @
32dcbf22
import
React
,
{
useState
,
useEffect
}
from
'
react
'
;
import
Menu
from
'
../Components/Menu
'
;
function
Check
()
{
return
(
<
div
>
<
Menu
/>
<
div
className
=
"
container
"
>
check
<
/div
>
<
/div
>
)
}
export
default
Check
\ No newline at end of file
server/client/src/Pages/Home.js
deleted
100644 → 0
View file @
2a21eaec
import
React
,
{
}
from
'
react
'
;
function
Home
()
{
return
(
<
div
>
<
h2
>
asdkj
;
alsdkj
<
/h2
>
<
/div
>
)
}
export
default
Home
\ No newline at end of file
server/client/src/Pages/HomePage.js
0 → 100644
View file @
32dcbf22
import
React
,
{
useState
,
useEffect
}
from
'
react
'
;
import
Menu
from
'
../Components/Menu
'
;
function
Home
()
{
return
(
<
div
>
<
Menu
/>
<
div
className
=
"
container
"
>
home
<
/div
>
<
/div
>
)
}
export
default
Home
\ No newline at end of file
server/client/src/Pages/Login.js
deleted
100644 → 0
View file @
2a21eaec
import
React
,
{
}
from
'
react
'
;
import
styled
from
'
styled-components
'
;
import
{
Link
}
from
'
react-router-dom
'
;
const
Log
=
styled
.
div
`
background-color: #981e1e;
`
const
Logo
=
styled
.
div
`
background-color: #E76A6A;
`
function
Login
()
{
return
(
<
div
className
=
"
container
"
>
<
div
className
=
"
row
"
>
<
Logo
className
=
"
col-md-5 col-12
"
>
<
h2
>
고려대학교
<
/h2
>
<
h4
>
대관
시스템
<
/h4
>
<
/Logo
>
<
Log
className
=
"
col-md-7 col-12
"
>
<
form
encType
=
'
multipart/form-data
'
className
=
"
mt-4
"
style
=
{{
height
:
"
100%
"
}}
>
<
div
className
=
"
form-group
"
>
<
label
for
=
"
title_input
"
>
학번
<
/label
>
<
input
className
=
"
form-control
"
id
=
"
title_input
"
name
=
"
title
"
type
=
"
text
"
required
/>
<
/div
>
<
div
className
=
"
form-group
"
>
<
label
for
=
"
author_input
"
>
비밀번호
<
/label
>
<
input
className
=
"
form-control
"
id
=
"
author_input
"
name
=
"
author
"
type
=
"
text
"
required
/>
<
/div
>
<
div
className
=
"
form-group
"
>
<
Link
to
=
"
/home
"
>
<
button
className
=
"
btn
"
type
=
"
submit
"
>
로그인
<
/button
>
<
/Link
>
<
/div
>
<
/form
>
<
/Log
>
<
/div
>
<
/div
>
)
}
export
default
Login
\ No newline at end of file
server/client/src/Pages/LoginPage.js
0 → 100644
View file @
32dcbf22
import
React
,
{
}
from
'
react
'
;
import
styled
from
'
styled-components
'
;
import
{
Link
}
from
'
react-router-dom
'
;
import
{
Formik
}
from
'
formik
'
;
import
*
as
Yup
from
'
yup
'
;
const
Log
=
styled
.
div
`
background-color: #981e1e;
`
const
Logo
=
styled
.
div
`
background-color: #E76A6A;
`
function
Login
()
{
return
(
<
div
className
=
"
container-fluid
"
>
<
div
className
=
"
row
"
>
<
Logo
className
=
"
col-md-5 col-12
"
>
<
h2
>
고려대학교
<
/h2
>
<
h4
>
대관
시스템
<
/h4
>
<
/Logo
>
<
Log
className
=
"
col-md-7 col-12
"
>
<
Formik
initialValues
=
{{
email
:
''
,
password
:
''
}}
validationSchema
=
{
Yup
.
object
({
email
:
Yup
.
string
()
.
email
(
'
이메일형식이 유효하지 않습니다.
'
)
.
required
(
'
이메일을 입력해주세요.
'
),
password
:
Yup
.
string
()
.
required
(
'
비밀번호를 입력해주세요.
'
)
.
min
(
8
,
'
8자 이상 입력해주세요.
'
),
})}
onSubmit
=
{(
values
,
{
setSubmitting
})
=>
{
// 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)
// });
setTimeout
(()
=>
{
setSubmitting
(
false
);
},
400
);
// finish the cycle in handler
}}
>
{({
errors
,
touched
,
handleSubmit
,
getFieldProps
,
// contain values, handleChange, handleBlur
isSubmitting
,
})
=>
(
<
div
className
=
"
row justify-content-center align-items-center
"
>
<
form
onSubmit
=
{
handleSubmit
}
className
=
"
col-sm-3
"
>
<
div
className
=
"
form-group mb-4
"
>
<
input
className
=
{(
touched
.
email
&&
errors
.
email
?
'
form-control is-invalid
'
:
"
form-control
"
)}
type
=
"
email
"
name
=
"
email
"
{...
getFieldProps
(
'
email
'
)}
placeholder
=
"
Input Email
"
/>
{
touched
.
email
&&
errors
.
email
?
(
<
div
className
=
"
invalid-feedback text-left
"
>
{
errors
.
email
}
<
/div
>
)
:
null
}
<
/div
>
<
div
className
=
"
form-group mb-4
"
>
<
input
className
=
{(
touched
.
password
&&
errors
.
password
?
'
form-control is-invalid
'
:
"
form-control
"
)}
type
=
"
password
"
name
=
"
password
"
{...
getFieldProps
(
'
password
'
)}
placeholder
=
"
Input Password
"
/>
{
touched
.
password
&&
errors
.
password
?
(
<
div
className
=
"
invalid-feedback text-left
"
>
{
errors
.
password
}
<
/div
>
)
:
null
}
<
/div
>
<
button
type
=
"
submit
"
className
=
"
btn btn-dark
"
disabled
=
{
isSubmitting
}
>
Login
<
/button
>
<
button
>
<
Link
to
=
"
/home
"
>
gha
<
/Link></
button
>
<
Link
to
=
"
/signup
"
>
비밀번호를
잊으셨나요
?
<
/Link
>
<
div
><
/div
>
<
Link
to
=
"
/signup
"
>
회원이
아니신가요
?
<
/Link
>
<
/form
>
<
/div
>
)}
<
/Formik
>
<
/Log
>
<
/div
>
<
/div
>
)
}
export
default
Login
\ No newline at end of file
server/client/src/Pages/NoticePage.js
0 → 100644
View file @
32dcbf22
import
React
,
{
useState
,
useEffect
}
from
'
react
'
;
import
Menu
from
'
../Components/Menu
'
;
function
Notice
()
{
return
(
<
div
>
<
Menu
/>
<
div
className
=
"
container
"
>
notice
<
/div
>
<
/div
>
)
}
export
default
Notice
\ No newline at end of file
server/client/src/Pages/SignupPage.js
0 → 100644
View file @
32dcbf22
import
React
,
{
useState
}
from
'
react
'
;
import
{
Formik
}
from
'
formik
'
;
import
*
as
Yup
from
'
yup
'
;
import
axios
from
'
axios
'
;
import
'
bootstrap/dist/css/bootstrap.css
'
;
import
{
Link
,
Redirect
}
from
'
react-router-dom
'
;
function
Signup
()
{
// const [state, setState] = useState(false);
// if (state) {
// return <Redirect to="/login" />;
// }
return
(
<
div
className
=
"
d-flex flex-column justify-content-between vh-100
"
>
<
Formik
initialValues
=
{{
name
:
''
,
email
:
''
,
password
:
''
,
password2
:
''
,
address
:
''
,
}}
validationSchema
=
{
Yup
.
object
({
name
:
Yup
.
string
()
.
required
(
'
이름을 입력해주세요.
'
),
email
:
Yup
.
string
()
.
email
(
'
이메일형식이 유효하지 않습니다.
'
)
.
required
(
'
이메일을 입력해주세요.
'
),
password
:
Yup
.
string
()
.
required
(
'
비밀번호를 입력해주세요.
'
)
.
min
(
8
,
'
8자 이상 입력해주세요.
'
),
password2
:
Yup
.
string
()
.
required
(
'
비밀번호를 다시 입력해주세요.
'
)
.
min
(
8
,
'
8자 이상 입력해주세요.
'
)
.
oneOf
([
Yup
.
ref
(
"
password
"
),
null
],
'
비밀번호가 일치하지 않습니다.
'
),
address
:
Yup
.
string
()
.
required
(
'
주소를 입력해주세요.
'
)
})}
onSubmit
=
{(
values
,
{
setSubmitting
})
=>
{
// axios({
// method: 'post',
// url: '/users',
// data: values,
// }).then(res => {
// if (res.status === 404) return alert(res.data.error)
alert
(
"
회원가입이 완료되었습니다!
"
)
// setState(true);
// })
// .catch(err => {
// alert(err.error)
// });
setTimeout
(()
=>
{
setSubmitting
(
false
);
},
400
);
// finish the cycle in handler
}}
>
{({
errors
,
touched
,
handleSubmit
,
getFieldProps
,
// contain values, handleChange, handleBlur
isSubmitting
,
})
=>
(
<
div
className
=
"
row justify-content-center align-items-center
"
>
<
form
onSubmit
=
{
handleSubmit
}
className
=
"
col-sm-3
"
>
<
div
className
=
"
form-group mb-4
"
>
<
input
className
=
{(
touched
.
name
&&
errors
.
name
?
'
form-control is-invalid
'
:
"
form-control
"
)}
type
=
"
text
"
name
=
"
name
"
{...
getFieldProps
(
'
name
'
)}
placeholder
=
"
Input Name
"
/>
{
touched
.
name
&&
errors
.
name
?
(
<
div
className
=
"
invalid-feedback text-left
"
>
{
errors
.
name
}
<
/div
>
)
:
null
}
<
/div
>
<
div
className
=
"
form-group mb-4
"
>
<
input
className
=
{(
touched
.
email
&&
errors
.
email
?
'
form-control is-invalid
'
:
"
form-control
"
)}
type
=
"
email
"
name
=
"
email
"
{...
getFieldProps
(
'
email
'
)}
placeholder
=
"
Input Email
"
/>
{
touched
.
email
&&
errors
.
email
?
(
<
div
className
=
"
invalid-feedback text-left
"
>
{
errors
.
email
}
<
/div
>
)
:
null
}
<
/div
>
<
div
className
=
"
form-group mb-4
"
>
<
input
className
=
{(
touched
.
address
&&
errors
.
address
?
'
form-control is-invalid
'
:
"
form-control
"
)}
type
=
"
text
"
name
=
"
address
"
{...
getFieldProps
(
'
address
'
)}
placeholder
=
"
Input Address
"
/>
{
touched
.
address
&&
errors
.
address
?
(
<
div
className
=
"
invalid-feedback text-left
"
>
{
errors
.
address
}
<
/div
>
)
:
null
}
<
/div
>
<
div
className
=
"
form-group mb-4
"
>
<
input
className
=
{(
touched
.
password
&&
errors
.
password
?
'
form-control is-invalid
'
:
"
form-control
"
)}
type
=
"
password
"
name
=
"
password
"
{...
getFieldProps
(
'
password
'
)}
placeholder
=
"
Input Password
"
/>
{
touched
.
password
&&
errors
.
password
?
(
<
div
className
=
"
invalid-feedback text-left
"
>
{
errors
.
password
}
<
/div
>
)
:
null
}
<
/div
>
<
div
className
=
"
form-group mb-4
"
>
<
input
className
=
{(
touched
.
password2
&&
errors
.
password2
?
'
form-control is-invalid
'
:
"
form-control
"
)}
type
=
"
password
"
name
=
"
password2
"
{...
getFieldProps
(
'
password2
'
)}
placeholder
=
"
Input Confirm Password
"
/>
{
touched
.
password2
&&
errors
.
password2
?
(
<
div
className
=
"
invalid-feedback text-left
"
>
{
errors
.
password2
}
<
/div
>
)
:
null
}
<
/div
>
<
button
type
=
"
submit
"
className
=
"
btn btn-dark
"
disabled
=
{
isSubmitting
}
>
Sign
Up
<
/button
>
<
button
>
<
Link
to
=
"
/
"
>
gha
<
/Link></
button
>
<
/form
>
<
/div
>
)}
<
/Formik
>
<
/div
>
);
}
export
default
Signup
;
server/client/src/index.js
View file @
32dcbf22
...
...
@@ -4,14 +4,22 @@ import * as serviceWorker from './serviceWorker';
import
{
BrowserRouter
as
Router
,
Route
,
Redirect
,
Switch
}
from
'
react-router-dom
'
;
import
'
bootstrap/dist/css/bootstrap.css
'
;
import
Login
from
'
./Pages/Login
'
;
import
Home
from
'
./Pages/Home
'
;
import
Login
from
'
./Pages/LoginPage
'
;
import
Home
from
'
./Pages/HomePage
'
;
import
Signup
from
'
./Pages/SignupPage
'
;
import
Apply
from
'
./Pages/ApplyPage
'
;
import
Check
from
'
./Pages/CheckPage
'
;
import
Notice
from
'
./Pages/NoticePage
'
;
ReactDOM
.
render
(
<
Router
>
<
Switch
>
<
Route
exact
path
=
"
/
"
component
=
{
Login
}
/
>
<
Route
path
=
"
/home
"
component
=
{
Home
}
/
>
<
Route
path
=
"
/signup
"
component
=
{
Signup
}
/
>
<
Route
path
=
"
/apply
"
component
=
{
Apply
}
/
>
<
Route
path
=
"
/check
"
component
=
{
Check
}
/
>
<
Route
path
=
"
/notice
"
component
=
{
Notice
}
/
>
<
/Switch
>
<
/Router>
,
document
.
getElementById
(
'
root
'
)
...
...
server/package-lock.json
View file @
32dcbf22
...
...
@@ -4,6 +4,44 @@
"lockfileVersion"
:
1
,
"requires"
:
true
,
"dependencies"
:
{
"abbrev"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz"
,
"integrity"
:
"sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
},
"ansi-regex"
:
{
"version"
:
"2.1.1"
,
"resolved"
:
"https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
,
"integrity"
:
"sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"aproba"
:
{
"version"
:
"1.2.0"
,
"resolved"
:
"https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz"
,
"integrity"
:
"sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
},
"are-we-there-yet"
:
{
"version"
:
"1.1.5"
,
"resolved"
:
"https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz"
,
"integrity"
:
"sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w=="
,
"requires"
:
{
"delegates"
:
"^1.0.0"
,
"readable-stream"
:
"^2.0.6"
}
},
"balanced-match"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"
,
"integrity"
:
"sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"bcrypt"
:
{
"version"
:
"5.0.0"
,
"resolved"
:
"https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.0.tgz"
,
"integrity"
:
"sha512-jB0yCBl4W/kVHM2whjfyqnxTmOHkCX4kHEa5nYKSoGeYe8YrjTYTc87/6bwt1g8cmV0QrbhKriETg9jWtcREhg=="
,
"requires"
:
{
"node-addon-api"
:
"^3.0.0"
,
"node-pre-gyp"
:
"0.15.0"
}
},
"bl"
:
{
"version"
:
"2.2.1"
,
"resolved"
:
"https://registry.npmjs.org/bl/-/bl-2.2.1.tgz"
,
...
...
@@ -18,42 +56,297 @@
"resolved"
:
"https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz"
,
"integrity"
:
"sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
},
"brace-expansion"
:
{
"version"
:
"1.1.11"
,
"resolved"
:
"https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
,
"integrity"
:
"sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
,
"requires"
:
{
"balanced-match"
:
"^1.0.0"
,
"concat-map"
:
"0.0.1"
}
},
"bson"
:
{
"version"
:
"1.1.5"
,
"resolved"
:
"https://registry.npmjs.org/bson/-/bson-1.1.5.tgz"
,
"integrity"
:
"sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg=="
},
"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="
},
"chownr"
:
{
"version"
:
"1.1.4"
,
"resolved"
:
"https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz"
,
"integrity"
:
"sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
},
"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="
},
"concat-map"
:
{
"version"
:
"0.0.1"
,
"resolved"
:
"https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
,
"integrity"
:
"sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"console-control-strings"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz"
,
"integrity"
:
"sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
},
"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="
},
"deep-extend"
:
{
"version"
:
"0.6.0"
,
"resolved"
:
"https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz"
,
"integrity"
:
"sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
},
"delegates"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz"
,
"integrity"
:
"sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
},
"denque"
:
{
"version"
:
"1.4.1"
,
"resolved"
:
"https://registry.npmjs.org/denque/-/denque-1.4.1.tgz"
,
"integrity"
:
"sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ=="
},
"detect-libc"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz"
,
"integrity"
:
"sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
},
"dotenv"
:
{
"version"
:
"8.2.0"
,
"resolved"
:
"https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz"
,
"integrity"
:
"sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw=="
},
"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"
}
},
"fs-minipass"
:
{
"version"
:
"1.2.7"
,
"resolved"
:
"https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz"
,
"integrity"
:
"sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA=="
,
"requires"
:
{
"minipass"
:
"^2.6.0"
}
},
"fs.realpath"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
,
"integrity"
:
"sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"gauge"
:
{
"version"
:
"2.7.4"
,
"resolved"
:
"https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz"
,
"integrity"
:
"sha1-LANAXHU4w51+s3sxcCLjJfsBi/c="
,
"requires"
:
{
"aproba"
:
"^1.0.3"
,
"console-control-strings"
:
"^1.0.0"
,
"has-unicode"
:
"^2.0.0"
,
"object-assign"
:
"^4.1.0"
,
"signal-exit"
:
"^3.0.0"
,
"string-width"
:
"^1.0.1"
,
"strip-ansi"
:
"^3.0.1"
,
"wide-align"
:
"^1.1.0"
}
},
"glob"
:
{
"version"
:
"7.1.6"
,
"resolved"
:
"https://registry.npmjs.org/glob/-/glob-7.1.6.tgz"
,
"integrity"
:
"sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA=="
,
"requires"
:
{
"fs.realpath"
:
"^1.0.0"
,
"inflight"
:
"^1.0.4"
,
"inherits"
:
"2"
,
"minimatch"
:
"^3.0.4"
,
"once"
:
"^1.3.0"
,
"path-is-absolute"
:
"^1.0.0"
}
},
"has-unicode"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"
,
"integrity"
:
"sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
},
"iconv-lite"
:
{
"version"
:
"0.4.24"
,
"resolved"
:
"https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
,
"integrity"
:
"sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="
,
"requires"
:
{
"safer-buffer"
:
">= 2.1.2 < 3"
}
},
"ignore-walk"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz"
,
"integrity"
:
"sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw=="
,
"requires"
:
{
"minimatch"
:
"^3.0.4"
}
},
"inflight"
:
{
"version"
:
"1.0.6"
,
"resolved"
:
"https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
,
"integrity"
:
"sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk="
,
"requires"
:
{
"once"
:
"^1.3.0"
,
"wrappy"
:
"1"
}
},
"inherits"
:
{
"version"
:
"2.0.4"
,
"resolved"
:
"https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
,
"integrity"
:
"sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ini"
:
{
"version"
:
"1.3.5"
,
"resolved"
:
"https://registry.npmjs.org/ini/-/ini-1.3.5.tgz"
,
"integrity"
:
"sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
},
"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"
,
"integrity"
:
"sha1-754xOG8DGn8NZDr4L95QxFfvAMs="
,
"requires"
:
{
"number-is-nan"
:
"^1.0.0"
}
},
"isarray"
:
{
"version"
:
"1.0.0"
,
"resolved"
:
"https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
,
"integrity"
:
"sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"jsonwebtoken"
:
{
"version"
:
"8.5.1"
,
"resolved"
:
"https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz"
,
"integrity"
:
"sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w=="
,
"requires"
:
{
"jws"
:
"^3.2.2"
,
"lodash.includes"
:
"^4.3.0"
,
"lodash.isboolean"
:
"^3.0.3"
,
"lodash.isinteger"
:
"^4.0.4"
,
"lodash.isnumber"
:
"^3.0.3"
,
"lodash.isplainobject"
:
"^4.0.6"
,
"lodash.isstring"
:
"^4.0.1"
,
"lodash.once"
:
"^4.0.0"
,
"ms"
:
"^2.1.1"
,
"semver"
:
"^5.6.0"
}
},
"jwa"
:
{
"version"
:
"1.4.1"
,
"resolved"
:
"https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz"
,
"integrity"
:
"sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA=="
,
"requires"
:
{
"buffer-equal-constant-time"
:
"1.0.1"
,
"ecdsa-sig-formatter"
:
"1.0.11"
,
"safe-buffer"
:
"^5.0.1"
}
},
"jws"
:
{
"version"
:
"3.2.2"
,
"resolved"
:
"https://registry.npmjs.org/jws/-/jws-3.2.2.tgz"
,
"integrity"
:
"sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA=="
,
"requires"
:
{
"jwa"
:
"^1.4.1"
,
"safe-buffer"
:
"^5.0.1"
}
},
"kareem"
:
{
"version"
:
"2.3.1"
,
"resolved"
:
"https://registry.npmjs.org/kareem/-/kareem-2.3.1.tgz"
,
"integrity"
:
"sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw=="
},
"lodash.includes"
:
{
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz"
,
"integrity"
:
"sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
},
"lodash.isboolean"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz"
,
"integrity"
:
"sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
},
"lodash.isinteger"
:
{
"version"
:
"4.0.4"
,
"resolved"
:
"https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz"
,
"integrity"
:
"sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
},
"lodash.isnumber"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz"
,
"integrity"
:
"sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
},
"lodash.isplainobject"
:
{
"version"
:
"4.0.6"
,
"resolved"
:
"https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz"
,
"integrity"
:
"sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
},
"lodash.isstring"
:
{
"version"
:
"4.0.1"
,
"resolved"
:
"https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz"
,
"integrity"
:
"sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
},
"lodash.once"
:
{
"version"
:
"4.1.1"
,
"resolved"
:
"https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz"
,
"integrity"
:
"sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
},
"memory-pager"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz"
,
"integrity"
:
"sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
,
"optional"
:
true
},
"minimatch"
:
{
"version"
:
"3.0.4"
,
"resolved"
:
"https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz"
,
"integrity"
:
"sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA=="
,
"requires"
:
{
"brace-expansion"
:
"^1.1.7"
}
},
"minimist"
:
{
"version"
:
"1.2.5"
,
"resolved"
:
"https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
,
"integrity"
:
"sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
"minipass"
:
{
"version"
:
"2.9.0"
,
"resolved"
:
"https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz"
,
"integrity"
:
"sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg=="
,
"requires"
:
{
"safe-buffer"
:
"^5.1.2"
,
"yallist"
:
"^3.0.0"
}
},
"minizlib"
:
{
"version"
:
"1.3.3"
,
"resolved"
:
"https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz"
,
"integrity"
:
"sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q=="
,
"requires"
:
{
"minipass"
:
"^2.9.0"
}
},
"mkdirp"
:
{
"version"
:
"0.5.5"
,
"resolved"
:
"https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
,
"integrity"
:
"sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ=="
,
"requires"
:
{
"minimist"
:
"^1.2.5"
}
},
"mongodb"
:
{
"version"
:
"3.6.2"
,
"resolved"
:
"https://registry.npmjs.org/mongodb/-/mongodb-3.6.2.tgz"
,
...
...
@@ -132,11 +425,149 @@
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
,
"integrity"
:
"sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"needle"
:
{
"version"
:
"2.5.2"
,
"resolved"
:
"https://registry.npmjs.org/needle/-/needle-2.5.2.tgz"
,
"integrity"
:
"sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ=="
,
"requires"
:
{
"debug"
:
"^3.2.6"
,
"iconv-lite"
:
"^0.4.4"
,
"sax"
:
"^1.2.4"
},
"dependencies"
:
{
"debug"
:
{
"version"
:
"3.2.6"
,
"resolved"
:
"https://registry.npmjs.org/debug/-/debug-3.2.6.tgz"
,
"integrity"
:
"sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ=="
,
"requires"
:
{
"ms"
:
"^2.1.1"
}
}
}
},
"node-addon-api"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.0.0.tgz"
,
"integrity"
:
"sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg=="
},
"node-pre-gyp"
:
{
"version"
:
"0.15.0"
,
"resolved"
:
"https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.15.0.tgz"
,
"integrity"
:
"sha512-7QcZa8/fpaU/BKenjcaeFF9hLz2+7S9AqyXFhlH/rilsQ/hPZKK32RtR5EQHJElgu+q5RfbJ34KriI79UWaorA=="
,
"requires"
:
{
"detect-libc"
:
"^1.0.2"
,
"mkdirp"
:
"^0.5.3"
,
"needle"
:
"^2.5.0"
,
"nopt"
:
"^4.0.1"
,
"npm-packlist"
:
"^1.1.6"
,
"npmlog"
:
"^4.0.2"
,
"rc"
:
"^1.2.7"
,
"rimraf"
:
"^2.6.1"
,
"semver"
:
"^5.3.0"
,
"tar"
:
"^4.4.2"
}
},
"nopt"
:
{
"version"
:
"4.0.3"
,
"resolved"
:
"https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz"
,
"integrity"
:
"sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg=="
,
"requires"
:
{
"abbrev"
:
"1"
,
"osenv"
:
"^0.1.4"
}
},
"npm-bundled"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz"
,
"integrity"
:
"sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA=="
,
"requires"
:
{
"npm-normalize-package-bin"
:
"^1.0.1"
}
},
"npm-normalize-package-bin"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz"
,
"integrity"
:
"sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
},
"npm-packlist"
:
{
"version"
:
"1.4.8"
,
"resolved"
:
"https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz"
,
"integrity"
:
"sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A=="
,
"requires"
:
{
"ignore-walk"
:
"^3.0.1"
,
"npm-bundled"
:
"^1.0.1"
,
"npm-normalize-package-bin"
:
"^1.0.1"
}
},
"npmlog"
:
{
"version"
:
"4.1.2"
,
"resolved"
:
"https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz"
,
"integrity"
:
"sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg=="
,
"requires"
:
{
"are-we-there-yet"
:
"~1.1.2"
,
"console-control-strings"
:
"~1.1.0"
,
"gauge"
:
"~2.7.3"
,
"set-blocking"
:
"~2.0.0"
}
},
"number-is-nan"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz"
,
"integrity"
:
"sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"object-assign"
:
{
"version"
:
"4.1.1"
,
"resolved"
:
"https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
,
"integrity"
:
"sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"once"
:
{
"version"
:
"1.4.0"
,
"resolved"
:
"https://registry.npmjs.org/once/-/once-1.4.0.tgz"
,
"integrity"
:
"sha1-WDsap3WWHUsROsF9nFC6753Xa9E="
,
"requires"
:
{
"wrappy"
:
"1"
}
},
"os-homedir"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz"
,
"integrity"
:
"sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
},
"os-tmpdir"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
,
"integrity"
:
"sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
"osenv"
:
{
"version"
:
"0.1.5"
,
"resolved"
:
"https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz"
,
"integrity"
:
"sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g=="
,
"requires"
:
{
"os-homedir"
:
"^1.0.0"
,
"os-tmpdir"
:
"^1.0.0"
}
},
"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="
},
"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=="
},
"rc"
:
{
"version"
:
"1.2.8"
,
"resolved"
:
"https://registry.npmjs.org/rc/-/rc-1.2.8.tgz"
,
"integrity"
:
"sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="
,
"requires"
:
{
"deep-extend"
:
"^0.6.0"
,
"ini"
:
"~1.3.0"
,
"minimist"
:
"^1.2.0"
,
"strip-json-comments"
:
"~2.0.1"
}
},
"readable-stream"
:
{
"version"
:
"2.3.7"
,
"resolved"
:
"https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"
,
...
...
@@ -177,11 +608,24 @@
"resolved"
:
"https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz"
,
"integrity"
:
"sha1-lICrIOlP+h2egKgEx+oUdhGWa1c="
},
"rimraf"
:
{
"version"
:
"2.7.1"
,
"resolved"
:
"https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
,
"integrity"
:
"sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="
,
"requires"
:
{
"glob"
:
"^7.1.3"
}
},
"safe-buffer"
:
{
"version"
:
"5.2.1"
,
"resolved"
:
"https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
,
"integrity"
:
"sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
},
"safer-buffer"
:
{
"version"
:
"2.1.2"
,
"resolved"
:
"https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
,
"integrity"
:
"sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"saslprep"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz"
,
...
...
@@ -191,16 +635,31 @@
"sparse-bitfield"
:
"^3.0.3"
}
},
"sax"
:
{
"version"
:
"1.2.4"
,
"resolved"
:
"https://registry.npmjs.org/sax/-/sax-1.2.4.tgz"
,
"integrity"
:
"sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"semver"
:
{
"version"
:
"5.7.1"
,
"resolved"
:
"https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
,
"integrity"
:
"sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
},
"set-blocking"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
,
"integrity"
:
"sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"sift"
:
{
"version"
:
"7.0.1"
,
"resolved"
:
"https://registry.npmjs.org/sift/-/sift-7.0.1.tgz"
,
"integrity"
:
"sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g=="
},
"signal-exit"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz"
,
"integrity"
:
"sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
},
"sliced"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz"
,
...
...
@@ -215,6 +674,16 @@
"memory-pager"
:
"^1.0.2"
}
},
"string-width"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz"
,
"integrity"
:
"sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M="
,
"requires"
:
{
"code-point-at"
:
"^1.0.0"
,
"is-fullwidth-code-point"
:
"^1.0.0"
,
"strip-ansi"
:
"^3.0.0"
}
},
"string_decoder"
:
{
"version"
:
"1.1.1"
,
"resolved"
:
"https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
,
...
...
@@ -230,10 +699,55 @@
}
}
},
"strip-ansi"
:
{
"version"
:
"3.0.1"
,
"resolved"
:
"https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz"
,
"integrity"
:
"sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8="
,
"requires"
:
{
"ansi-regex"
:
"^2.0.0"
}
},
"strip-json-comments"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz"
,
"integrity"
:
"sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
"tar"
:
{
"version"
:
"4.4.13"
,
"resolved"
:
"https://registry.npmjs.org/tar/-/tar-4.4.13.tgz"
,
"integrity"
:
"sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA=="
,
"requires"
:
{
"chownr"
:
"^1.1.1"
,
"fs-minipass"
:
"^1.2.5"
,
"minipass"
:
"^2.8.6"
,
"minizlib"
:
"^1.2.1"
,
"mkdirp"
:
"^0.5.0"
,
"safe-buffer"
:
"^5.1.2"
,
"yallist"
:
"^3.0.3"
}
},
"util-deprecate"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
,
"integrity"
:
"sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"wide-align"
:
{
"version"
:
"1.1.3"
,
"resolved"
:
"https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz"
,
"integrity"
:
"sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA=="
,
"requires"
:
{
"string-width"
:
"^1.0.2 || 2"
}
},
"wrappy"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
,
"integrity"
:
"sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"yallist"
:
{
"version"
:
"3.1.1"
,
"resolved"
:
"https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
,
"integrity"
:
"sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
}
}
}
server/package.json
View file @
32dcbf22
...
...
@@ -6,10 +6,13 @@
"start"
:
"node ./bin/www"
},
"dependencies"
:
{
"bcrypt"
:
"^5.0.0"
,
"cookie-parser"
:
"~1.4.4"
,
"debug"
:
"~2.6.9"
,
"dotenv"
:
"^8.2.0"
,
"express"
:
"~4.16.1"
,
"http-errors"
:
"~1.6.3"
,
"jsonwebtoken"
:
"^8.5.1"
,
"mongoose"
:
"^5.10.5"
,
"morgan"
:
"~1.9.1"
,
"pug"
:
"2.0.0-beta11"
...
...
server/schemas/index.js
0 → 100644
View file @
32dcbf22
const
mongoose
=
require
(
'
mongoose
'
);
module
.
exports
=
()
=>
{
const
connect
=
()
=>
{
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
mongoose
.
set
(
'
debug
'
,
true
);
}
mongoose
.
connect
(
'
mongodb://rkyoung7:rkdud127@localhost:27017/admin
'
,
{
dbName
:
'
KU_Rental
'
,
},
(
error
)
=>
{
if
(
error
)
{
console
.
log
(
'
몽고디비 연결 에러
'
,
error
);
}
else
{
console
.
log
(
'
몽고디비 연결 성공
'
);
}
});
};
connect
();
mongoose
.
connection
.
on
(
'
error
'
,
(
error
)
=>
{
console
.
error
(
'
몽고디비 연결 에러
'
,
error
);
});
mongoose
.
connection
.
on
(
'
disconnected
'
,
()
=>
{
console
.
error
(
'
몽고디비 연결이 끊겼습니다. 연결을재시도합니다.
'
);
connect
();
});
require
(
'
./user
'
);
require
(
'
./reserve
'
);
};
server/schemas/reserve.js
0 → 100644
View file @
32dcbf22
const
mongoose
=
require
(
'
mongoose
'
);
const
{
Schema
}
=
mongoose
;
const
reserveSchema
=
new
Schema
({
date
:
{
type
:
String
,
},
time
:
{
type
:
String
,
},
room
:{
type
:
String
,
},
name
:
{
//대표자 이름
type
:
String
,
},
id
:{
type
:
Number
,
},
reason
:
{
type
:
String
,
},
member
:
{
type
:
String
,
},
approve
:
{
type
:
Boolean
,
},
num
:
{
type
:
Number
,
},
});
module
.
exports
=
mongoose
.
model
(
'
Reserve
'
,
reserveSchema
);
server/schemas/user.js
0 → 100644
View file @
32dcbf22
const
mongoose
=
require
(
'
mongoose
'
);
const
bcrypt
=
require
(
"
bcrypt
"
);
const
saltRounds
=
10
;
const
{
Schema
}
=
mongoose
;
const
userSchema
=
new
Schema
({
name
:
{
type
:
String
,
required
:
true
,
},
password
:
{
type
:
String
,
},
id
:
{
type
:
Number
,
required
:
true
,
},
});
userSchema
.
pre
(
"
save
"
,
function
(
next
)
{
let
user
=
this
;
//User모델 자체를 가르킴.
//model 안의 paswsword가 변경 또는 생성될 때 암호화
if
(
user
.
isModified
(
"
password
"
))
{
bcrypt
.
genSalt
(
saltRounds
,
function
(
err
,
salt
)
{
if
(
err
)
return
next
(
err
);
bcrypt
.
hash
(
user
.
password
,
salt
,
function
(
err
,
hash
)
{
if
(
err
)
return
next
(
err
);
user
.
password
=
hash
;
next
();
});
});
}
else
{
next
();
}
});
module
.
exports
=
mongoose
.
model
(
'
User
'
,
userSchema
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment