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
messenger
Commits
2a466264
Commit
2a466264
authored
Jan 04, 2021
by
우지원
Browse files
회원가입 server연결
parent
f783563f
Changes
8
Hide whitespace changes
Inline
Side-by-side
client/debug.log
deleted
100644 → 0
View file @
f783563f
[1229/112842.005:ERROR:directory_reader_win.cc(43)] FindFirstFile: 지정된 경로를 찾을 수 없습니다. (0x3)
[1229/165211.265:ERROR:directory_reader_win.cc(43)] FindFirstFile: 지정된 경로를 찾을 수 없습니다. (0x3)
[0101/185146.578:ERROR:directory_reader_win.cc(43)] FindFirstFile: 지정된 경로를 찾을 수 없습니다. (0x3)
client/src/Pages/LogInPage.js
View file @
2a466264
import
React
,
{
useState
}
from
'
react
'
;
import
{
Button
,
Form
,
Container
,
Navbar
}
from
'
react-bootstrap
'
;
import
{
Link
}
from
'
react-router-dom
'
;
import
Menu
from
'
../Components/Menu
'
;
function
LogIn
()
{
const
[
validated
,
setValidated
]
=
useState
(
false
);
...
...
@@ -64,7 +63,4 @@ function LogIn() {
);
}
//render(<LogIn />);
export
default
LogIn
\ No newline at end of file
client/src/Pages/SignUpPage.js
View file @
2a466264
import
React
,
{
useState
}
from
'
react
'
;
import
{
Button
,
Form
,
Container
,
Navbar
}
from
'
react-bootstrap
'
;
import
React
,
{
useState
,
useEffect
}
from
'
react
'
;
import
{
Button
,
Form
,
Container
,
Navbar
,
Alert
}
from
'
react-bootstrap
'
;
import
{
Link
}
from
'
react-router-dom
'
;
import
Menu
from
'
../Components/Menu
'
;
const
INIT_USER
=
{
username
:
''
,
nickname
:
''
,
email
:
''
,
password
:
''
,
}
function
SingUp
()
{
const
[
validated
,
setValidated
]
=
useState
(
false
);
const
[
user
,
setUser
]
=
useState
(
INIT_USER
)
const
[
error
,
setError
]
=
useState
(
''
)
const
[
disabled
,
setDisabled
]
=
useState
(
true
)
useEffect
(()
=>
{
const
isUser
=
Object
.
values
(
user
).
every
(
el
=>
Boolean
(
el
))
//Boolean : 참거짓 판별
//every : every뒤에 함수값이 return하는 값이 모두 참일때만 true출력 -> element가 하나도 빈 문자열이 존재하지 않을때
//empty string때만 false로 나옴.
isUser
?
setDisabled
(
false
)
:
setDisabled
(
true
)
},
[
user
])
function
handleChange
(
event
)
{
const
{
name
,
value
}
=
event
.
target
// console.log(name, value)
setUser
({
...
user
,
[
name
]:
value
})
}
async
function
handleSubmit
(
event
)
{
event
.
preventDefault
();
const
handleSubmit
=
(
event
)
=>
{
const
form
=
event
.
currentTarget
;
if
(
form
.
checkValidity
()
===
false
)
{
event
.
preventDefault
();
event
.
stopPropagation
();
}
setValidated
(
true
);
};
// async function addUser(user) {
// await fetch(`http://localhost:3000/users`, {
// method: 'POST',
// headers: {
// 'Content-Type' : 'application/json'
// },
// body: JSON.stringify(user)
// //json 형식으로 보냄.
// })
// }
function
submitUser
()
{
const
username
=
document
.
querySelector
(
'
#username
'
)
const
nickname
=
document
.
querySelector
(
'
#nickname
'
)
const
email
=
document
.
querySelector
(
'
#email
'
)
const
password
=
document
.
querySelector
(
'
#password
'
)
const
user
=
{
username
:
username
.
value
,
nickname
:
nickname
.
value
,
email
:
email
.
value
,
password
:
password
.
value
console
.
log
(
user
)
try
{
setError
(
''
)
const
response
=
await
fetch
(
'
/api/users/signup
'
,
{
//post, get같은게 주어지지 않으면 기본적으로 fetch에 get요청함
method
:
'
POST
'
,
headers
:
{
'
Content-Type
'
:
'
application/json
'
},
body
:
JSON
.
stringify
(
user
)
})
const
data
=
await
response
.
json
()
console
.
log
(
data
)
// setUser(INIT_USER)
}
catch
(
error
)
{
console
.
log
(
error
)
setError
(
'
에러발생
'
)
}
console
.
log
(
user
);
}
return
(
<>
<
Navbar
bg
=
"
dark
"
variant
=
"
dark
"
>
<
Navbar
.
Brand
>
YDK
Messenger
<
/Navbar.Brand
>
<
/Navbar
>
<
div
>
<
Form
noValidate
validated
=
{
validated
}
onSubmit
=
{
handleSubmit
}
>
<
Container
className
=
"
d-flex justify-content-center
"
>
...
...
@@ -64,7 +77,9 @@ function SingUp() {
<
Form
.
Control
required
type
=
"
text
"
id
=
"
username
"
name
=
"
username
"
onChange
=
{
handleChange
}
value
=
{
user
.
username
}
placeholder
=
"
이름을 입력해주세요
"
/>
<
Form
.
Control
.
Feedback
type
=
"
invalid
"
>
필수
정보입니다
!
이름을
입력해주세요
!
...
...
@@ -76,7 +91,9 @@ function SingUp() {
<
Form
.
Control
required
type
=
"
text
"
id
=
"
nickname
"
name
=
"
nickname
"
onChange
=
{
handleChange
}
value
=
{
user
.
nickname
}
placeholder
=
"
별명을 입력해주세요
"
/>
<
Form
.
Control
.
Feedback
type
=
"
invalid
"
>
필수
정보입니다
!
별명을
입력해주세요
!
...
...
@@ -88,7 +105,9 @@ function SingUp() {
<
Form
.
Control
required
type
=
"
email
"
id
=
"
email
"
name
=
"
email
"
onChange
=
{
handleChange
}
value
=
{
user
.
email
}
placeholder
=
"
이메일을 입력해주세요
"
/>
<
Form
.
Control
.
Feedback
type
=
"
invalid
"
>
필수
정보입니다
!
이메일을
입력해주세요
!
...
...
@@ -100,7 +119,9 @@ function SingUp() {
<
Form
.
Control
required
type
=
"
password
"
id
=
"
password
"
name
=
"
password
"
onChange
=
{
handleChange
}
value
=
{
user
.
password
}
placeholder
=
"
비밀번호를 입력해주세요
"
/>
<
Form
.
Control
.
Feedback
type
=
"
invalid
"
>
필수
정보입니다
!
비밀번호를
입력해주세요
!
...
...
@@ -108,9 +129,18 @@ function SingUp() {
<
/Form.Group
>
<
Link
to
=
"
./login
"
>
<
Button
type
=
"
submit
"
onClick
=
{{
submitUser
}}
variant
=
"
outline-success
"
size
=
"
lg
"
className
=
"
mr-4
"
block
>
가입
<
/Button
>
<
/Link
>
{
/* <Link to="./login"> */
}
<
Button
disabled
=
{
disabled
}
type
=
'
submit
'
variant
=
"
outline-success
"
size
=
"
lg
"
className
=
"
mr-4
"
block
>
가입
<
/Button
>
{
/* </Link> */
}
{
error
&&
<
Alert
variant
=
'
danger
'
>
{
error
}
<
/Alert>
}
<
/div
>
<
/Container
>
<
/Form
>
...
...
package.json
View file @
2a466264
...
...
@@ -6,7 +6,7 @@
"type"
:
"module"
,
"scripts"
:
{
"test"
:
"echo
\"
Error: no test specified
\"
&& exit 1"
,
"dev"
:
"nodemon
index
.js"
"dev"
:
"nodemon
server/server
.js"
,
},
"repository"
:
{
"type"
:
"git"
,
...
...
server/controllers/User.controllers.js
deleted
100644 → 0
View file @
f783563f
import
User
from
"
../models/User.js
"
import
isLength
from
'
validator/lib/isLength.js
'
const
signup
=
async
(
req
,
res
)
=>
{
const
{
name
,
email
,
password
}
=
req
.
body
try
{
if
(
!
isLength
(
name
,
{
min
:
3
,
max
:
10
}))
{
return
res
.
status
(
422
).
send
(
'
Name must be 3-10 characters
'
)
}
const
newUser
=
await
new
User
({
name
,
email
,
password
}).
save
()
console
.
log
(
newUser
)
res
.
json
(
newUser
)
}
catch
(
error
)
{
console
.
log
(
error
)
res
.
status
(
500
).
send
(
'
User signup error
'
)
}
}
const
hello
=
(
req
,
res
)
=>
{
res
.
send
(
'
Hello from users controller
'
)
}
export
default
{
signup
,
hello
}
\ No newline at end of file
server/controllers/user.controller.js
View file @
2a466264
import
User
from
"
../models/User.js
"
import
user
from
'
.../client/src/Pages/SignUpPage.js
'
import
isLength
from
'
validator/lib/isLength.js
'
import
isEmail
from
'
validator/lib/isEmail.js
'
//꼭 js붙여주기!!
...
...
@@ -17,7 +16,8 @@ const signup = async (req, res) => {
//이범위를 벗어나면 error발생
return
res
.
status
(
422
).
send
(
'
Name must be 3-10 characters
'
)
//422 : 형식이 잘못되었다는 error발생
}
else
if
(
!
isLength
(
nickname
,
{
min
:
3
,
max
:
10
}))
{
}
else
if
(
!
isLength
(
nickname
,
{
min
:
3
,
max
:
10
}))
{
return
res
.
status
(
422
).
send
(
'
Nickname must be 3-10 characters
'
)
}
else
if
(
!
isEmail
(
email
,
{
allow_display_name
:
true
,
...
...
server/routes/User.routers.js
deleted
100644 → 0
View file @
f783563f
import
express
from
'
express
'
import
userCtrl
from
'
../controllers/user.controllers.js
'
const
router
=
express
.
Router
()
router
.
route
(
'
/api/users/signup
'
)
.
post
(
userCtrl
.
signup
)
.
get
(
userCtrl
.
hello
)
export
default
router
\ No newline at end of file
server/routes/user.routes.js
View file @
2a466264
...
...
@@ -4,7 +4,7 @@ import userCtrl from '../controllers/user.controller.js'
const
router
=
express
.
Router
()
//router의 역할 : './주소'부분을 처리하는 역할함.
router
.
route
(
'
/signup
'
)
router
.
route
(
'
/
api/users/
signup
'
)
.
post
(
userCtrl
.
signup
)
.
get
(
userCtrl
.
hello
)
...
...
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