NodeJs

[Node JS] 로그인 기능 구현

dbsxo4083 2024. 7. 25. 15:30

 

2024.07.25 - [NodeJs] - Node js 회원가입 기능 구현(2)

 

Node js 회원가입 기능 구현(2)

model/user.js //회원가입exports.insertUser = async(data) => { const conn = await dbConnection() try { const query = "INSERT INTO user (id, name, email, phoneNumber, password) VALUES(?,?,?,?,?)" const values = [data.id, data.name, data.email, data.phon

dbsxo4083.tistory.com

 

코드 설명 및 구조 설명은 이전 블로그 포스팅을 참고하여 주시기 바랍니다.

 

modes/user.js

 

exports.login = async (id,password) =>{
    let conn;
    try{
        conn = await dbConnection()
        const query = "SELECT COUNT(*) AS count FROM user WHERE id =? AND password = ?" //아이디를 찾는 sql문
        const [rows] = await conn.execute(query,[id,password])

        return rows[0].count > 0;
        
    } catch(error){
        console.error('Error checking user credentials:', error.message)
        throw error;
    } finally {
        await conn.end()
    }
}

 

server/userService.js

exports.login = async (id,password) =>{
    try{

        if(!id){
            return {error_message: 'Null Id'} 
        }

        if(!password){
            return {error_message: 'Null Password'} 
        }
        
        
        const isValidUser = await userModel.login(id, password);
        
        if (!isValidUser) {
            return { success: false, error_message: 'Invalid ID or password' };
        }

        return { success: true, message: "Login success" };
    } catch(error){
        console.error('Error registering user:', error.message);
        return { success: false, error: error.message };
    }
}

 

controller/userController.js

exports.login = async (req, res) => {
    
    const { id, password } = req.body
    // const id = req.body.id
    // const password = req.body.password

    

    try{
        const result = await userService.login(id,password)

        console.log('리절트',result)

        if (result.success){
            res.status(200).json({
                status: 200,
                success: true,
                data: result.message
            })
        }

        if(result.error_message==='Invalid ID or password'){
            res.status(400).json({
                status: 400,
                success: false,
                message: result.error_message
            })
        }

        if(result.error_message==="Null Id"){
            res.status(400).json({
                status: 400,
                success: false,
                message: result.error_message
            })
        }

        if(result.error_message==="Null Password"){
            res.status(400).json({
                status: 400,
                success: false,
                message: result.error_message
            })
        }
    } catch (error) {
        res.status(500).json({ error: 'Internal server error' });
    }
    
}

 

 

routes/userRoutes.js

const express = require('express')
const router = express.Router()
const userController = require('../controller/userController')

router.post('/auth',userController.register)
router.post('/login',userController.login)

module.exports = router;

 

🔎API Tester로 테스트하기

저는 크롬확장프로그램인 Talend API Tester를 사용하였습니다.

 

로그인 성공시 

 

 

로그인 실패시