feat: add CASL authorization and AI configuration

This commit is contained in:
2026-07-11 14:25:34 +08:00
parent 8f0991a51f
commit 1e1c476bc3
59 changed files with 7733 additions and 120 deletions

View File

@@ -15,6 +15,9 @@ describe('AttendanceController — DingTalk import scope', () => {
const logService = {
log: jest.fn(),
};
const authzService = {
can: jest.fn().mockReturnValue(false),
};
let controller: AttendanceController;
@@ -24,6 +27,7 @@ describe('AttendanceController — DingTalk import scope', () => {
attendanceService as unknown as AttendanceService,
importService as unknown as AttendanceImportService,
logService as unknown as OperationLogsService,
authzService as never,
);
importService.importFromDingTalk.mockResolvedValue({
success: true,
@@ -115,6 +119,7 @@ describe('AttendanceController — DingTalk import scope', () => {
it('allows class managers to choose any importable class and supply explicit DingTalk users', async () => {
attendanceService.getImportableClasses.mockResolvedValue([{ classId: 1, className: '一班' }]);
authzService.can.mockReturnValue(true);
await expect(
controller.getDingTalkImportClasses({
user: {