diff --git a/app/Http/Controllers/EventsController.php b/app/Http/Controllers/EventsController.php index 27176e1..d745121 100644 --- a/app/Http/Controllers/EventsController.php +++ b/app/Http/Controllers/EventsController.php @@ -6,6 +6,7 @@ use App\Models\Events; use http\Env\Response; use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; +use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Log; use PHPUnit\Event\Event; @@ -13,7 +14,7 @@ class EventsController extends Controller { public function create(Request $request): JsonResponse { - if ($request->user()->role != 1) { + if (Gate::denies('create', Events::class)) { return response()->json(['message' => 'Forbidden'], 403); } @@ -37,7 +38,7 @@ class EventsController extends Controller public function update(Request $request, int $id): JsonResponse { - if ($request->user()->role != 1) { + if (Gate::denies('update', Events::class)) { return response()->json(['message' => 'Forbidden'], 403); } @@ -76,7 +77,7 @@ class EventsController extends Controller public function delete(Request $request, int $id): JsonResponse { - if ($request->user()->role != 1) { + if (Gate::denies('delete', Events::class)) { return response()->json(['message' => 'Forbidden'], 403); } diff --git a/app/Http/Controllers/TasksController.php b/app/Http/Controllers/TasksController.php index 1de2456..bf059a4 100644 --- a/app/Http/Controllers/TasksController.php +++ b/app/Http/Controllers/TasksController.php @@ -7,20 +7,14 @@ use App\Models\Task; use App\Models\User; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Log; class TasksController extends Controller { - - public function isAdmin(int $role) { - if($role != 1) return false; - return true; - } - - public function create(Request $request): JsonResponse { - if(!$this->isAdmin($request->user()->role)){ + if(Gate::denies('create', Task::class)) { return response()->json(["message" => "Can't create task"], 403); } @@ -67,7 +61,7 @@ class TasksController extends Controller public function assignUser(request $request, int $id): JsonResponse { - if(!$this->isAdmin($request->user()->role)){ + if(Gate::denies('assignOther', Task::class)) { return response()->json(["message" => "Can't create task"], 403); } @@ -108,7 +102,7 @@ class TasksController extends Controller public function deleteTask(Request $request, int $id): JsonResponse { - if(!$this->isAdmin($request->user()->role)){ + if(Gate::denies('delete', Task::class)) { return response()->json(["message" => "Can't delete task"], 403); } @@ -126,7 +120,7 @@ class TasksController extends Controller public function update(Request $request, int $id): JsonResponse { - if(!$this->isAdmin($request->user()->role)){ + if(Gate::denies('update', Task::class)) { return response()->json(["message" => "Forbidden"], 403); } diff --git a/app/Policies/EventsPolicy.php b/app/Policies/EventsPolicy.php new file mode 100644 index 0000000..0273ad5 --- /dev/null +++ b/app/Policies/EventsPolicy.php @@ -0,0 +1,25 @@ +role === 1 || $user->role === 2; + } + + public function update(User $user, Events $model): bool + { + return $user->role === 1 || $user->role === 2; + } + + public function delete(User $user, Events $model): bool + { + return $user->role === 1 || $user->role === 2; + } +} diff --git a/app/Policies/TasksPolicy.php b/app/Policies/TasksPolicy.php new file mode 100644 index 0000000..bc609cc --- /dev/null +++ b/app/Policies/TasksPolicy.php @@ -0,0 +1,30 @@ +role === 1 || $user->role === 2; + } + + public function assignOther(User $user, Task $model): bool + { + return $user->role === 1 || $user->role === 2; + } + + public function delete(User $user, Task $model): bool + { + return $user->role === 1 || $user->role === 2; + } + + public function update(User $user, Task $model): bool + { + return $user->role === 1 || $user->role === 2; + } +} diff --git a/app/Providers/GateServiceProvider.php b/app/Providers/GateServiceProvider.php index 9b05b24..8eeacab 100644 --- a/app/Providers/GateServiceProvider.php +++ b/app/Providers/GateServiceProvider.php @@ -2,7 +2,11 @@ namespace App\Providers; +use App\Models\Events; +use App\Models\Task; use App\Models\User; +use App\Policies\EventsPolicy; +use App\Policies\TasksPolicy; use App\Policies\UserPolicy; use Illuminate\Support\Facades\Gate; use Illuminate\Support\ServiceProvider; @@ -23,5 +27,7 @@ class GateServiceProvider extends ServiceProvider public function boot(): void { Gate::policy(User::class, UserPolicy::class); + Gate::policy(Events::class, EventsPolicy::class); + Gate::policy(Task::class, TasksPolicy::class); } }