올리고 몇 분 사이 바로 올라오는,
팀원분의 빠른 피드백 좋다
추석 연휴 전 일단, commit, push 하는 게 좋겠다 싶어서
올려놓고 보느라
수정 사항이 좀 있지만.
과정에서 배우는 게 중요하니까.
나의 코드와 보면서 비교해보기
이 부분이 models/ dataSource.js에 들어가 있군
(추후 layeredpattern 시에)
port 변수 안 해도 도 ㅣ나?
수정 중에 깨달은 사실,
pull request 에 이렇게
어떤 파일의 몇번째 줄이라고 나오니,
수정할 때 해당부분을 하나하나 찾지 않아도 돼서 편리하군!
수정 후 코드
const express = require('express');
const morgan = require('morgan');
const cors = require('cors');
require('dotenv').config();
const app = express();
app.set('port', process.env.PORT || 8000);
app.use(cors());
app.use(morgan('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
//로그인
app.post('/login', async (req, res) => {
try {
const email = req.body.email;
const password = req.body.password;
// key error
if (!email || !password) {
const error = new Error('필수 입력란을 모두 작성해 주세요');
error.statusCode = 400;
throw error;
}
// key error 할 수 있지만, 프론트엔드에게 백엔드의 의도를 '친절하게' 알려주기 위해
// email 이 DB에 있는지 (existing user인지)
const existingUser = await myDataSource.query(`
SELECT id, email, password FROM users WHERE email='${email}';
`);
if (existingUser.length === 0) {
const error = new Error('일치하는 회원정보가 없습니다');
error.statusCode = 400;
throw error;
}
// 해당 email의 해쉬된 패스워드가 DB에 있는가
const hashPw = await bcrypt.compare(password, existingUser[0].password);
console.log(hashPw);
if (!hashPw) {
const error = new Error('일치하는 회원정보가 없습니다');
error.statusCode = 400;
error.code = 'passwordError';
throw error;
} //보안을 위해 비밀번호, 패스워드 중 오류 알려주지 않기로
// 로그인 성공 시 토큰 발급
const token = jwt.sign({ id: existingUser[0].id }, process.env.TYPEORM_JWT);
return res.status(200).json({
message: '로그인 성공하였습니다',
accessToken: token,
});
} catch (error) {
console.log(error);
}
});
const server = http.createServer(app);
const start = async () => {
try {
server.listen(8000, () => console.log(`Server is listening on 8000`));
} catch (err) {
console.error(err);
}
};
app.use((req, _, next) => {
const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`);
error.status = 404;
next(error);
});
app.use((err, _, res, next) => {
res.status(err.status || 500);
return res.json({
error: `${err.status ? err.status : ''} ${err.message}`,
});
});
app.listen(app.get('port'), () => {
console.log(`listening.... 🦻http://localhost:${app.get('port')}`);
});
'Wecode - Project 2 (부트캠프) > Project 2 과정' 카테고리의 다른 글
Project 2 - Sprint week 2 standup meeting, planning meeting (0) | 2023.10.02 |
---|---|
Project 2 : sprint 1주 중간 회고(HTTP, RESTful API, AWS) **추후 링크 추가** (0) | 2023.09.26 |
Project 2- 5일차 (8): 로그인 pull request template.md (0) | 2023.09.22 |
Project 2- 5일차 (7): [로그인 API, 깃허브 PR] (0) | 2023.09.22 |
Project 2 - 5일 차 (6) : 내가 push 한 회원가입 함수 : pull request 팀원 리뷰 + 수정본 ** 해야 함 (0) | 2023.09.22 |