user.controller.js 2.19 KB
Newer Older
이재연's avatar
이재연 committed
1
import User from "../schemas/User.js";
이재연's avatar
이재연 committed
2
import isLength from 'validator/lib/isLength.js'
이재연's avatar
이재연 committed
3
import bcrypt from 'bcryptjs'
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import multer from "multer";

const uploadimg = multer({ dest: 'uploads/' });

const imgUpload = uploadimg.fields([
    { name: 'main_image', maxCount: 1 }
])

const username = (req, res) => {
    res.json(req.account)
    console.log(req.account)
}

const userById = async (req, res, next, id) => {  //순서가 정해져있음.
    try {
        const user = await User.findById(id)
        if (!user) {
            res.status(404).send('사용자를 찾을 수 없습니다')
        }
        req.account = user
        next()   //함수 , 넥스트를 만나면 아래로 안내려가고 바로 리턴을 한다. 그리고 끝나는게 아니라 다음 미들웨어가 있으면 다음 미들웨어로 넘긴다.
    } catch (error) {
        console.log(error);
        res.status(500).send('사용자 아이디 검색 실패')
    }
}

Kim, Subin's avatar
Kim, Subin committed
31
32

const signup = async (req, res) => {
이재연's avatar
이재연 committed
33
    console.log(req.body)
34
    const { name, number1, number2, id, password, tel } = req.body
Kim, Subin's avatar
Kim, Subin committed
35
    try {
36
        if (!isLength(password, { min: 8, max: 15 })) {
이재연's avatar
aa    
이재연 committed
37
            return res.status(422).send('비밀번호는 8-15자리로 입력해주세요.')
이재연's avatar
이재연 committed
38
        }
39
40
        const user = await User.findOne({ id })
        if (user) {
이재연's avatar
aa    
이재연 committed
41
42
43
            return res.status(422).send(`${id}가 이미 사용중입니다.`)
        }

44
        const hash = await bcrypt.hash(password, 10)
이재연's avatar
aa    
이재연 committed
45

46
        const newUser = await new User({
Kim, Subin's avatar
Kim, Subin committed
47
            name,
이재연's avatar
이재연 committed
48
49
            number1,
            number2,
이재연's avatar
이재연 committed
50
            id,
51
            password: hash,
이재연's avatar
이재연 committed
52
            tel,
Kim, Subin's avatar
Kim, Subin committed
53
54
55
        }).save()
        console.log(newUser)
        res.json(newUser)
kusang96's avatar
kusang96 committed
56

Kim, Subin's avatar
Kim, Subin committed
57
58
    } catch (error) {
        console.log(error)
이재연's avatar
aa    
이재연 committed
59
        res.status(500).send('죄송합니다. 다시 입력해 주십시오.')
Kim, Subin's avatar
Kim, Subin committed
60
61
62
63
    }
}


64
65
66
67
68
69
70
71
72
73
74
75
76
const update = async (req, res) => {
    try {
        const avatar = req.files['avatar'][0]
        user.avatarUrl = avatar.filename
        const updateUser = await avatar.save()
        res.json(updateUser)
    } catch (error) {
        console.log(error);
        res.status(500).send('이미지 업데이트 실패')
    }
}

export default { signup, username, imgUpload, userById, update }