create permission crud

This commit is contained in:
2025-03-05 09:51:16 +03:30
parent 46c48c776a
commit 67dbeee57b
4 changed files with 162 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
<?php
namespace App\Http\Controllers\V3;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use App\Http\Requests\V3\Permission\StoreRequest;
use App\Http\Requests\V3\Permission\UpdateRequest;
use App\Http\Traits\ApiResponse;
use App\Models\Permission;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class PermissionManagementController extends Controller
{
use ApiResponse;
/**
* Display a listing of the resource.
*/
public function index(Request $request): JsonResponse
{
return $this->successResponse(DataTableFacade::run(
Permission::query(),
$request,
allowedFilters: ['*'],
allowedSortings: ['*']));
}
/**
* Store a newly created resource in storage.
*/
public function store(StoreRequest $request): JsonResponse
{
Permission::create([
'name' => $request->name,
'guard_name' => 'web',
'name_fa' => $request->name_fa,
'description' => $request->description,
'type' => $request->type,
'type_fa' => $request->type_fa,
'need_province' => $request->need_province,
'need_edare_shahri' => $request->need_edare_shahri,
]);
return $this->successResponse();
}
/**
* Display the specified resource.
*/
public function show(Permission $permission): JsonResponse
{
return $this->successResponse($permission);
}
/**
* Update the specified resource in storage.
*/
public function update(UpdateRequest $request, Permission $permission): JsonResponse
{
$permission->update([
'name' => $request->name,
'name_fa' => $request->name_fa,
'description' => $request->description,
'type' => $request->type,
'type_fa' => $request->type_fa,
'need_province' => $request->need_province,
'need_edare_shahri' => $request->need_edare_shahri,
]);
return $this->successResponse();
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Permission $permission): JsonResponse
{
$permission->delete();
return $this->successResponse();
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Http\Requests\V3\Permission;
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|string|unique:permissions,name',
'name_fa' => 'required|string',
'description' => 'required|string',
'type' => 'required|string',
'type_fa' => 'required|string',
'need_province' => 'required|in:0,1',
'need_edare_shahri' => 'required|in:0,1',
];
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Http\Requests\V3\Permission;
use Illuminate\Foundation\Http\FormRequest;
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|unique:permissions,name,{$this->permission->id}",
'name_fa' => 'required|string',
'description' => 'required|string',
'type' => 'required|string',
'type_fa' => 'required|string',
'need_province' => 'required|in:0,1',
'need_edare_shahri' => 'required|in:0,1',
];
}
}

View File

@@ -21,6 +21,7 @@ use App\Http\Controllers\V3\Dashboard\SafetyAndPrivacyController;
use App\Http\Controllers\V3\FMSVehicleManagementController;
use App\Http\Controllers\V3\Harim\DivarkeshiController;
use App\Http\Controllers\V3\LogListController;
use App\Http\Controllers\V3\PermissionManagementController;
use App\Http\Controllers\V3\ProfileController;
use App\Http\Controllers\V3\RahdaranController;
use Illuminate\Support\Facades\Route;
@@ -362,3 +363,14 @@ Route::name('items.')
Route::get('/items', 'getItems')->name('list');
Route::get('/sub_items/{item}', 'getSubItems')->name('subItems');
});
Route::prefix('permissions')
->name('permissions.')
->controller(PermissionManagementController::class)
->group(function () {
Route::get('/', 'index')->name('index');
Route::post('/', 'store')->name('store');
Route::get('/{permission}', 'show')->name('show');
Route::post('/{permission}', 'update')->name('update');
Route::delete('/{permission}', 'destroy')->name('destroy');
});