Commit cb8b006f authored by seoyeon's avatar seoyeon
Browse files

0726

parent 477e56fd
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
"@testing-library/user-event": "^12.1.10", "@testing-library/user-event": "^12.1.10",
"axios": "^0.21.1", "axios": "^0.21.1",
"bootstrap": "^5.0.2", "bootstrap": "^5.0.2",
"nanoid": "^3.1.23",
"node-sass": "^6.0.1", "node-sass": "^6.0.1",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
......
...@@ -42,12 +42,14 @@ const Signup = () => { ...@@ -42,12 +42,14 @@ const Signup = () => {
async function handleSubmit() { async function handleSubmit() {
try { try {
const data = await axios.post("/api/room/1/1",user) const data = await userApi.signup(user)
// setLoading(true); // const data = await axios.post("https://localhost:8080/api/room/1/1",user)
// setError(""); setLoading(true);
// const success = await login(user.email, user.password); setError("");
// const success = await login(user.email, user.password);
// const data = await axios.post("/api/room/1/1",user)
console.log(data); console.log(data);
// sestSuccess(success); setSuccess(true);
} catch (error) { } catch (error) {
// catchErrors(error, setError); // catchErrors(error, setError);
} finally { } finally {
......
import { User } from "../models/index.js"; import { User } from '../models/index.js'
import jwt from "jsonwebtoken"; import jwt from 'jsonwebtoken'
import config from "../config/app.config.js"; import config from '../config/app.config.js'
import isLength from 'validator/lib/isLength.js' import isLength from 'validator/lib/isLength.js'
import bcrypt from "bcryptjs"; import bcrypt from 'bcryptjs'
const test = async (req, res) => {
try {
console.log(req);
res.json("안녕");
} catch (error) {
console.log(error);
return res.status(500).send("test 중 에러");
}
};
const login = async (req, res) => { const login = async (req, res) => {
try { try {
console.log("login= ", req.body); console.log('login= ', req.body)
const { email, password } = req.body; const { email, password } = req.body
const user = await User.findOne({ where: { email: email } }); const user = await User.findOne({ where: { email: email } })
if (!user) if (!user)
return res.status(422).send(`${email} 사용자가 존재하지 않습니다.`); return res.status(422).send(`${email} 사용자가 존재하지 않습니다.`)
const passworMatch = await user.comparePassword(password); const passworMatch = await user.comparePassword(password)
if (passworMatch) { if (passworMatch) {
const token = jwt.sign({ userID: user.id }, config.jwtSecret, { const token = jwt.sign({ userID: user.id }, config.jwtSecret, {
expiresIn: config.jwtExpires, expiresIn: config.jwtExpires,
}); })
res.cookie(config.cookieName, token, { res.cookie(config.cookieName, token, {
path: "/", path: '/',
httpOnly: true, httpOnly: true,
secure: true, secure: true,
}); })
res.json({ user }); res.json({ user })
} else { } else {
res.status(401).send("비밀번호가 일치하지 않습니다."); res.status(401).send('비밀번호가 일치하지 않습니다.')
} }
} catch (error) { } catch (error) {
console.log(error); console.log(error)
return res.status(500).send("로그인 중 에러"); return res.status(500).send('로그인 중 에러')
} }
}; }
const signup = async (req, res) => { const signup = async (req, res) => {
try { try {
console.log("sign up= ", req.body); console.log('sign up= ', req.body)
const { name, email, password, gender, phone } = req.body; const { name, email, password, gender, phone } = req.body
const id = Math.floor(( Math.random() * (9999 - 1000) + 1000 )); const id = Math.floor(Math.random() * (9999 - 1000) + 1000)
console.log('id:', id) console.log('id:', id)
const Id = await User.findOne({ where: { id: id }}) const Id = await User.findOne({ where: { id: id } })
console.log("Id 중복확인:", Id) console.log('Id 중복확인:', Id)
while (Id) { while (Id) {
const id = Math.floor((Math.random() * (9999 - 1000) + 1000 )); const id = Math.floor(Math.random() * (9999 - 1000) + 1000)
const Id = await User.findOne({ where: {id: id}}); const Id = await User.findOne({ where: { id: id } })
} }
const user = await User.findOne({ where: { email: email } }); const user = await User.findOne({ where: { email: email } })
if (user) if (user)
return res.status(422).send(`${email} 이미 존재하는 사용자입니다.`); return res.status(422).send(`${email} 이미 존재하는 사용자입니다.`)
if (!isLength(name, {min:3, max:10})) { if (!isLength(name, { min: 3, max: 10 })) {
return res.status(422).send('이름은 3-10자 사이입니다') return res.status(422).send('이름은 3-10자 사이입니다')
} else if (!isLength(password, { min: 6 })){ } else if (!isLength(password, { min: 6 })) {
return res.status(422).send('비밀번호는 6자이상 입니다') return res.status(422).send('비밀번호는 6자이상 입니다')
} else if (!isLength(email,{ min:3, max:10 })) { } else if (!isLength(email, { min: 3, max: 10 })) {
return res.status(422).send('아이디는 3-10자 사이입니다') return res.status(422).send('아이디는 3-10자 사이입니다')
} }
const newUser = User.create({ const hash = await bcrypt.hash(password, 10)
id: id, const newUser = await User.create({
id: id,
name: name, name: name,
email: email, email: email,
password: password, password: hash,
gender: gender, gender: gender,
phone: phone, phone: phone,
}); }).then (_ =>
console.log("회원가입 정보",id, name, email, hash, gender, phone)
)
} catch (error) { } catch (error) {
console.log(error); console.log(error)
return res.status(500).send("회원가입 중 에러"); return res.status(500).send('회원가입 중 에러')
} }
}; }
export default { export default {
test,
login, login,
signup, signup,
}; }
...@@ -24,12 +24,12 @@ const UserModel = (sequelize) => { ...@@ -24,12 +24,12 @@ const UserModel = (sequelize) => {
phone: { phone: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
}, },
img: { // img: {
type: DataTypes.STRING, // type: DataTypes.STRING,
}, // },
roomNumber: { // roomNumber: {
type: DataTypes.ARRAY(DataTypes.STRING), // type: DataTypes.ARRAY(DataTypes.STRING),
}, // },
}, },
{ timestamps: true } { timestamps: true }
); );
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
"express": "4.17.1", "express": "4.17.1",
"http": "0.0.1-security", "http": "0.0.1-security",
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",
"nanoid": "^3.1.20", "nanoid": "^3.1.23",
"nodemon": "^2.0.7", "nodemon": "^2.0.7",
"pg": "^8.6.0", "pg": "^8.6.0",
"pg-hstore": "^2.3.4", "pg-hstore": "^2.3.4",
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment