Tasks Module Stage 1: RBAC + Validation + Events Fix

- Add canCreate/canEdit/canDelete checks in TasksController
- Add input validation in store() and update() methods
- Fix events naming: task.* (singular) instead of tasks.*
- Add CSRF validation and parameter checks for API endpoints
This commit is contained in:
2026-02-08 14:03:26 +00:00
parent 9b8d10bbfa
commit d7fec7169f
3 changed files with 204 additions and 16 deletions
+6 -6
View File
@@ -44,7 +44,7 @@ class TaskService
}
// Генерируем событие
Events::trigger('tasks.created', $taskId, $data, $userId);
Events::trigger('task.created', $taskId, $data, $userId);
}
return $taskId;
@@ -63,7 +63,7 @@ class TaskService
$result = $this->taskModel->update($taskId, $data);
if ($result) {
Events::trigger('tasks.updated', $taskId, $data, $userId);
Events::trigger('task.updated', $taskId, $data, $userId);
}
return $result;
@@ -96,7 +96,7 @@ class TaskService
$result = $this->taskModel->update($taskId, $data);
if ($result) {
Events::trigger('tasks.column_changed', $taskId, $oldColumnId, $newColumnId, $userId);
Events::trigger('task.column_changed', $taskId, $oldColumnId, $newColumnId, $userId);
}
return $result;
@@ -117,7 +117,7 @@ class TaskService
]);
if ($result) {
Events::trigger('tasks.completed', $taskId, $userId);
Events::trigger('task.completed', $taskId, $userId);
}
return $result;
@@ -138,7 +138,7 @@ class TaskService
]);
if ($result) {
Events::trigger('tasks.reopened', $taskId, $userId);
Events::trigger('task.reopened', $taskId, $userId);
}
return $result;
@@ -157,7 +157,7 @@ class TaskService
$result = $this->taskModel->delete($taskId);
if ($result) {
Events::trigger('tasks.deleted', $taskId, $userId);
Events::trigger('task.deleted', $taskId, $userId);
}
return $result;