From a0e95aca3e31387cd2c90bd80edc41c928a09d68 Mon Sep 17 00:00:00 2001 From: Giovanni-Josserand Date: Wed, 17 Dec 2025 16:52:43 +0100 Subject: [PATCH] remove unecessary gates for users routes and add UserPolicy --- app/Http/Controllers/SearchController.php | 1 - app/Http/Controllers/UserController.php | 11 ++++------- app/Policies/UserPolicy.php | 24 +++++++++++++++++++++++ app/Providers/GateServiceProvider.php | 13 ++---------- artisan | 0 bootstrap/cache/.gitignore | 0 storage/app/.gitignore | 0 storage/app/private/.gitignore | 0 storage/app/public/.gitignore | 0 storage/framework/.gitignore | 0 storage/framework/cache/.gitignore | 0 storage/framework/cache/data/.gitignore | 0 storage/framework/sessions/.gitignore | 0 storage/framework/testing/.gitignore | 0 storage/framework/views/.gitignore | 0 storage/logs/.gitignore | 0 16 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 app/Policies/UserPolicy.php mode change 100755 => 100644 artisan mode change 100755 => 100644 bootstrap/cache/.gitignore mode change 100755 => 100644 storage/app/.gitignore mode change 100755 => 100644 storage/app/private/.gitignore mode change 100755 => 100644 storage/app/public/.gitignore mode change 100755 => 100644 storage/framework/.gitignore mode change 100755 => 100644 storage/framework/cache/.gitignore mode change 100755 => 100644 storage/framework/cache/data/.gitignore mode change 100755 => 100644 storage/framework/sessions/.gitignore mode change 100755 => 100644 storage/framework/testing/.gitignore mode change 100755 => 100644 storage/framework/views/.gitignore mode change 100755 => 100644 storage/logs/.gitignore diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php index 4dd1878..8af18d4 100644 --- a/app/Http/Controllers/SearchController.php +++ b/app/Http/Controllers/SearchController.php @@ -147,7 +147,6 @@ class SearchController extends Controller public function searchUsers(Request $request) { try { - $this->authorize('searchUsers'); try { $this->client->collections['users']->delete(); } catch (\Exception $e) { diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 623fcb6..3449b22 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -6,6 +6,7 @@ use App\Models\Notification; use App\Models\User; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Log; use App\Services\GetRole; @@ -16,7 +17,6 @@ class UserController extends Controller { public function me(Request $request): JsonResponse { try { - $this->authorize('me'); return response()->json(UserService::getData($request->user()->id)); } catch(\Exception $e) { Log::info($e->getMessage()); @@ -68,15 +68,13 @@ class UserController extends Controller public function deleteById(Request $request, int $id): JsonResponse { - if(!$this->isAdmin($request->user()->role)){ + if(Gate::denies('deleteOther', $request->user())){ return response()->json(["message" => "Can't delete this user"], 403); } try { $user = User::find($id); - if($user->role === 1) return response()->json(["message" => "Can't delete this user"], 403); - $user->delete(); return response()->json(['message' => 'User deleted successfully']); } catch(\Exception $e) { @@ -116,7 +114,7 @@ class UserController extends Controller public function validate(Request $request, int $id): JsonResponse { - if($request->user()->role != 1 && $request->user()->role != 2 || $request->user()->role == null){ + if(Gate::denies('validate', $request->user())){ return response()->json(["message" => "Can't validate this user"], 403); } @@ -145,7 +143,7 @@ class UserController extends Controller public function addRole(Request $request, int $id): JsonResponse { - if(!$this->isAdmin($request->user()->role)){ + if(Gate::denies('addRole', $request->user())){ return response()->json(["message" => "Can't add role to this user"], 403); } @@ -187,7 +185,6 @@ class UserController extends Controller public function getUserTasks(Request $request): JsonResponse { try { - $this->authorize('getUserTasks'); return response()->json(['data' => $request->user()->tasks]); } catch (\Exception $e) { Log::info($e->getMessage()); diff --git a/app/Policies/UserPolicy.php b/app/Policies/UserPolicy.php new file mode 100644 index 0000000..c6a6dc5 --- /dev/null +++ b/app/Policies/UserPolicy.php @@ -0,0 +1,24 @@ +role === 1; + } + + public function validate(User $user, User $model): bool + { + return $user->role === 1 || $user->role === 2; + } + + public function addRole(User $user, User $model): bool + { + return $user->role === 1; + } +} diff --git a/app/Providers/GateServiceProvider.php b/app/Providers/GateServiceProvider.php index ff38a90..9b05b24 100644 --- a/app/Providers/GateServiceProvider.php +++ b/app/Providers/GateServiceProvider.php @@ -3,6 +3,7 @@ namespace App\Providers; use App\Models\User; +use App\Policies\UserPolicy; use Illuminate\Support\Facades\Gate; use Illuminate\Support\ServiceProvider; @@ -21,16 +22,6 @@ class GateServiceProvider extends ServiceProvider */ public function boot(): void { - Gate::define('me', function (User $user) { - return true; - }); - - Gate::define('getUserTasks', function (User $user) { - return true; - }); - - Gate::define('searchUsers', function (User $user) { - return true; - }); + Gate::policy(User::class, UserPolicy::class); } } diff --git a/artisan b/artisan old mode 100755 new mode 100644 diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore old mode 100755 new mode 100644 diff --git a/storage/app/.gitignore b/storage/app/.gitignore old mode 100755 new mode 100644 diff --git a/storage/app/private/.gitignore b/storage/app/private/.gitignore old mode 100755 new mode 100644 diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore old mode 100755 new mode 100644 diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore old mode 100755 new mode 100644 diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore old mode 100755 new mode 100644