사고쳤어요
[도서 쇼핑몰] Node.js - 회원가입, 로그인, 비밀번호 초기화 API 본문
회원가입
const join = (req, res) => {
const { email, password } = req.body;
const sql = `INSERT INTO users (email, password) VALUES (?, ?);`;
const values = [email, password];
conn.query(sql, values, (err, results) => {
if (err) {
return res.status(StatusCodes.BAD_REQUEST).json({
msg: `Error: ${err.code}`,
});
}
return res.status(StatusCodes.CREATED).json(results);
});
};


로그인
const login = (req, res) => {
const { email, password } = req.body;
const sql = `SELECT * FROM users WHERE email = ?;`;
const values = email;
conn.query(sql, values, (err, results) => {
if (err) {
return res.status(StatusCodes.BAD_REQUEST).json({
msg: `Error: ${err.code}`,
});
}
const loginUser = results[0];
if (loginUser && loginUser.password == password) {
const token = jwt.sign(
{
email: loginUser.email,
},
process.env.PRIVATE_KEY,
{
expiresIn: "5m",
issuer: "minje",
}
);
res.cookie("token", token, {
httpOnly: true,
});
return res.status(StatusCodes.OK).json(results);
} else {
return res.status(StatusCodes.UNAUTHORIZED).end();
}
});
};


틀린 비밀번호를 입력한 경우 - 401 Unauthorized
비밀번호 초기화 요청
const passwordResetRequest = (req, res) => {
const { email } = req.body;
const sql = `SELECT * FROM users WHERE email = ?;`;
const values = email;
conn.query(sql, values, (err, results) => {
if (err) {
return res.status(StatusCodes.BAD_REQUEST).json({
msg: `Error: ${err.code}`,
});
}
const user = results[0];
if (user) {
return res.status(StatusCodes.OK).json({
email: email,
});
} else {
return res.status(StatusCodes.UNAUTHORIZED).end();
}
});
};

비밀번호 초기화
const passwordReset = (req, res) => {
const { email, password } = req.body;
const sql = `UPDATE users SET password = ? WHERE email = ?;`;
const values = [password, email];
conn.query(sql, values, (err, results) => {
if (err) {
return res.status(StatusCodes.BAD_REQUEST).json({
msg: `Error: ${err.code}`,
});
}
if (results.affectedRows == 0) {
return res.status(StatusCodes.BAD_REQUEST).end();
} else {
return res.status(StatusCodes.OK).json(results);
}
});
};


'웹 풀스택' 카테고리의 다른 글
| [도서 쇼핑몰] Node.js - 도서 조회 관련 API 구현하기 (0) | 2025.03.13 |
|---|---|
| [도서 쇼핑몰] Node.js - crypto로 비밀번호 암호화하기(회원가입, 로그인, 비밀번호 초기화) (0) | 2025.03.12 |
| [Node.js] http-status-codes 사용해보기 (1) | 2025.03.12 |
| [도서 쇼핑몰] dbdiagram으로 Mysql Workbench 세팅하기 (0) | 2025.03.12 |
| [도서 쇼핑몰] Node.js - app.js 기본 설정하기 (0) | 2025.03.12 |