feat:implement admin permissions for admin side
This commit is contained in:
@@ -1,12 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Admin\AdminStoreRequest;
|
||||
use App\Http\Requests\Admin\AdminUpdateRequest;
|
||||
use App\Models\Admin;
|
||||
use App\Models\Permission;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
@@ -61,10 +59,7 @@ class AdminController extends Controller
|
||||
|
||||
public function create()
|
||||
{
|
||||
$permissions = Permission::query()
|
||||
->orderBy('id')
|
||||
->get();
|
||||
return view('admin.admins.create', compact('permissions'));
|
||||
return view('admin.admins.create');
|
||||
}
|
||||
|
||||
public function store(AdminStoreRequest $request)
|
||||
@@ -72,11 +67,20 @@ class AdminController extends Controller
|
||||
$inputs = $request->validated();
|
||||
|
||||
try {
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$inputs['password'] = Hash::make($inputs['password']);
|
||||
|
||||
Admin::create($inputs);
|
||||
$admin = Admin::create($inputs);
|
||||
|
||||
|
||||
$admin->permission()->create([
|
||||
'admin_view' => $request->boolean('admin_view'),
|
||||
'admin_create' => $request->boolean('admin_create'),
|
||||
'admin_edit' => $request->boolean('admin_edit'),
|
||||
'admin_delete' => $request->boolean('admin_delete'),
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
@@ -95,31 +99,51 @@ class AdminController extends Controller
|
||||
|
||||
return redirect()
|
||||
->route('admin.admins.index')
|
||||
->withErrors([
|
||||
'success' => 'عملیات با موفقیت انجام شد'
|
||||
]);
|
||||
->with('success', 'مدیر با موفقیت ایجاد شد.');
|
||||
}
|
||||
|
||||
public function edit(Admin $admin)
|
||||
{
|
||||
return view('admin.admins.edit', compact('admin'));
|
||||
$adminPermission = $admin->permission;
|
||||
|
||||
return view('admin.admins.edit', compact(
|
||||
'admin',
|
||||
'adminPermission'
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
public function update(AdminUpdateRequest $request, Admin $admin)
|
||||
{
|
||||
$inputs = $request->validated();
|
||||
|
||||
try {
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
if (!empty($inputs['password'])) {
|
||||
|
||||
$inputs['password'] = Hash::make($inputs['password']);
|
||||
|
||||
} else {
|
||||
|
||||
unset($inputs['password']);
|
||||
}
|
||||
|
||||
$admin->update($inputs);
|
||||
|
||||
$admin->permission()->updateOrCreate(
|
||||
[
|
||||
'admin_id' => $admin->id,
|
||||
],
|
||||
[
|
||||
'admin_view' => $request->boolean('admin_view'),
|
||||
'admin_create' => $request->boolean('admin_create'),
|
||||
'admin_edit' => $request->boolean('admin_edit'),
|
||||
'admin_delete' => $request->boolean('admin_delete'),
|
||||
]
|
||||
);
|
||||
|
||||
DB::commit();
|
||||
|
||||
} catch (\Exception $exception) {
|
||||
@@ -137,21 +161,38 @@ class AdminController extends Controller
|
||||
|
||||
return redirect()
|
||||
->route('admin.admins.index')
|
||||
->withErrors([
|
||||
'success' => 'عملیات با موفقیت انجام شد'
|
||||
]);
|
||||
->with('success', 'عملیات با موفقیت انجام شد.');
|
||||
}
|
||||
|
||||
public function destroy(Admin $admin)
|
||||
{
|
||||
try {
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$admin->permission()->delete();
|
||||
|
||||
$admin->delete();
|
||||
|
||||
return redirect()
|
||||
->route('admin.admins.index')
|
||||
DB::commit();
|
||||
|
||||
} catch (\Exception $exception) {
|
||||
|
||||
DB::rollBack();
|
||||
|
||||
Log::error($exception);
|
||||
|
||||
return back()
|
||||
->withErrors([
|
||||
'success' => 'عملیات با موفقیت انجام شد'
|
||||
'general' => 'خطایی در حذف مدیر رخ داده است.'
|
||||
]);
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('admin.admins.index')
|
||||
->with('success', 'مدیر با موفقیت حذف شد.');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -56,13 +56,8 @@ class Admin extends Authenticatable
|
||||
}
|
||||
|
||||
|
||||
public function permissions()
|
||||
public function permission()
|
||||
{
|
||||
return $this->belongsToMany(
|
||||
Permission::class,
|
||||
'admin_permission',
|
||||
'admin_id',
|
||||
'permission_id'
|
||||
);
|
||||
return $this->hasOne(AdminPermission::class);
|
||||
}
|
||||
}
|
||||
|
||||
+37
-6
@@ -3,6 +3,7 @@
|
||||
use App\Http\Controllers\Admin\AdminController;
|
||||
use App\Http\Controllers\Admin\AuthController;
|
||||
use App\Http\Controllers\Admin\DashboardController;
|
||||
use App\Http\Controllers\FlightController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::prefix('admin')->name('admin.')->group(function () {
|
||||
@@ -44,24 +45,54 @@ Route::prefix('admin')->name('admin.')->group(function () {
|
||||
|
||||
Route::get('/', 'index')
|
||||
->name('index')
|
||||
->middleware('admin.permission:admins.index');
|
||||
->middleware('admin.permission:admin_view');
|
||||
|
||||
Route::get('create', 'create')
|
||||
->name('create')
|
||||
->middleware('admin.permission:admins.create');
|
||||
->middleware('admin.permission:admin_create');
|
||||
|
||||
Route::post('store', 'store')
|
||||
->name('store')
|
||||
->middleware('admin.permission:admins.create');
|
||||
->middleware('admin.permission:admin_create');
|
||||
|
||||
Route::prefix('{admin}')->group(function () {
|
||||
|
||||
Route::get('edit', 'edit')
|
||||
->name('edit')
|
||||
->middleware('admin.permission:admins.edit');
|
||||
->middleware('admin.permission:admin_edit');
|
||||
|
||||
Route::put('update', 'update')
|
||||
->name('update')
|
||||
->middleware('admin.permission:admins.edit');
|
||||
->middleware('admin.permission:admin_edit');
|
||||
|
||||
Route::delete('destroy', 'destroy')
|
||||
->name('destroy')
|
||||
->middleware('admin.permission:admins.delete');
|
||||
->middleware('admin.permission:admin_delete');
|
||||
|
||||
});
|
||||
});
|
||||
Route::prefix('users')
|
||||
->name('users.')
|
||||
->controller(UserController::class)
|
||||
->group(function () {
|
||||
|
||||
Route::get('/', 'index')
|
||||
->name('index')
|
||||
->middleware('admin.permission:user_view');
|
||||
|
||||
Route::prefix('{user}')->group(function () {
|
||||
|
||||
Route::get('edit', 'edit')
|
||||
->name('edit')
|
||||
->middleware('admin.permission:user_edit');
|
||||
|
||||
Route::put('update', 'update')
|
||||
->name('update')
|
||||
->middleware('admin.permission:user_edit');
|
||||
|
||||
Route::delete('destroy', 'destroy')
|
||||
->name('destroy')
|
||||
->middleware('admin.permission:user_delete');
|
||||
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user