user.controller.js 2 KB
Newer Older
우지원's avatar
우지원 committed
1
2
3
import User from "../models/User.js"
import isLength from 'validator/lib/isLength.js'
import isEmail from 'validator/lib/isEmail.js'
JeongYeonwoo's avatar
   
JeongYeonwoo committed
4
import bcrypt from "bcryptjs";
Choi Ga Young's avatar
Choi Ga Young committed
5

우지원's avatar
우지원 committed
6
7

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

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

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

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

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

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

    } catch (error) {
        //알수없는 모든 에러발생시 처리
        console.log(error)
42
        res.status(500).send('회원가입 에러발생하였습니다.')
우지원's avatar
우지원 committed
43
44
    }
}
Choi Ga Young's avatar
Choi Ga Young committed
45

JeongYeonwoo's avatar
   
JeongYeonwoo committed
46

JeongYeonwoo's avatar
JeongYeonwoo committed
47
48
49
50
51
52
53
54
55
56
57
const logineduser = async (req, res) => {
    try {
        let user = await User.findOne(req.body).select('username email nickname').exec()
        return res.json(user)
    } catch (error) {
        alert('올바르지 못한 접근입니다.')
    }
}
const changenick = async (req, res) => {
    try {
        const newnick = req.body.nickname
Choi Ga Young's avatar
Choi Ga Young committed
58
        await User.updateOne({ 'username': req.body.username }, { 'nickname': newnick })
JeongYeonwoo's avatar
JeongYeonwoo committed
59
60
61
    } catch (error) {
        alert('올바르지 못한 접근입니다.')
    }
JeongYeonwoo's avatar
   
JeongYeonwoo committed
62
63
64
}


Choi Ga Young's avatar
Choi Ga Young committed
65
export default { signup, logineduser, changenick }
우지원's avatar
우지원 committed
66
// {} : 객체로 return함