user.controller.js 2.61 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("로그인 중 에러");
  }
};

seoyeon's avatar
0716    
seoyeon committed
45
46
const signup = async (req, res) => {
  try {
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
47
    console.log("sign up= ", req.body);
seoyeon's avatar
0724    
seoyeon committed
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
    const { name, email, password, gender, phone } = req.body;
    const id = Math.floor(( Math.random() * (9999 - 1000) + 1000 ));
      console.log('id:', id)
      const Id = await User.findOne({ where: { id: id }})
      console.log("Id 중복확인:", Id)
      while (Id) {
        const id = Math.floor((Math.random() * (9999 - 1000) + 1000 ));
        const Id = await User.findOne({ where: {id: id}});
      }
                                                            
    const user = await User.findOne({ where: { email: email } });
    if (user)
      return res.status(422).send(`${email} 이미 존재하는 사용자입니다.`);

    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(email,{ min:3, max:10 })) {
      return res.status(422).send('아이디는 3-10자 사이입니다')
    }
    const newUser = User.create({ 
      id: id, 
      name: name,
      email: email,
      password: password,
      gender: gender,
      phone: phone,
     });
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
77
78
79
80
81
82
  } catch (error) {
    console.log(error);
    return res.status(500).send("회원가입 중 에러");
  }
};

Kim, Chaerin's avatar
Kim, Chaerin committed
83
export default {
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
84
  test,
Kim, Chaerin's avatar
Kim, Chaerin committed
85
  login,
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
86
  signup,
Kim, Chaerin's avatar
Kim, Chaerin committed
87
};