user.controller.js 3.77 KB
Newer Older
이재연's avatar
오잉    
이재연 committed
1
2
3
4
import { User } from "../models/index.js";
import jwt from "jsonwebtoken";
import config from "../config/app.config.js";
import isLength from "validator/lib/isLength.js";
Kim, Chaerin's avatar
Kim, Chaerin committed
5

이재연's avatar
오잉    
이재연 committed
6
7
const multer = require("multer");
const uploadimg = multer({ dest: "uploads/" });
이재연's avatar
aa    
이재연 committed
8

이재연's avatar
오잉    
이재연 committed
9
const imgUpload = uploadimg.fields([{ name: "img", maxCount: 1 }]);
이재연's avatar
aa    
이재연 committed
10
11

const update = async (req, res) => {
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
12
  try {
이재연's avatar
오잉    
이재연 committed
13
14
15
16
17
18
19
    console.log("id:", req.body.id);
    const id = req.body.id;
    const avatar = req.files["img"][0];
    const img = avatar.filename;
    console.log(img);
    await User.update({ img: img }, { where: { id: id } });
    res.json(img);
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
20
  } catch (error) {
이재연's avatar
오잉    
이재연 committed
21
22
    console.log(error);
    res.status(500).send("이미지 업데이트 실패");
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
23
  }
이재연's avatar
오잉    
이재연 committed
24
};
seoyeon's avatar
0727    
seoyeon committed
25
const getUser = async (req, res) => {
이재연's avatar
오잉    
이재연 committed
26
27
28
  console.log("유저가져왔다아아아ㅏㅇ:", req.body);
  console.log("id:", req.body.id);
  const id = req.body.id;
seoyeon's avatar
0727    
seoyeon committed
29
  const user = await User.findOne({ where: { id: id } });
이재연's avatar
오잉    
이재연 committed
30
31
  console.log("user:", user);
  res.json(user);
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
32
33
};

이재연's avatar
오잉    
이재연 committed
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const updateinfo = async (req, res) => {
  console.log(req.body);
  const { id, name, email, phone, img } = req.body;
  console.log("id:", id);
  const A = {
    name: name,
    email: email,
    phone: phone,
    img: img,
  };
  await User.update(A, { where: { id: id } });
  const user = await User.findOne({ where: { id: id } });
  console.log('user:',user)
};
Kim, Chaerin's avatar
Kim, Chaerin committed
48
49
const login = async (req, res) => {
  try {
이재연's avatar
오잉    
이재연 committed
50
51
52
    console.log("login= ", req.body);
    const { email, password } = req.body;
    const user = await User.findOne({ where: { email: email } });
seoyeon's avatar
0726    
seoyeon committed
53
    if (!user) {
이재연's avatar
오잉    
이재연 committed
54
      return res.status(422).send(`${email} 사용자가 존재하지 않습니다.`);
Kim, Chaerin's avatar
Kim, Chaerin committed
55
    } else {
이재연's avatar
오잉    
이재연 committed
56
      const passworMatch = await user.comparePassword(password);
seoyeon's avatar
0726    
seoyeon committed
57
58
59
      if (passworMatch) {
        const token = jwt.sign({ userID: user.id }, config.jwtSecret, {
          expiresIn: config.jwtExpires,
이재연's avatar
오잉    
이재연 committed
60
        });
seoyeon's avatar
0726    
seoyeon committed
61
        res.cookie(config.cookieName, token, {
이재연's avatar
오잉    
이재연 committed
62
          path: "/",
seoyeon's avatar
0726    
seoyeon committed
63
64
          httpOnly: true,
          secure: true,
이재연's avatar
오잉    
이재연 committed
65
66
        });
        res.json(user);
seoyeon's avatar
0726    
seoyeon committed
67
      } else {
이재연's avatar
오잉    
이재연 committed
68
        res.status(401).send("비밀번호가 일치하지 않습니다.");
seoyeon's avatar
0726    
seoyeon committed
69
      }
Kim, Chaerin's avatar
Kim, Chaerin committed
70
71
    }
  } catch (error) {
이재연's avatar
오잉    
이재연 committed
72
73
    console.log(error);
    return res.status(500).send("로그인 중 에러");
Kim, Chaerin's avatar
Kim, Chaerin committed
74
  }
이재연's avatar
오잉    
이재연 committed
75
};
Kim, Chaerin's avatar
Kim, Chaerin committed
76

Kim, Chaerin's avatar
.    
Kim, Chaerin committed
77
78
const signup = async (req, res) => {
  try {
이재연's avatar
오잉    
이재연 committed
79
80
81
82
83
84
    console.log("sign up= ", req.body);
    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);
seoyeon's avatar
0726    
seoyeon committed
85
    while (Id) {
이재연's avatar
오잉    
이재연 committed
86
87
      const id = Math.floor(Math.random() * (9999 - 1000) + 1000);
      const Id = await User.findOne({ where: { id: id } });
seoyeon's avatar
0716    
seoyeon committed
88
    }
seoyeon's avatar
0726    
seoyeon committed
89

이재연's avatar
오잉    
이재연 committed
90
    const user = await User.findOne({ where: { email: email } });
seoyeon's avatar
0716    
seoyeon committed
91
    if (user)
이재연's avatar
오잉    
이재연 committed
92
      return res.status(422).send(`${email} 이미 존재하는 사용자입니다.`);
seoyeon's avatar
0716    
seoyeon committed
93

seoyeon's avatar
0726    
seoyeon committed
94
    if (!isLength(name, { min: 3, max: 10 })) {
이재연's avatar
오잉    
이재연 committed
95
      return res.status(422).send("이름은 3-10자 사이입니다");
seoyeon's avatar
0726    
seoyeon committed
96
    } else if (!isLength(password, { min: 6 })) {
이재연's avatar
오잉    
이재연 committed
97
      return res.status(422).send("비밀번호는 6자이상 입니다");
seoyeon's avatar
0726    
seoyeon committed
98
    } else if (!isLength(email, { min: 3, max: 10 })) {
이재연's avatar
오잉    
이재연 committed
99
      return res.status(422).send("아이디는 3-10자 사이입니다");
seoyeon's avatar
0724    
seoyeon committed
100
    }
seoyeon's avatar
0726    
seoyeon committed
101
102
    const newUser = await User.create({
      id: id,
seoyeon's avatar
0724    
seoyeon committed
103
104
      name: name,
      email: email,
seoyeon's avatar
0726    
seoyeon committed
105
      password: password,
seoyeon's avatar
0724    
seoyeon committed
106
107
      gender: gender,
      phone: phone,
이재연's avatar
오잉    
이재연 committed
108
109
110
    }).then((_) =>
      console.log("회원가입 정보", id, name, email, password, gender, phone)
    );
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
111
  } catch (error) {
이재연's avatar
오잉    
이재연 committed
112
113
    console.log(error);
    return res.status(500).send("회원가입 중 에러");
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
114
  }
이재연's avatar
오잉    
이재연 committed
115
};
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
116

seoyeon's avatar
seoyeon committed
117
const logout = (req, res) => {
이재연's avatar
오잉    
이재연 committed
118
119
120
  res.clearCookie("token");
  res.send("Logout Successful");
};
seoyeon's avatar
seoyeon committed
121

Kim, Chaerin's avatar
Kim, Chaerin committed
122
export default {
seoyeon's avatar
0727    
seoyeon committed
123
  getUser,
Kim, Chaerin's avatar
Kim, Chaerin committed
124
  login,
이재연's avatar
z    
이재연 committed
125
  signup,
seoyeon's avatar
seoyeon committed
126
  logout,
이재연's avatar
오잉    
이재연 committed
127
128
129
130
  imgUpload,
  update,
  updateinfo,
};