auth.controller.js 1.21 KB
Newer Older
이재연's avatar
이재연 committed
1
2
3
4
5
6
7
8
9
10
11
import User from '../schemas/User.js'
import bcrypt from 'bcryptjs'
import jwt from 'jsonwebtoken'
import config from '../config.js'

const login = async(req,res)=>{
    const {id, password} =req.body
    console.log(id,password)
    try{
        const user=await User.findOne({id}).select('+password')
        if(!user){
이재연's avatar
이재연 committed
12
            return res.status(404).send(`${id}가 존재하지 않습니다.`)
이재연's avatar
이재연 committed
13
14
15
16
17
18
19
20
21
22
23
24
25

        }
        const passwordMatch= await bcrypt.compare(password, user.password)

        if(passwordMatch){
            const token=jwt.sign({userId:user._id},config.jwtSecret,{
                expiresIn:'3d'
            })
            res.cookie('token',token,{
                maxAge:config.cookieMaxAge,
                httpOnly:true,
                secure:config.env ==='production'
            })
이재연's avatar
이재연 committed
26
27
            res.json({userId:user._id})
            
이재연's avatar
이재연 committed
28
        }else{
이재연's avatar
이재연 committed
29
            res.status(401).send('비밀번호가 일치하지 않습니다.')
이재연's avatar
이재연 committed
30
31
32
        }
    }catch(error){
        console.log(error)
이재연's avatar
이재연 committed
33
        res.status(500).send('로그인 실패. 다시 시도하세요.')
이재연's avatar
이재연 committed
34
35
36
    }
}

이재연's avatar
이재연 committed
37
38
39
40
 const logout =(req,res)=>{
     res.clearCookie('token')
     res.send('로그아웃 되었습니다.')
 }
이재연's avatar
이재연 committed
41

이재연's avatar
이재연 committed
42
export default {login, logout}