user.controller.js 1.82 KB
Newer Older
Choi Ga Young's avatar
Choi Ga Young committed
1
2
import jwt from "jsonwebtoken";
import { User } from '../db/index.js';
3
import config from "../config/app.config.js";
Choi Ga Young's avatar
Choi Ga Young committed
4
5
6
7
8
9
10
11
12
13
14
15
16

const signup = async (req, res) => {
  console.log('server/signup req.body', req.body)
  const { userId, password, userName, userStudNum } = req.body;
  try {
    const findId = await User.findOne({ where: { userID: userId } });
    if (findId) {
      throw new Error("이미 있는 회원정보 입니다.");
    }
    await User.create({
      userID: userId,
      password: password,
      userName: userName,
17
18
      studNum: userStudNum,
      role:"user"
Choi Ga Young's avatar
Choi Ga Young committed
19
20
21
22
    });
    res.status(201).json("success")
  } catch (error) {
    console.log(error)
23
    return res.status(500).send(error.message || "회원가입 에러발생")
Choi Ga Young's avatar
Choi Ga Young committed
24
25
26
27
28
  }
}

const login = async (req, res) => {
  console.log('server/login req.body', req.body)
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
  const { userId, password } = req.body;
  try {
    const user = await User.scope("withPassword").findOne({ where: { userID: userId } });
    console.log('user확인', user)
    if (!user) {
      return res.status(404).send(`일치하는 정보가 없습니다.`);
    }
    const passwordMatch = await user.comparePassword(password);
    if (passwordMatch) {

      const signData = {
        id: user.userID,
        name: user.userName
    };

      const token = jwt.sign(signData, config.jwtSecret, {
        expiresIn: config.jwtExpires,
      });

      res.cookie(config.cookieName, token, {
        maxAge: config.cookieMaxAge,
        path: "/",
        httpOnly: config.env === "production",
        secure: config.env === "production",
      });

      res.status(201).json(user)
    } else { 
      res.status(401).send("비밀번호가 일치하지 않습니다.")
    }

  } catch (error) {
    console.log(error)
    return res.status(500).send("로그인 에러발생")
  }
Choi Ga Young's avatar
Choi Ga Young committed
64
65
66
67
68
69
}

export default {
  signup,
  login
}