feat(P15A-1,P15A-5): 解耦请假审批权限

这个提交包含在:
2026-03-07 07:15:33 +08:00
父节点 637fd24d8e
当前提交 03c5a78485
共修改 10 个文件,包含 230 行新增和 46 行删除
+6 -3
查看文件
@@ -95,7 +95,8 @@ async function leaveRoutes(fastify) {
fastify.post(
"/leave-requests",
{
preHandler: fastify.authenticate,
schema: { tags: ["Leave"], summary: "Create Leave Request" },
preHandler: fastify.requireEntityPermission("leave", "create"),
},
async (request, reply) => {
const body = parseCreateBody(request.body);
@@ -131,6 +132,7 @@ async function leaveRoutes(fastify) {
fastify.get(
"/leave-requests/:id",
{
schema: { tags: ["Leave"], summary: "Get Leave Request" },
preHandler: fastify.authenticate,
},
async (request, reply) => {
@@ -159,7 +161,7 @@ async function leaveRoutes(fastify) {
});
}
const canViewAll = fastify.hasPermission(request.employee, "expense.view_all");
const canViewAll = fastify.hasPermission(request.employee, "leave.view_all");
if (!canViewAll && leave.owner_id !== request.employee.id) {
throw new AppError({
code: "PERM_001",
@@ -185,7 +187,8 @@ async function leaveRoutes(fastify) {
fastify.post(
"/leave-requests/:id/submit",
{
preHandler: fastify.authenticate,
schema: { tags: ["Leave"], summary: "Submit Leave Request" },
preHandler: fastify.requireEntityPermission("leave", "submit"),
},
async (request, reply) => {
const leaveId = parseLeaveId(request.params?.id);