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

View File

@@ -1,5 +1,6 @@
<?php <?php
use App\Http\Controllers\Admin\PermissionManagementController;
use App\Http\Controllers\Admin\UserManagementController; use App\Http\Controllers\Admin\UserManagementController;
use App\Http\Controllers\AuthController; use App\Http\Controllers\AuthController;
use App\Http\Controllers\CallController; use App\Http\Controllers\CallController;
@@ -19,10 +20,12 @@ Route::prefix('server')->group(function () {
Route::prefix('profile') Route::prefix('profile')
->name('profile.') ->name('profile.')
->middleware('auth:sanctum')
->controller(ProfileController::class) ->controller(ProfileController::class)
->group(function () { ->group(function () {
Route::get('/info', 'info')->middleware('auth:sanctum')->name('info'); Route::get('/info', 'info')->name('info');
Route::post('/change_password', 'changePassword')->middleware('auth:sanctum')->name('changePassword'); Route::post('/change_password', 'changePassword')->name('changePassword');
Route::post('/permissions', 'permissions')->name('permissions');
}); });
Route::prefix('users') Route::prefix('users')
@@ -42,13 +45,26 @@ Route::prefix('server')->group(function () {
->controller(CallController::class) ->controller(CallController::class)
->group(function () { ->group(function () {
Route::post('/', 'store')->name('store'); Route::post('/', 'store')->name('store');
Route::get('/list', 'list')->name('list')->middleware(['auth', 'permission:manage_calls']); Route::get('/list', 'list')->name('list')->middleware(['auth:sanctum', 'permission:manage_calls']);
Route::post('/{call}', 'update')->name('update')->middleware(['auth', 'permission:manage_calls']); Route::post('/{call}', 'update')->name('update')->middleware(['auth:sanctum', 'permission:manage_calls']);
}); });
Route::middleware('auth') Route::prefix('categories')
->middleware('auth:sanctum')
->controller(CategoryController::class) ->controller(CategoryController::class)
->group(function () { ->group(function () {
Route::get('/categories', 'list'); Route::get('/categories', 'list');
}); });
Route::middleware('auth:sanctum')
->prefix('permissions')
->controller(PermissionManagementController::class)
->group(function () {
Route::get('/', 'index')->name('index');
Route::get('list', 'list')->name('list');
Route::post('/', 'store')->name('store');
Route::get('/{permission}', 'show')->name('show');
Route::post('/{permission}', 'update')->name('update');
Route::delete('/{permission}', 'destroy')->name('destroy');
});
}); });