user.controller.js 2.21 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

Kim, Chaerin's avatar
.    
Kim, Chaerin committed
7
8
9
10
11
12
13
14
15
16
const test = async (req, res) => {
  try {
    console.log(req);
    res.json("안녕");
  } catch (error) {
    console.log(error);
    return res.status(500).send("test 중 에러");
  }
};

Kim, Chaerin's avatar
Kim, Chaerin committed
17
18
19
20
const login = async (req, res) => {
  try {
    console.log("login= ", req.body);
    const { email, password } = req.body;
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
21
    const user = await User.findOne({ where: { email: email } });
Kim, Chaerin's avatar
Kim, Chaerin committed
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    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
45
46
const signup = async (req, res) => {
  try {
seoyeon's avatar
0716    
seoyeon committed
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
    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
68
69
  } catch (error) {
    console.log(error);
seoyeon's avatar
0716    
seoyeon committed
70
    return res.status(500).send("회원가입 중 에러")
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
71
  }
seoyeon's avatar
0716    
seoyeon committed
72
}
Kim, Chaerin's avatar
Kim, Chaerin committed
73
export default {
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
74
  test,
Kim, Chaerin's avatar
Kim, Chaerin committed
75
  login,
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
76
  signup,
Kim, Chaerin's avatar
Kim, Chaerin committed
77
};