From bff0c7ea4d1e4c995a9c9c1d6d86e5a0e72b9714 Mon Sep 17 00:00:00 2001 From: hatame Date: Tue, 18 Aug 2026 14:07:35 +0330 Subject: [PATCH] git add . git commit "Implement admin roles and permissions system" --- .../Controllers/Admin/AdminController.php | 6 +- app/Http/Controllers/RoleController.php | 31 ++++ app/Models/AdminRole.php | 25 ++-- resources/views/admin/admins/edit.blade.php | 30 ++++ .../views/admin/layouts/sidebar.blade.php | 7 + resources/views/admins/Roles/index.blade.php | 134 ++++++++++++++++++ .../views/admins/Roles/permissions.blade.php | 75 ++++++++++ routes/admin.php | 11 ++ 8 files changed, 307 insertions(+), 12 deletions(-) create mode 100644 app/Http/Controllers/RoleController.php create mode 100644 resources/views/admins/Roles/index.blade.php create mode 100644 resources/views/admins/Roles/permissions.blade.php diff --git a/app/Http/Controllers/Admin/AdminController.php b/app/Http/Controllers/Admin/AdminController.php index b72b41d..8d6975b 100644 --- a/app/Http/Controllers/Admin/AdminController.php +++ b/app/Http/Controllers/Admin/AdminController.php @@ -6,7 +6,7 @@ use App\Http\Controllers\Controller; use App\Http\Requests\Admin\AdminUpdateRequest; use App\Http\Requests\AdminStoreRequest; use App\Models\Admin; -use Illuminate\Http\Request; +use App\Models\Role; use Illuminate\Support\Facades\Hash; class AdminController extends Controller @@ -40,7 +40,9 @@ class AdminController extends Controller public function edit(Admin $admin) { - return view('admin.admins.edit',compact('admin')); + $roles = Role::all(); + + return view('admin.admins.edit',compact('admin','roles')); } public function update( AdminUpdateRequest $request,Admin $admin) { diff --git a/app/Http/Controllers/RoleController.php b/app/Http/Controllers/RoleController.php new file mode 100644 index 0000000..85c5672 --- /dev/null +++ b/app/Http/Controllers/RoleController.php @@ -0,0 +1,31 @@ +permissions()->sync($request->permissions ?? []); + + return redirect()->back()->with('success','دسترسی‌ها با موفقیت ذخیره شد'); + } + + +} + diff --git a/app/Models/AdminRole.php b/app/Models/AdminRole.php index 4d4d9e0..4764dd7 100644 --- a/app/Models/AdminRole.php +++ b/app/Models/AdminRole.php @@ -10,10 +10,10 @@ use Illuminate\Database\Eloquent\Model; /** * Class AdminRole - * + * * @property int $admin_id * @property int $role_id - * + * * @property Admin $admin * @property Role $role * @@ -31,13 +31,18 @@ class AdminRole extends Model 'role_id' => 'int' ]; - public function admin() - { - return $this->belongsTo(Admin::class); - } + public function roles() + { + return $this->belongsToMany(Role::class, 'admin_roles'); + } - public function role() - { - return $this->belongsTo(Role::class); - } + + public function hasPermission($permission) + { + return $this->roles() + ->whereHas('permissions', function ($query) use ($permission) { + $query->where('slug', $permission); + }) + ->exists(); + } } diff --git a/resources/views/admin/admins/edit.blade.php b/resources/views/admin/admins/edit.blade.php index ee510e0..8e8c317 100644 --- a/resources/views/admin/admins/edit.blade.php +++ b/resources/views/admin/admins/edit.blade.php @@ -11,7 +11,37 @@

ویرایش مدیر

+
+ + + + @foreach($roles as $role) + +
+ + roles->contains($role->id) + ) + > + + + +
+ + @endforeach + +
diff --git a/resources/views/admin/layouts/sidebar.blade.php b/resources/views/admin/layouts/sidebar.blade.php index 20ca1d0..5281211 100644 --- a/resources/views/admin/layouts/sidebar.blade.php +++ b/resources/views/admin/layouts/sidebar.blade.php @@ -31,6 +31,13 @@ +