35 lines
757 B
TypeScript
35 lines
757 B
TypeScript
import { query } from '../../../utils/db'
|
|
import { requireAdmin } from '../../../utils/session'
|
|
|
|
/**
|
|
* 권한 목록 조회
|
|
* GET /api/admin/role/list
|
|
*/
|
|
export default defineEventHandler(async (event) => {
|
|
// 관리자 권한 체크
|
|
await requireAdmin(event)
|
|
|
|
const roles = await query<any>(`
|
|
SELECT
|
|
r.role_id,
|
|
r.role_code,
|
|
r.role_name,
|
|
r.role_description,
|
|
r.is_internal_ip_only,
|
|
r.sort_order,
|
|
r.is_active,
|
|
r.created_at,
|
|
r.updated_at,
|
|
COUNT(DISTINCT er.employee_id) as user_count
|
|
FROM wr_role r
|
|
LEFT JOIN wr_employee_role er ON r.role_id = er.role_id
|
|
GROUP BY r.role_id
|
|
ORDER BY r.sort_order, r.role_id
|
|
`)
|
|
|
|
return {
|
|
roles,
|
|
total: roles.length
|
|
}
|
|
})
|