token issues more for pdf preview missing

With DEV to QAS live test environment

Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
2026-08-05 20:43:16 +08:00
parent 0c7f5ccd0f
commit 141b7ab592
5 changed files with 170 additions and 26 deletions
+1
View File
@@ -24,6 +24,7 @@ router.get("/by-subscription", ctrl.getCoursesBySubscription);
router.get("/units-flat", ctrl.getUnitsFlat);
router.get("/lessons-flat", ctrl.getLessonsFlat);
router.get("/quizzes-flat", ctrl.getQuizzesFlat);
router.get("/uuid/:uuid/structure-counts", ctrl.getCourseStructureCounts);
router.put("/order", ctrl.reorderCourses); // persist top-level course catalog ordering { course_ids }
// ── then :courseId ────────────────────────────────────────────────────────────
+29 -21
View File
@@ -3,55 +3,63 @@ const controller = require("../../controllers/admin/task.controller");
const completionController = require("../../controllers/admin/task_completion.controller");
const { sensitiveOpsLimiter } = require("../../middleware/rateLimiter.middleware");
// NOTE on rate limiting: every route below already sits behind adminLimiter
// (200 req/15min per admin user — applied blanket-wide in admin.routes.js).
// sensitiveOpsLimiter (10 req/hour, ALSO keyed per admin user and shared
// across every route it's attached to) is reserved for genuinely irreversible
// actions — permanent delete — so routine CRUD doesn't compete with those for
// the same tight budget.
// ─── Task Lists ───────────────────────────────────────────────────────────────
router.get("/", controller.getTaskLists);
router.get("/archived", controller.getArchivedTaskLists);
router.get("/field-values", controller.getTaskListFieldValues);
router.post("/", sensitiveOpsLimiter, controller.createTaskList);
router.post("/bulk-archive", sensitiveOpsLimiter, controller.bulkArchiveTaskLists);
router.post("/bulk-restore", sensitiveOpsLimiter, controller.bulkRestoreTaskLists);
router.post("/", controller.createTaskList);
router.post("/bulk-archive", controller.bulkArchiveTaskLists);
router.post("/bulk-restore", controller.bulkRestoreTaskLists);
router.post("/bulk-delete", sensitiveOpsLimiter, controller.bulkPermanentlyDeleteTaskLists);
// ─── Task List (single) ───────────────────────────────────────────────────────
router.get("/:taskListId", controller.getTaskList);
router.get("/:taskListId/permanent-delete-impact", controller.getTaskListPermanentDeleteImpact);
router.patch("/:taskListId", sensitiveOpsLimiter, controller.updateTaskList);
router.delete("/:taskListId", sensitiveOpsLimiter, controller.archiveTaskList);
router.patch("/:taskListId", controller.updateTaskList);
router.delete("/:taskListId", controller.archiveTaskList);
router.delete("/:taskListId/permanent", sensitiveOpsLimiter, controller.permanentlyDeleteTaskList);
router.patch("/:taskListId/restore", sensitiveOpsLimiter, controller.restoreTaskList);
router.patch("/:taskListId/restore", controller.restoreTaskList);
// ─── Task List Groups ─────────────────────────────────────────────────────────
router.get("/:taskListId/groups", controller.getTaskListGroups);
router.put("/:taskListId/groups", sensitiveOpsLimiter, controller.syncGroups);
router.post("/:taskListId/groups/assign", sensitiveOpsLimiter, controller.assignGroups);
router.post("/:taskListId/groups/unassign", sensitiveOpsLimiter, controller.unassignGroups);
router.put("/:taskListId/groups", controller.syncGroups);
router.post("/:taskListId/groups/assign", controller.assignGroups);
router.post("/:taskListId/groups/unassign", controller.unassignGroups);
// ─── Tasks (nested under task-list) ──────────────────────────────────────────
router.get("/:taskListId/tasks", controller.getTasks);
router.get("/:taskListId/tasks/archived", controller.getArchivedTasks);
router.get("/:taskListId/tasks/field-values", controller.getTaskFieldValues);
router.get("/:taskListId/tasks/requirement-completion-check", controller.checkRequirementCompletion);
router.post("/:taskListId/tasks", sensitiveOpsLimiter, controller.createTask);
router.post("/:taskListId/tasks/bulk-archive", sensitiveOpsLimiter, controller.bulkArchiveTasks);
router.post("/:taskListId/tasks/bulk-restore", sensitiveOpsLimiter, controller.bulkRestoreTasks);
router.post("/:taskListId/tasks", controller.createTask);
router.post("/:taskListId/tasks/bulk", controller.createTasksBulk);
router.post("/:taskListId/tasks/bulk-archive", controller.bulkArchiveTasks);
router.post("/:taskListId/tasks/bulk-restore", controller.bulkRestoreTasks);
router.post("/:taskListId/tasks/bulk-delete", sensitiveOpsLimiter, controller.bulkPermanentlyDeleteTasks);
router.patch("/:taskListId/tasks/order", sensitiveOpsLimiter, controller.reorderTasks);
router.patch("/:taskListId/tasks/order", controller.reorderTasks);
// ─── Tasks (single) ───────────────────────────────────────────────────────────
router.get("/:taskListId/tasks/:taskId", controller.getTask);
router.patch("/:taskListId/tasks/:taskId", sensitiveOpsLimiter, controller.updateTask);
router.delete("/:taskListId/tasks/:taskId", sensitiveOpsLimiter, controller.archiveTask);
router.patch("/:taskListId/tasks/:taskId", controller.updateTask);
router.delete("/:taskListId/tasks/:taskId", controller.archiveTask);
router.delete("/:taskListId/tasks/:taskId/permanent", sensitiveOpsLimiter, controller.permanentlyDeleteTask);
router.patch("/:taskListId/tasks/:taskId/restore", sensitiveOpsLimiter, controller.restoreTask);
router.patch("/:taskListId/tasks/:taskId/restore", controller.restoreTask);
// ─── Completions (nested under task) ─────────────────────────────────────────
router.get("/:taskListId/tasks/:taskId/completions", completionController.getCompletions);
router.get("/:taskListId/tasks/:taskId/completions/user/:userId", completionController.getCompletionsByUser);
router.post("/:taskListId/tasks/:taskId/completions/bulk-archive", sensitiveOpsLimiter, completionController.bulkArchiveCompletions);
router.post("/:taskListId/tasks/:taskId/completions/bulk-restore", sensitiveOpsLimiter, completionController.bulkRestoreCompletions);
router.post("/:taskListId/tasks/:taskId/completions/bulk-archive", completionController.bulkArchiveCompletions);
router.post("/:taskListId/tasks/:taskId/completions/bulk-restore", completionController.bulkRestoreCompletions);
router.get("/:taskListId/tasks/:taskId/completions/:completionId", completionController.getCompletion);
router.patch("/:taskListId/tasks/:taskId/completions/:completionId/review", sensitiveOpsLimiter, completionController.reviewSubmission);
router.delete("/:taskListId/tasks/:taskId/completions/:completionId", sensitiveOpsLimiter, completionController.archiveCompletion);
router.patch("/:taskListId/tasks/:taskId/completions/:completionId/restore", sensitiveOpsLimiter, completionController.restoreCompletion);
router.patch("/:taskListId/tasks/:taskId/completions/:completionId/review", completionController.reviewSubmission);
router.delete("/:taskListId/tasks/:taskId/completions/:completionId", completionController.archiveCompletion);
router.patch("/:taskListId/tasks/:taskId/completions/:completionId/restore", completionController.restoreCompletion);
module.exports = router;