TIL(5/30)

정성현·2022년 5월 30일
0

항해99

목록 보기
32/33

주특기 숙련 개인과제

회원가입 예외처리

const express = require("express");
const User = require("../schemas/user");
const jwt = require("jsonwebtoken");
const limit_User = require("../schemas/limit_users");
const router = express.Router();

router.post("/users",async(req,res)=>{
    const {nickname,password,confirmPassword} = req.body;
    const limit = limit_User(nickname);

    if(req.headers.authorization.split(' ')[1])
    {
        res.status(401).send({
            errorMessage: "이미 로그인이 되어 있습니다.",
        });
        return;
    }

    try {
        await limit.validateAsync({nickname,password,confirmPassword});
        const existUsers = await User.find({nickname})
        if(existUsers.length)
        {
            res.status(400).send({
                errorMessage : '이미 가입된 닉네임이 있습니다.'
            });
            return;
        }
        const user = new User({nickname, password});
        await user.save();
        res.status(201).send({Message : '회원가입 완료'});
    } catch (error) {
        res.status(401).send({errorMessage: "닉네임과 비밀번호의 규칙을 어겼습니다.",error

    })
    return;
    }
  
    
});

로그인 API 구현

router.post("/auth",async(req,res)=>{
    const {nickname, password} = req.body;
    const user = await User.findOne({nickname,password});
    if(req.headers.authorization.split(' ')[1])
    {
        res.status(401).send({
            errorMessage: "이미 로그인이 되어 있습니다.",
        });
        return;
    }

    if(!user){
        res.status(401).send({
            errorMessage : '닉네임 또는 비밀번호가 잘못됐습니다.',
        })
        return;
    }
    const token = jwt.sign({userId : user.user_Id},"is-my-jsh-key");
    res.send({
        token,
    })
})
profile
I want to be programmer

0개의 댓글