feat(tkuser): 부서 마스터 + 개인 추가 부여 권한 시스템 구현
부서 권한을 바닥(마스터)으로 설정하고 개인은 추가 부여만 가능하도록 변경. 부서 허용 항목은 개인 페이지에서 잠금(해제 불가) 표시되며, 부서 이동 시 기존 개인 권한이 자동 초기화됨. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -164,6 +164,7 @@ async function getDepartmentPermissions(req, res, next) {
|
||||
|
||||
/**
|
||||
* POST /api/permissions/departments/:deptId/bulk-set - 부서 권한 일괄 설정
|
||||
* 저장 후 소속 사용자의 중복 개인 레코드 정리
|
||||
*/
|
||||
async function bulkSetDepartmentPermissions(req, res, next) {
|
||||
try {
|
||||
@@ -177,10 +178,34 @@ async function bulkSetDepartmentPermissions(req, res, next) {
|
||||
granted_by_id: grantedById
|
||||
});
|
||||
|
||||
// 소속 사용자의 중복 개인 레코드 정리
|
||||
const { getPool } = require('../models/userModel');
|
||||
const db = getPool();
|
||||
const [deptUsers] = await db.query(
|
||||
'SELECT user_id FROM sso_users WHERE department_id = ?', [deptId]
|
||||
);
|
||||
|
||||
// 부서가 허용한 페이지 목록
|
||||
const grantedPages = (permissions || [])
|
||||
.filter(p => p.can_access)
|
||||
.map(p => p.page_name);
|
||||
|
||||
let syncedUsers = 0;
|
||||
if (grantedPages.length > 0 && deptUsers.length > 0) {
|
||||
for (const u of deptUsers) {
|
||||
const [delResult] = await db.query(
|
||||
`DELETE FROM user_page_permissions WHERE user_id = ? AND page_name IN (${grantedPages.map(() => '?').join(',')})`,
|
||||
[u.user_id, ...grantedPages]
|
||||
);
|
||||
if (delResult.affectedRows > 0) syncedUsers++;
|
||||
}
|
||||
}
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
message: `${result.updated_count}개의 부서 권한이 설정되었습니다`,
|
||||
updated_count: result.updated_count
|
||||
message: `${result.updated_count}개 부서 권한 설정 (${deptUsers.length}명 적용)`,
|
||||
updated_count: result.updated_count,
|
||||
synced_users: deptUsers.length
|
||||
});
|
||||
} catch (err) {
|
||||
next(err);
|
||||
|
||||
Reference in New Issue
Block a user