Большое обновление
1. Создание личных проектов 2. Управление командой 3. Приглашение участников 4. Уведомления и многое другое...
This commit is contained in:
@@ -5,6 +5,7 @@ $method = $_SERVER['REQUEST_METHOD'];
|
||||
if ($method === 'POST') {
|
||||
$data = RestApi::getInput();
|
||||
$action = $data['action'] ?? null;
|
||||
$user_id = RestApi::getCurrentUserId();
|
||||
$task = new Task();
|
||||
|
||||
// Загрузка изображения
|
||||
@@ -13,15 +14,23 @@ if ($method === 'POST') {
|
||||
$file_base64 = $data['file_data'] ?? null;
|
||||
$file_name = $data['file_name'] ?? null;
|
||||
|
||||
// Проверяем право на редактирование задачи
|
||||
$taskData = Task::check_task($task_id);
|
||||
ProjectAccess::requireEditTask($taskData['id_project'], $user_id, (int)($taskData['id_account'] ?? 0), (int)($taskData['create_id_account'] ?? 0));
|
||||
|
||||
$result = Task::uploadFile($task_id, $file_base64, $file_name);
|
||||
RestApi::response($result);
|
||||
}
|
||||
|
||||
// Удаление изображений (принимает file_names массив или file_name строку)
|
||||
// Удаление изображений
|
||||
if ($action === 'delete_image') {
|
||||
$task_id = $data['task_id'] ?? null;
|
||||
$file_names = $data['file_names'] ?? $data['file_name'] ?? null;
|
||||
|
||||
// Проверяем право на редактирование задачи
|
||||
$taskData = Task::check_task($task_id);
|
||||
ProjectAccess::requireEditTask($taskData['id_project'], $user_id, (int)($taskData['id_account'] ?? 0), (int)($taskData['create_id_account'] ?? 0));
|
||||
|
||||
$result = Task::deleteFile($task_id, $file_names);
|
||||
RestApi::response($result);
|
||||
}
|
||||
@@ -32,6 +41,10 @@ if ($method === 'POST') {
|
||||
$column_id = $data['column_id'] ?? null;
|
||||
$to_index = $data['to_index'] ?? 0;
|
||||
|
||||
// Проверяем право на перемещение (с учётом move_own_task_only)
|
||||
$taskData = Task::check_task($id);
|
||||
ProjectAccess::requireMoveTask($taskData['id_project'], $user_id, (int)($taskData['id_account'] ?? 0), (int)($taskData['create_id_account'] ?? 0));
|
||||
|
||||
$result = Task::updateOrder($id, $column_id, $to_index);
|
||||
RestApi::response($result);
|
||||
}
|
||||
@@ -39,6 +52,11 @@ if ($method === 'POST') {
|
||||
// Обновление задачи
|
||||
if ($action === 'update') {
|
||||
$task->id = $data['id'] ?? null;
|
||||
|
||||
// Проверяем право на редактирование
|
||||
$taskData = Task::check_task($task->id);
|
||||
ProjectAccess::requireEditTask($taskData['id_project'], $user_id, (int)($taskData['id_account'] ?? 0), (int)($taskData['create_id_account'] ?? 0));
|
||||
|
||||
$task->id_department = $data['id_department'] ?? null;
|
||||
$task->id_label = $data['id_label'] ?? null;
|
||||
$task->id_account = $data['id_account'] ?? null;
|
||||
@@ -55,10 +73,16 @@ if ($method === 'POST') {
|
||||
|
||||
// Создание задачи
|
||||
if ($action === 'create') {
|
||||
$task->id_project = $data['id_project'] ?? null;
|
||||
$project_id = $data['id_project'] ?? null;
|
||||
|
||||
// Проверяем право на создание задач
|
||||
ProjectAccess::requirePermission($project_id, $user_id, 'create_task');
|
||||
|
||||
$task->id_project = $project_id;
|
||||
$task->id_department = $data['id_department'] ?? null;
|
||||
$task->id_label = $data['id_label'] ?? null;
|
||||
$task->id_account = $data['id_account'] ?? null;
|
||||
$task->create_id_account = $user_id; // Создатель задачи
|
||||
$task->column_id = $data['column_id'] ?? null;
|
||||
$task->order = $data['order'] ?? 0;
|
||||
$task->date = $data['date'] ?? null;
|
||||
@@ -74,6 +98,11 @@ if ($method === 'POST') {
|
||||
// Удаление задачи
|
||||
if ($action === 'delete') {
|
||||
$id = $data['id'] ?? null;
|
||||
|
||||
// Проверяем право на удаление
|
||||
$taskData = Task::check_task($id);
|
||||
ProjectAccess::requirePermission($taskData['id_project'], $user_id, 'delete_task');
|
||||
|
||||
$result = Task::delete($id);
|
||||
RestApi::response($result);
|
||||
}
|
||||
@@ -82,6 +111,11 @@ if ($method === 'POST') {
|
||||
if ($action === 'set_archive') {
|
||||
$id = $data['id'] ?? null;
|
||||
$archive = $data['archive'] ?? 1;
|
||||
|
||||
// Проверяем право на архивирование
|
||||
$taskData = Task::check_task($id);
|
||||
ProjectAccess::requirePermission($taskData['id_project'], $user_id, 'archive_task');
|
||||
|
||||
$result = Task::setArchive($id, $archive);
|
||||
RestApi::response($result);
|
||||
}
|
||||
@@ -96,12 +130,16 @@ if ($method === 'GET') {
|
||||
// Получение задач проекта
|
||||
// ?id_project=1 (обязательный)
|
||||
// ?archive=0 (неархивные, по умолчанию), ?archive=1 (архивные), ?archive=all (все)
|
||||
$user_id = RestApi::getCurrentUserId();
|
||||
$id_project = $_GET['id_project'] ?? null;
|
||||
|
||||
if (!$id_project) {
|
||||
RestApi::response(['success' => false, 'errors' => ['id_project' => 'Проект не указан']], 400);
|
||||
}
|
||||
|
||||
// Проверяем доступ к проекту
|
||||
ProjectAccess::requireAccess((int)$id_project, $user_id);
|
||||
|
||||
$archive = $_GET['archive'] ?? 0;
|
||||
if ($archive === 'all') {
|
||||
$archive = null;
|
||||
|
||||
Reference in New Issue
Block a user