remove unecessary gates for users routes and add UserPolicy

This commit is contained in:
Giovanni committed 2025-12-17 16:52:43 +01:00
1 parent 4c3647fe30
commit a0e95aca3e
16 files changed
+30 -19

No files matched your search

@@ -147,7 +147,6 @@ class SearchController extends Controller
public function searchUsers(Request $request) public function searchUsers(Request $request)
{ {
try { try {
$this->authorize('searchUsers');
try { try {
$this->client->collections['users']->delete(); $this->client->collections['users']->delete();
} catch (\Exception $e) { } catch (\Exception $e) {
+4 -7
View File
@@ -6,6 +6,7 @@ use App\Models\Notification;
use App\Models\User; use App\Models\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use App\Services\GetRole; use App\Services\GetRole;
@@ -16,7 +17,6 @@ class UserController extends Controller
{ {
public function me(Request $request): JsonResponse { public function me(Request $request): JsonResponse {
try { try {
$this->authorize('me');
return response()->json(UserService::getData($request->user()->id)); return response()->json(UserService::getData($request->user()->id));
} catch(\Exception $e) { } catch(\Exception $e) {
Log::info($e->getMessage()); Log::info($e->getMessage());
@@ -68,15 +68,13 @@ class UserController extends Controller
public function deleteById(Request $request, int $id): JsonResponse { 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); return response()->json(["message" => "Can't delete this user"], 403);
} }
try { try {
$user = User::find($id); $user = User::find($id);
if($user->role === 1) return response()->json(["message" => "Can't delete this user"], 403);
$user->delete(); $user->delete();
return response()->json(['message' => 'User deleted successfully']); return response()->json(['message' => 'User deleted successfully']);
} catch(\Exception $e) { } catch(\Exception $e) {
@@ -116,7 +114,7 @@ class UserController extends Controller
public function validate(Request $request, int $id): JsonResponse { 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); 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 { 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); 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 { public function getUserTasks(Request $request): JsonResponse {
try { try {
$this->authorize('getUserTasks');
return response()->json(['data' => $request->user()->tasks]); return response()->json(['data' => $request->user()->tasks]);
} catch (\Exception $e) { } catch (\Exception $e) {
Log::info($e->getMessage()); Log::info($e->getMessage());
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace App\Policies;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class UserPolicy
{
public function deleteOther(User $user, User $model): bool
{
return $user->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;
}
}
+2 -11
View File
@@ -3,6 +3,7 @@
namespace App\Providers; namespace App\Providers;
use App\Models\User; use App\Models\User;
use App\Policies\UserPolicy;
use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Gate;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
@@ -21,16 +22,6 @@ class GateServiceProvider extends ServiceProvider
*/ */
public function boot(): void public function boot(): void
{ {
Gate::define('me', function (User $user) { Gate::policy(User::class, UserPolicy::class);
return true;
});
Gate::define('getUserTasks', function (User $user) {
return true;
});
Gate::define('searchUsers', function (User $user) {
return true;
});
} }
} }
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
Executable → Regular
View File
File mode changed.
View File
File mode changed.
View File
File mode changed.
View File
File mode changed.
View File
File mode changed.
View File
File mode changed.
Executable → Regular
View File
File mode changed.