From 419c06467c0dbac4ee87d9d26d19a642499c298e Mon Sep 17 00:00:00 2001 From: konard Date: Tue, 28 Oct 2025 21:49:32 +0100 Subject: [PATCH 1/3] Initial commit with task details for issue #20 Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: undefined --- CLAUDE.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index da28d4d..1370b30 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -324,4 +324,14 @@ Copyright: © 2023-2025 谢榕川 All rights reserved - [README_WORKERS.md](README_WORKERS.md) - Подробная информация о воркерах - [swagger.yaml](swagger.yaml) - OpenAPI спецификация - [docs/](docs/) - Дополнительная документация -- [check-scheduler.md](check-scheduler.md) - Проверка планировщика задач \ No newline at end of file +- [check-scheduler.md](check-scheduler.md) - Проверка планировщика задач + +--- + +Issue to solve: undefined +Your prepared branch: issue-20-33c45069 +Your prepared working directory: /tmp/gh-issue-solver-1761684565756 +Your forked repository: konard/TaskMateTelegramBot +Original repository (upstream): xierongchuan/TaskMateTelegramBot + +Proceed. \ No newline at end of file From a303024e29a1dcc5385d3f2fba3f6a476fa3193e Mon Sep 17 00:00:00 2001 From: konard Date: Tue, 28 Oct 2025 21:52:11 +0100 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BF=D0=B0=D1=80=D0=BE=D0=BB=D1=8C=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=BE=D0=B1=D1=8F=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=BC=20=D0=BF=D1=80=D0=B8=20=D0=BE=D0=B1=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Исправлена проблема валидации при обновлении пользователя через PUT /api/v1/users/{id}: - Изменена валидация пароля с 'required' на 'nullable' для корректной работы с пустыми строками - Пароль теперь обновляется только если он предоставлен и не пустой - Добавлена поддержка поля 'phone' в дополнение к 'phone_number' для обратной совместимости - Удалено сообщение об ошибке 'password.required' из валидации Теперь при отправке пустого пароля ("") пароль не изменяется и не выскакивает ошибка валидации. При вводе нового пароля он корректно обновляется. Fixes #20 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../Controllers/Api/V1/UserApiController.php | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Api/V1/UserApiController.php b/app/Http/Controllers/Api/V1/UserApiController.php index 8637f3c..e6d8223 100644 --- a/app/Http/Controllers/Api/V1/UserApiController.php +++ b/app/Http/Controllers/Api/V1/UserApiController.php @@ -132,7 +132,7 @@ public function update(Request $request, $id): JsonResponse $validator = Validator::make($request->all(), [ 'password' => [ 'sometimes', - 'required', + 'nullable', 'string', 'min:8', 'max:255', @@ -145,6 +145,13 @@ public function update(Request $request, $id): JsonResponse 'min:2', 'max:255' ], + 'phone' => [ + 'sometimes', + 'required', + 'string', + 'regex:/^\+?[\d\s\-\(\)]+$/', + 'max:20' + ], 'phone_number' => [ 'sometimes', 'required', @@ -165,11 +172,12 @@ public function update(Request $request, $id): JsonResponse 'exists:auto_dealerships,id' ] ], [ - 'password.required' => 'Пароль обязателен', 'password.min' => 'Пароль должен содержать минимум 8 символов', 'password.regex' => 'Пароль должен содержать минимум одну заглавную букву, одну строчную букву и одну цифру', 'full_name.required' => 'Полное имя обязательно', 'full_name.min' => 'Полное имя должно содержать минимум 2 символа', + 'phone.required' => 'Телефон обязателен', + 'phone.regex' => 'Некорректный формат телефона', 'phone_number.required' => 'Телефон обязателен', 'phone_number.regex' => 'Некорректный формат телефона', 'role.required' => 'Роль обязательна', @@ -190,7 +198,8 @@ public function update(Request $request, $id): JsonResponse try { $updateData = []; - if (isset($validated['password'])) { + // Only update password if it's provided and not empty + if (isset($validated['password']) && $validated['password'] !== '' && $validated['password'] !== null) { $updateData['password'] = Hash::make($validated['password']); } @@ -198,7 +207,10 @@ public function update(Request $request, $id): JsonResponse $updateData['full_name'] = $validated['full_name']; } - if (isset($validated['phone_number'])) { + // Support both 'phone' and 'phone_number' fields + if (isset($validated['phone'])) { + $updateData['phone'] = $validated['phone']; + } elseif (isset($validated['phone_number'])) { $updateData['phone'] = $validated['phone_number']; } From 57d90b948bca7d9d64548231abed0020c6cfaaa7 Mon Sep 17 00:00:00 2001 From: konard Date: Tue, 28 Oct 2025 21:56:23 +0100 Subject: [PATCH 3/3] Revert "Initial commit with task details for issue #20" This reverts commit 419c06467c0dbac4ee87d9d26d19a642499c298e. --- CLAUDE.md | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 1370b30..da28d4d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -324,14 +324,4 @@ Copyright: © 2023-2025 谢榕川 All rights reserved - [README_WORKERS.md](README_WORKERS.md) - Подробная информация о воркерах - [swagger.yaml](swagger.yaml) - OpenAPI спецификация - [docs/](docs/) - Дополнительная документация -- [check-scheduler.md](check-scheduler.md) - Проверка планировщика задач - ---- - -Issue to solve: undefined -Your prepared branch: issue-20-33c45069 -Your prepared working directory: /tmp/gh-issue-solver-1761684565756 -Your forked repository: konard/TaskMateTelegramBot -Original repository (upstream): xierongchuan/TaskMateTelegramBot - -Proceed. \ No newline at end of file +- [check-scheduler.md](check-scheduler.md) - Проверка планировщика задач \ No newline at end of file