user.controller.js 3.05 KB
Newer Older
우지원's avatar
우지원 committed
1
2
import User from "../models/User.js"
import isLength from 'validator/lib/isLength.js'
우지원's avatar
01_06    
우지원 committed
3
import isEmail from 'validator/lib/isEmail.js'
JeongYeonwoo's avatar
   
JeongYeonwoo committed
4
5
6
import bcrypt from "bcryptjs";
import jwt from 'jsonwebtoken'
import config from "../config.js"
우지원's avatar
우지원 committed
7
8

const signup = async (req, res) => {
우지원's avatar
a    
우지원 committed
9
10

    const { username, nickname, email, password } = req.body
우지원's avatar
우지원 committed
11
12

    try {
JeongYeonwoo's avatar
JeongYeonwoo committed
13
        if (!isLength(username, { min: 3, max: 10 })) {
우지원's avatar
01_06    
우지원 committed
14
            return res.status(422).send('이름은 3-10자 사이입니다')
JeongYeonwoo's avatar
JeongYeonwoo committed
15
        } else if (!isLength(nickname, { min: 2, max: 10 })) {
우지원's avatar
01_06    
우지원 committed
16
            return res.status(422).send('별명은 2-10자 사이입니다.')
JeongYeonwoo's avatar
JeongYeonwoo committed
17
        } else if (!isLength(password, { min: 6 })) {
우지원's avatar
01_06    
우지원 committed
18
19
20
            return res.status(422).send('비밀번호는 6자 이상입니다.')
        } else if (!isEmail(email)) {
            return res.status(422).send('유효하지 않은 이메일 형식입니다')
JeongYeonwoo's avatar
JeongYeonwoo committed
21
        }
우지원's avatar
01_06    
우지원 committed
22

JeongYeonwoo's avatar
JeongYeonwoo committed
23
24
        const user = await User.findOne({ email })
        if (user) {
우지원's avatar
01_06    
우지원 committed
25
            return res.status(422).send(`${email}이 이미 사용중입니다.`)
우지원's avatar
우지원 committed
26
27
        }

우지원's avatar
01_06    
우지원 committed
28
29
        const hash = await bcrypt.hash(password, 10)

우지원's avatar
우지원 committed
30
        const newUser = await new User({
우지원's avatar
a    
우지원 committed
31
            username,
우지원's avatar
우지원 committed
32
33
            nickname,
            email,
34
            password: hash,
우지원's avatar
우지원 committed
35
        }).save()
36
        
우지원's avatar
우지원 committed
37
38
39
40
41
42
        console.log(newUser)
        res.json(newUser)

    } catch (error) {
        //알수없는 모든 에러발생시 처리
        console.log(error)
43
        res.status(500).send('회원가입 에러발생하였습니다.')
우지원's avatar
우지원 committed
44
45
    }
}
JeongYeonwoo's avatar
   
JeongYeonwoo committed
46
47
48
const hello = async (req, res) => {
    let users = await User.find().select('name nickname email _id').exec()
    return res.json(users)
우지원's avatar
우지원 committed
49
50
}

JeongYeonwoo's avatar
JeongYeonwoo committed
51
const logineduser = async (req, res) => {
우지원's avatar
0113    
우지원 committed
52
    try {
JeongYeonwoo's avatar
JeongYeonwoo committed
53
        let user = await User.findOne(req.body).select('username email nickname').exec()
우지원's avatar
0113    
우지원 committed
54
55
56
57
58
59
        return res.json(user)
    } catch (error) {
        alert('올바르지 못한 접근입니다.')
    }
}

JeongYeonwoo's avatar
JeongYeonwoo committed
60
61
62
63
64
65
66
const changenick = async (req, res) => {
    try {
        const newnick = req.body.nickname
        await User.update({ 'username': req.body.username }, { 'nickname': newnick })
    } catch (error) {
        alert('올바르지 못한 접근입니다.')
    }
JeongYeonwoo's avatar
   
JeongYeonwoo committed
67
}
우지원's avatar
0113    
우지원 committed
68

우지원's avatar
우지원 committed
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
const loginNavbar = async (req, res) => {
    try {
        let user = await User.findOne(req.body).select('username').exec()
        return res.json(user)
    } catch (error) {
        alert('올바르지 못한 접근입니다.')
    }
}

// const getNav = (req, res) => {
//     res.json(req.loginNav)
// }

// const userById = async (req, res, next, id) => {
//     try {
//         const user = await User.findById(id)
//         if (!user) {
//             res.status(404).send('사용자를 찾을 수 없습니다.')
//         }
//         req.loginNav = user
//         //req에 profile을 만들어서 user를 저장해줌
//         next()
//         //다음 middleware로 이동시킴 / 없으면 멈춤
//     } catch (error) {
//         console.log(error)
//         res.status(500).send('사용자 아이디 검색 실패')
//     }
// }
우지원's avatar
우지원 committed
97

우지원's avatar
우지원 committed
98
export default { signup, hello, logineduser, changenick, loginNavbar }
우지원's avatar
우지원 committed
99
// {} : 객체로 return함