add all permissions api

This commit is contained in:
2025-05-07 10:09:18 +03:30
parent 06edbbbe0e
commit ee83c776ec
5 changed files with 115 additions and 27 deletions

View File

@@ -3,6 +3,8 @@
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\PermissionManagement\StoreRequest;
use App\Http\Requests\Admin\PermissionManagement\UpdateRequest;
use App\Http\Resources\Admin\PermissionResource;
use app\Http\Traits\ApiResponse;
use App\Models\Permission;
@@ -12,12 +14,10 @@ use Illuminate\Http\Request;
class PermissionManagementController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
public function index()
public function index(): JsonResponse
{
//
return $this->successResponse(Permission::all());
}
public function list(): JsonResponse
@@ -25,35 +25,37 @@ class PermissionManagementController extends Controller
return $this->successResponse(PermissionResource::collection(Permission::all()));
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
public function store(StoreRequest $request): JsonResponse
{
//
Permission::query()->create([
'name' => $request->name,
'name_fa' => $request->name_fa,
'guard_name' => 'web'
]);
return $this->successResponse();
}
/**
* Display the specified resource.
*/
public function show(string $id)
public function show(Permission $permission): JsonResponse
{
//
return $this->successResponse($permission);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
public function update(UpdateRequest $request, Permission $permission): JsonResponse
{
//
$permission->update([
'name' => $request->name,
'name_fa' => $request->name_fa,
'guard_name' => 'web',
]);
return $this->successResponse();
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
public function destroy(Permission $permission): JsonResponse
{
//
$permission->delete();
return $this->successResponse();
}
}

View File

@@ -46,4 +46,9 @@ class ProfileController extends Controller
]);
return $this->successResponse();
}
public function permissions(): JsonResponse
{
return $this->successResponse(auth()->user()->getAllPermissions()->pluck('name'));
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Http\Requests\Admin\PermissionManagement;
use Illuminate\Foundation\Http\FormRequest;
class StoreRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'name' => 'required|unique:permissions,name|string|max:255',
'name_fa' => 'required|unique:permissions,name|string|max:255',
];
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace App\Http\Requests\Admin\PermissionManagement;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class UpdateRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'name' => [
'required','string', 'max:255',
Rule::unique('permissions', 'name')->ignore($this->permission->id)
],
'name_fa' => [
'required','string', 'max:255',
Rule::unique('permissions', 'name_fa')->ignore($this->permission->id)
],
];
}
}