fix: update admin management

This commit is contained in:
2026-08-20 08:25:43 +03:30
parent ecb2e9ff08
commit f9dd90f1ac
3 changed files with 181 additions and 75 deletions
+20 -13
View File
@@ -1,6 +1,5 @@
<?php <?php
namespace App\Http\Controllers\Admin; namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
@@ -14,19 +13,17 @@ class AdminController extends Controller
{ {
public function index() public function index()
{ {
$admins = Admin::query() $admins = Admin::with('permissions')
->with('permissions')
->latest() ->latest()
->paginate(10); ->paginate(10);
return view('admin.admins.index', compact('admins')); return view('admin.admins.index', compact('admins'));
} }
public function create() public function create()
{ {
$permissions = Permission::query() $permissions = Permission::orderBy('id')->get();
->orderBy('name')
->get();
return view( return view(
'admin.admins.create', 'admin.admins.create',
@@ -34,6 +31,7 @@ class AdminController extends Controller
); );
} }
public function store(AdminStoreRequest $request) public function store(AdminStoreRequest $request)
{ {
$data = $request->validated(); $data = $request->validated();
@@ -53,11 +51,10 @@ class AdminController extends Controller
->with('success', 'مدیر با موفقیت ایجاد شد.'); ->with('success', 'مدیر با موفقیت ایجاد شد.');
} }
public function edit(Admin $admin) public function edit(Admin $admin)
{ {
$permissions = Permission::query() $permissions = Permission::orderBy('id')->get();
->orderBy('name')
->get();
$admin->load('permissions'); $admin->load('permissions');
@@ -67,8 +64,11 @@ class AdminController extends Controller
); );
} }
public function update(AdminUpdateRequest $request, Admin $admin)
{ public function update(
AdminUpdateRequest $request,
Admin $admin
) {
$data = $request->validated(); $data = $request->validated();
$permissions = $data['permissions'] ?? []; $permissions = $data['permissions'] ?? [];
@@ -76,9 +76,15 @@ class AdminController extends Controller
unset($data['permissions']); unset($data['permissions']);
if (!empty($data['password'])) { if (!empty($data['password'])) {
$data['password'] = Hash::make($data['password']);
$data['password'] = Hash::make(
$data['password']
);
} else { } else {
unset($data['password']); unset($data['password']);
} }
$admin->update($data); $admin->update($data);
@@ -87,9 +93,10 @@ class AdminController extends Controller
return redirect() return redirect()
->route('admin.admins.index') ->route('admin.admins.index')
->with('success', 'اطلاعات مدیر با موفقیت ویرایش شد.'); ->with('success', 'مدیر با موفقیت ویرایش شد.');
} }
public function destroy(Admin $admin) public function destroy(Admin $admin)
{ {
$admin->permissions()->detach(); $admin->permissions()->detach();
+119 -45
View File
@@ -270,13 +270,14 @@
{{-- دسترسی‌ها --}} {{-- دسترسی‌ها --}}
<div class="col-xl-4"> <div class="col-xl-4">
<div class="card custom-card"> <div class="card custom-card">
<div class="card-header"> <div class="card-header">
<div class="d-flex justify-content-between align-items-center">
<div> <div>
<div class="card-title mb-1"> <div class="card-title mb-1">
@@ -291,62 +292,42 @@
</div> </div>
</div>
<div class="card-body"> <div class="card-body">
@php @if($permissions->count())
$selectedPermissions = old( <div class="d-flex flex-column gap-3">
'permissions',
$admin->permissions->pluck('id')->toArray()
);
@endphp @foreach($permissions as $permission)
<div class="form-check">
@error('permissions') <input
<div class="alert alert-danger py-2">
{{ $message }}
</div>
@enderror
@forelse($permissions as $permission)
<div class="form-check form-check-lg mb-3">
<input class="form-check-input"
type="checkbox" type="checkbox"
class="form-check-input"
name="permissions[]" name="permissions[]"
value="{{ $permission->id }}" value="{{ $permission->id }}"
id="permission_{{ $permission->id }}" id="permission_{{ $permission->id }}"
@checked(in_array( {{ $admin->permissions->contains($permission->id) ? 'checked' : '' }}
$permission->id, >
$selectedPermissions
))>
<label class="form-check-label" <label
for="permission_{{ $permission->id }}"> class="form-check-label"
for="permission_{{ $permission->id }}"
<span class="fw-semibold"> >
{{ $permission->name }} {{ $permission->name }}
</span>
@if($permission->description)
<small class="text-muted d-block mt-1">
{{ $permission->description }}
</small>
@endif
</label> </label>
</div> </div>
@empty @endforeach
</div>
@else
<div class="text-center text-muted py-4"> <div class="text-center text-muted py-4">
@@ -356,7 +337,7 @@
</div> </div>
@endforelse @endif
</div> </div>
@@ -364,6 +345,99 @@
</div> </div>
{{-- <div class="col-xl-4">--}}
{{-- <div class="card custom-card">--}}
{{-- <div class="card-header">--}}
{{-- <div>--}}
{{-- <div class="card-title mb-1">--}}
{{-- سطح دسترسی--}}
{{-- </div>--}}
{{-- <small class="text-muted">--}}
{{-- دسترسی‌های مدیر را مدیریت کنید.--}}
{{-- </small>--}}
{{-- </div>--}}
{{-- </div>--}}
{{-- <div class="card-body">--}}
{{-- @php--}}
{{-- $selectedPermissions = old(--}}
{{-- 'permissions',--}}
{{-- $admin->permissions->pluck('id')->toArray()--}}
{{-- );--}}
{{-- @endphp--}}
{{-- @error('permissions')--}}
{{-- <div class="alert alert-danger py-2">--}}
{{-- {{ $message }}--}}
{{-- </div>--}}
{{-- @enderror--}}
{{-- @forelse($permissions as $permission)--}}
{{-- <div class="form-check form-check-lg mb-3">--}}
{{-- <input class="form-check-input"--}}
{{-- type="checkbox"--}}
{{-- name="permissions[]"--}}
{{-- value="{{ $permission->id }}"--}}
{{-- id="permission_{{ $permission->id }}"--}}
{{-- @checked(in_array(--}}
{{-- $permission->id,--}}
{{-- $selectedPermissions--}}
{{-- ))>--}}
{{-- <label class="form-check-label"--}}
{{-- for="permission_{{ $permission->id }}">--}}
{{-- <span class="fw-semibold">--}}
{{-- {{ $permission->name }}--}}
{{-- </span>--}}
{{-- @if($permission->description)--}}
{{-- <small class="text-muted d-block mt-1">--}}
{{-- {{ $permission->description }}--}}
{{-- </small>--}}
{{-- @endif--}}
{{-- </label>--}}
{{-- </div>--}}
{{-- @empty--}}
{{-- <div class="text-center text-muted py-4">--}}
{{-- <i class="ri-shield-keyhole-line fs-2 d-block mb-2"></i>--}}
{{-- هنوز دسترسی‌ای تعریف نشده است.--}}
{{-- </div>--}}
{{-- @endforelse--}}
{{-- </div>--}}
{{-- </div>--}}
{{-- </div>--}}
</div> </div>
@@ -380,17 +454,17 @@
<i class="ri-information-line me-1"></i> <i class="ri-information-line me-1"></i>
آخرین ویرایش: آخرین ویرایش:
@if($admin->updated_at) @if($admin->updated_at)
<td>
{{ $admin->updated_at->toJalali()->format('Y/m/d H:i') }}
</td>
<td>{{ $type->updated_at ? $type->updated_at->toJalali()->format('Y/m/d H:i') : '-' }}</td>
@else @else
- <td>-</td>
@endif @endif
</div> </div>
+31 -6
View File
@@ -101,13 +101,38 @@
</td> </td>
{{-- دسترسی‌ها --}} {{-- دسترسی‌ها --}}
<td style="min-width: 200px; max-width: 280px; white-space: normal;"> <td>
@forelse($admin->permissions as $permission)
<span class="badge bg-primary-subtle text-primary mb-1">{{ $permission->name }}</span> @if($admin->permissions->count())
@empty
<span class="text-muted fs-12">بدون دسترسی</span> <div class="d-flex flex-wrap gap-1">
@endforelse
@foreach($admin->permissions as $permission)
<span class="badge bg-light text-dark border">
{{ $permission->name }}
</span>
@endforeach
</div>
@else
<span class="text-muted">
بدون دسترسی
</span>
@endif
</td> </td>
{{-- <td style="min-width: 200px; max-width: 280px; white-space: normal;">--}}
{{-- @forelse($admin->permissions as $permission)--}}
{{-- <span class="badge bg-primary-subtle text-primary mb-1">{{ $permission->name }}</span>--}}
{{-- @empty--}}
{{-- <span class="text-muted fs-12">بدون دسترسی</span>--}}
{{-- @endforelse--}}
{{-- </td>--}}
{{-- وضعیت --}} {{-- وضعیت --}}
<td> <td>