OAPERM1 收紧启用前权限冻结

这个提交包含在:
2026-05-24 00:57:11 +08:00
父节点 a3f13eab57
当前提交 65513a5291
共修改 27 个文件,包含 231 行新增和 149 行删除
+12 -11
查看文件
@@ -21,6 +21,7 @@ const DATE_SCHEMA = z.string().regex(/^\d{4}-\d{2}-\d{2}$/);
const PAY_MONTH_SCHEMA = z.string().regex(/^\d{4}-\d{2}$/);
const MONEY_INPUT_SCHEMA = z.union([z.number(), z.string()]);
const SALARY_ITEM_TYPE_SCHEMA = z.enum(["earning", "deduction"]);
const PAYROLL_MANAGE_PERMISSION = "system.settings";
const SALARY_ITEM_CREATE_SCHEMA = z
.object({
@@ -232,14 +233,14 @@ async function ensurePayslipExists(prisma, payslipId) {
}
function canViewEmployeePayslips(fastify, request, employeeId) {
return request.employee.id === employeeId || fastify.hasPermission(request.employee, "system.users");
return request.employee.id === employeeId || fastify.hasPermission(request.employee, PAYROLL_MANAGE_PERMISSION);
}
async function payrollRoutes(fastify) {
fastify.get(
"/payroll/items",
{
preHandler: fastify.requirePermission("system.users"),
preHandler: fastify.requirePermission(PAYROLL_MANAGE_PERMISSION),
},
async (request, reply) => {
const items = await fastify.prisma.salaryItem.findMany({
@@ -255,7 +256,7 @@ async function payrollRoutes(fastify) {
fastify.post(
"/payroll/items",
{
preHandler: fastify.requirePermission("system.users"),
preHandler: fastify.requirePermission(PAYROLL_MANAGE_PERMISSION),
},
async (request, reply) => {
const body = parseBody(SALARY_ITEM_CREATE_SCHEMA, request.body);
@@ -300,7 +301,7 @@ async function payrollRoutes(fastify) {
fastify.patch(
"/payroll/items/:itemId",
{
preHandler: fastify.requirePermission("system.users"),
preHandler: fastify.requirePermission(PAYROLL_MANAGE_PERMISSION),
},
async (request, reply) => {
const itemId = parseId(request.params?.itemId);
@@ -347,7 +348,7 @@ async function payrollRoutes(fastify) {
fastify.get(
"/payroll/employees/:employeeId/profile",
{
preHandler: fastify.requirePermission("system.users"),
preHandler: fastify.requirePermission(PAYROLL_MANAGE_PERMISSION),
},
async (request, reply) => {
const employeeId = parseId(request.params?.employeeId);
@@ -375,7 +376,7 @@ async function payrollRoutes(fastify) {
fastify.put(
"/payroll/employees/:employeeId/profile",
{
preHandler: fastify.requirePermission("system.users"),
preHandler: fastify.requirePermission(PAYROLL_MANAGE_PERMISSION),
},
async (request, reply) => {
const employeeId = parseId(request.params?.employeeId);
@@ -461,7 +462,7 @@ async function payrollRoutes(fastify) {
}
await ensureEmployeeExists(fastify.prisma, employeeId);
const isAdmin = fastify.hasPermission(request.employee, "system.users");
const isAdmin = fastify.hasPermission(request.employee, PAYROLL_MANAGE_PERMISSION);
const payslips = await fastify.prisma.payslip.findMany({
where: {
employee_id: employeeId,
@@ -496,7 +497,7 @@ async function payrollRoutes(fastify) {
fastify.get(
"/payroll/payslips",
{
preHandler: fastify.requirePermission("system.users"),
preHandler: fastify.requirePermission(PAYROLL_MANAGE_PERMISSION),
},
async (request, reply) => {
const query = parseQuery(PAYSLIP_QUERY_SCHEMA, request.query);
@@ -519,7 +520,7 @@ async function payrollRoutes(fastify) {
fastify.post(
"/payroll/payslips/generate",
{
preHandler: fastify.requirePermission("system.users"),
preHandler: fastify.requirePermission(PAYROLL_MANAGE_PERMISSION),
},
async (request, reply) => {
const body = parseBody(PAYSLIP_GENERATE_SCHEMA, request.body);
@@ -679,7 +680,7 @@ async function payrollRoutes(fastify) {
fastify.patch(
"/payroll/payslips/:payslipId",
{
preHandler: fastify.requirePermission("system.users"),
preHandler: fastify.requirePermission(PAYROLL_MANAGE_PERMISSION),
},
async (request, reply) => {
const payslipId = parseId(request.params?.payslipId);
@@ -753,7 +754,7 @@ async function payrollRoutes(fastify) {
fastify.post(
"/payroll/payslips/issue",
{
preHandler: fastify.requirePermission("system.users"),
preHandler: fastify.requirePermission(PAYROLL_MANAGE_PERMISSION),
},
async (request, reply) => {
const body = parseBody(PAYSLIP_ISSUE_SCHEMA, request.body);