-
Notifications
You must be signed in to change notification settings - Fork 2
/
Signup.js
129 lines (117 loc) · 3.62 KB
/
Signup.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import React, { useState, useEffect } from "react";
import axios from "axios";
import { useHistory } from "react-router-dom";
import styled from "styled-components";
const Input = styled.input`
border: 1px solid black;
border-radius: 0px;
height: 50px;
width: 400px;
margin-top: 10px;
text-align: center;
font-size: 18px;
display: inline-block;
`;
const Label = styled.label`
position: relative;
top: 10px;
font-family: "Coda";
font-size: 36px;
font-weight: 600;
width: 200px;
display: inline-block;
text-align: left;
`;
const Signup = () => {
const useGetData = () => {
const [account, setAccount] = useState({
name: "",
id: "",
pw: "",
});
const handleAccount = (e) => {
setAccount({
...account,
[e.target.name]: e.target.value,
});
}
const postData = async () => {
const postUrl = "http://localhost:5000/auth/register";
const postVal = {
name: account.name,
id: account.id,
password: account.pw,
}
await axios.post(postUrl, postVal, {
headers: {
'Content-Type': 'application/json'
}
})
.then((response) => {
if (response.data.status == "success") {
localStorage.clear();
localStorage.setItem("token", response.data.auth_token);
alert(response.data.message);
history.replace("/login");
}
else if (response.data.status == "fail"){
alert(response.data.message);
}
});
}
const handleSignup = (e) => {
e.preventDefault();
postData();
}
return {
handleAccount,
handleSignup,
}
}
const history = useHistory();
const { handleAccount, handleSignup } = useGetData();
useEffect(() => {
if (localStorage.getItem('token') !== null) {
history.replace("/");
}
}, []);
return(
<div className="contents1">
<form className="textShadow2">
<Label htmlFor="name">이름 </Label>
<Input
type="text"
id="name"
name="name"
placeholder="이름을 입력해주세요."
required
onChange={handleAccount}
/>
<p/>
<Label htmlFor="id">아이디 </Label>
<Input
type="text"
id="id"
name="id"
placeholder="아이디를 입력해주세요."
required
onChange={handleAccount}
/>
<p/>
<Label htmlFor="password">비밀번호 </Label>
<Input
type="password"
id="pw"
name="pw"
placeholder="비밀번호를 입력해주세요."
required
onChange={handleAccount}
/>
<p/>
<button className="lightest bigBtn boxShadow" type="reset">초기화</button>
<button className="darkest bigBtn boxShadow" type="button" onClick={handleSignup}>회원가입</button>
</form>
</div>
)
}
export default Signup;