Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[50기 최현수 - ADD: Api/가족 이름 목록 조회 및 testcode] #8

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Prev Previous commit
Next Next commit
ADD: 가족이름목록조회 routes에 사용할 미들웨어(본인 가족구성원만 조회 가능) auth.js, userDao 추가, …
…middleware로 인해 불필요해진 function 삭제
chs991209 committed Nov 16, 2023
commit ab7b6f575cfb606731e2ca2e02fff90ef366dbe5
9 changes: 6 additions & 3 deletions src/controllers/usersFamilyController.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
const usersFamilyService = require('../services/usersFamilyService');
const error = require('../utils/error');

const getUsersFamilyByUsersId = async (req, res) => {
try {
const userId = 1;
const familyId = await usersFamilyService.getFamilyId(userId);
const { familyId } = req.userData;
if (!familyId) {
error.throwErr(400, 'NOT_INCLUDED_IN_FAMILY');
}
const familyUsers = await usersFamilyService.getUserIdByFamilyId(familyId);
return res.status(200).json({message: 'GET_SUCCESS', 'familyUsers': familyUsers});
} catch (err) {
console.error(err);
return res.status(500 || err.status).json({message: err.message || 500});
return res.status( err.status || 500).json({message: err.message || 'INTERNAL_SERVER_ERROR'});
}
}

43 changes: 43 additions & 0 deletions src/models/userDao.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
const { appDataSource } = require('../utils/dataSource');
const getUserByEmail = async(email) => {
return await appDataSource.query(
`
SELECT *
FROM users
WHERE email = ?
`,
[email]
)
};

const getUserInformationById = async( userId ) => {
const [ result ] = await appDataSource.query(
`
SELECT
id AS userId
FROM users
WHERE id = ?
`,
[ userId ])
const [ result1 ] = await appDataSource.query(
`
SELECT
u.id AS userId,
uf.family_id AS familyId,
role_id AS roleId
FROM users u
JOIN users_families uf ON u.id = uf.user_id
WHERE u.id = ?
`,
[ userId ])
if (!result1) {
return result;
} else {
return result1;
}
}

module.exports = {
getUserByEmail,
getUserInformationById
}
13 changes: 0 additions & 13 deletions src/models/usersFamilyDao.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,6 @@
const { appDataSource } = require('../utils/dataSource');
const error = require('../utils/error');

const getFamilyId = async (userId) => {
const result = await appDataSource.query(
`
SELECT family_id as familyId
FROM users_families
WHERE user_id = ?
`,
[userId]
)
return result[0]['familyId'];
}

const getUsersByFamilyId = async (familyId) => { // JOIN 사용해서 users 에도 접근합니다.
return await appDataSource.query(
`
@@ -27,6 +15,5 @@ const getUsersByFamilyId = async (familyId) => { // JOIN 사용해서 users 에
}

module.exports = {
getFamilyId,
getUsersByFamilyId
}
3 changes: 2 additions & 1 deletion src/routes/usersFamilyRouter.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
const express = require("express");
const router = express.Router();

const { loginRequired } = require('../utils/auth');
const usersFamilyController = require('../controllers/usersFamilyController');

router.get('/user', usersFamilyController.getUsersFamilyByUsersId);
router.get('/user', loginRequired, usersFamilyController.getUsersFamilyByUsersId);

module.exports.router = router;
5 changes: 0 additions & 5 deletions src/services/usersFamilyService.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
const usersFamilyDao = require('../models/usersFamilyDao');

const getFamilyId = async (userId) => {
return await usersFamilyDao.getFamilyId(userId);
}

const getUserIdByFamilyId = async (familyId) => {
return await usersFamilyDao.getUsersByFamilyId(familyId);
}

module.exports = {
getFamilyId,
getUserIdByFamilyId
}
28 changes: 28 additions & 0 deletions src/utils/auth.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const jwt = require('jsonwebtoken');
const userDao = require('../models/userDao');
const error = require('./error');
const secretKey = process.env.SECRET_KEY

const loginRequired = async (req, res, next) => {
try {
const accessToken = req.headers.authorization.substr(7);
if (!accessToken) {
error.throwErr(401, 'NEEDED_ACCESS_TOKEN');
}
const payload = jwt.verify(accessToken, secretKey);
const [ user ] = await userDao.getUserByEmail(payload.email);
if (!user) {
error.throwErr(404, 'USER_DOES_NOT_EXIST');
}
req.user = user;
const userInfo = await userDao.getUserInformationById( user.id );
req.userData = userInfo;
next();
} catch(err) {
res.status(err.statusCode || 500).json({message: err.message || 'INTERNAL_SERVER_ERROR'})
}
}

module.exports = {
loginRequired
}