user.controller.js 2.16 KB
Newer Older
Kim, Chaerin's avatar
Kim, Chaerin committed
1
import { User } from "../models/index.js";
Kim, Chaerin's avatar
a    
Kim, Chaerin committed
2
import jwt from "jsonwebtoken";
Kim, Chaerin's avatar
Kim, Chaerin committed
3
import config from "../config/app.config.js";
seoyeon's avatar
0716    
seoyeon committed
4
5
import isLength from 'validator/lib/isLength.js'
import bcrypt from "bcryptjs";
Kim, Chaerin's avatar
Kim, Chaerin committed
6

우지원's avatar
0726    
우지원 committed
7
8
9
10
const user = async (req, res) => {
  console.log(req.body)
  const user = await User.findAll({ where: { id: req.body } });
  req.json(user)
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
11
12
};

Kim, Chaerin's avatar
Kim, Chaerin committed
13
14
15
16
const login = async (req, res) => {
  try {
    console.log("login= ", req.body);
    const { email, password } = req.body;
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
17
    const user = await User.findOne({ where: { email: email } });
Kim, Chaerin's avatar
Kim, Chaerin committed
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    if (!user)
      return res.status(422).send(`${email} 사용자가 존재하지 않습니다.`);

    const passworMatch = await user.comparePassword(password);
    if (passworMatch) {
      const token = jwt.sign({ userID: user.id }, config.jwtSecret, {
        expiresIn: config.jwtExpires,
      });
      res.cookie(config.cookieName, token, {
        path: "/",
        httpOnly: true,
        secure: true,
      });
      res.json({ user });
    } else {
      res.status(401).send("비밀번호가 일치하지 않습니다.");
    }
  } catch (error) {
    console.log(error);
    return res.status(500).send("로그인 중 에러");
  }
};

Kim, Chaerin's avatar
.    
Kim, Chaerin committed
41
42
const signup = async (req, res) => {
  try {
seoyeon's avatar
0716    
seoyeon committed
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
    console.log('signup= ', req.body);
    const { name, password, id } = req.body; 
    if (!isLength(name, {min: 3, max: 10})) {
      return res.status(422).send('이름은 3-10자 사이입니다')
    } else if (!isLength(password, {min: 6})) {
      return res.status(422).send('비밀번호는 6자 이상입니다')
    } else if (!isLength(id, {min:3, max10})) {
      return res.status(422).send('아이디는 3-10자 사이입니다')
    }
    const user = await User.scope("password").findOne({ where: email });
    if (user)
      return res.status(422).send(`${email} 이미 존재하는 사용자입니다/+ `);

    const hash = await bcrypt.hash(password, 10)
    const newUser = await new User ({
      name,
      password: hash,
      id
    }).save()
    console.log(newUser)
    res.json(newUser)
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
64
65
  } catch (error) {
    console.log(error);
seoyeon's avatar
0716    
seoyeon committed
66
    return res.status(500).send("회원가입 중 에러")
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
67
  }
seoyeon's avatar
0716    
seoyeon committed
68
}
Kim, Chaerin's avatar
Kim, Chaerin committed
69
export default {
우지원's avatar
0726    
우지원 committed
70
  user,
Kim, Chaerin's avatar
Kim, Chaerin committed
71
  login,
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
72
  signup,
Kim, Chaerin's avatar
Kim, Chaerin committed
73
};