add TasksPolicy and EventsPolicy

This commit is contained in:
2025-12-17 17:11:12 +01:00
parent a0e95aca3e
commit 08c51473a7
5 changed files with 70 additions and 14 deletions
+4 -3
View File
@@ -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);
}
+5 -11
View File
@@ -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);
}
+25
View File
@@ -0,0 +1,25 @@
<?php
namespace App\Policies;
use App\Models\Events;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class EventsPolicy
{
public function create(User $user, Events $model): bool
{
return $user->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;
}
}
+30
View File
@@ -0,0 +1,30 @@
<?php
namespace App\Policies;
use App\Models\Task;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class TasksPolicy
{
public function create(User $user, Task $model): bool
{
return $user->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;
}
}
+6
View File
@@ -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);
}
}