permissions-table.blade.php 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. @php
  2. $effects = old($inputName, $permissionEffects ?? []);
  3. $adminLocked = $adminLocked ?? false;
  4. $inheritLabel = $inheritLabel ?? 'Наследовать';
  5. @endphp
  6. <div class="accordion" id="permissionsAccordion">
  7. @foreach($permissionGroups as $group => $permissions)
  8. @php($groupId = 'permissions-' . \Illuminate\Support\Str::slug($group ?: 'other') . '-' . $loop->index)
  9. <div class="accordion-item">
  10. <h2 class="accordion-header" id="{{ $groupId }}-heading">
  11. <button class="accordion-button @if(!$loop->first) collapsed @endif" type="button"
  12. data-bs-toggle="collapse"
  13. data-bs-target="#{{ $groupId }}"
  14. aria-expanded="{{ $loop->first ? 'true' : 'false' }}"
  15. aria-controls="{{ $groupId }}">
  16. {{ $group ?: 'Прочее' }}
  17. <span class="text-muted small ms-2">{{ $permissions->count() }}</span>
  18. </button>
  19. </h2>
  20. <div id="{{ $groupId }}" class="accordion-collapse collapse @if($loop->first) show @endif"
  21. aria-labelledby="{{ $groupId }}-heading">
  22. <div class="accordion-body p-0">
  23. <div class="table-responsive">
  24. <table class="table table-sm align-middle mb-0">
  25. <thead>
  26. <tr>
  27. <th>Право</th>
  28. <th>Код</th>
  29. <th class="text-end">Доступ</th>
  30. </tr>
  31. </thead>
  32. <tbody>
  33. @foreach($permissions as $permission)
  34. @php($value = $adminLocked ? 'allow' : ($effects[$permission->id] ?? 'none'))
  35. <tr>
  36. <td>
  37. {{ $permission->name }}
  38. @if($permission->type === \App\Models\Permission::TYPE_FIELD)
  39. <span class="badge text-bg-light">поле</span>
  40. @endif
  41. </td>
  42. <td><code>{{ $permission->slug }}</code></td>
  43. <td class="text-end" style="min-width: 180px;">
  44. <select name="{{ $inputName }}[{{ $permission->id }}]"
  45. class="form-select form-select-sm"
  46. @disabled($adminLocked)>
  47. <option value="none" @selected($value === 'none')>{{ $inheritLabel }}</option>
  48. <option value="allow" @selected($value === 'allow')>Разрешить</option>
  49. <option value="deny" @selected($value === 'deny') @disabled($adminLocked)>Запретить</option>
  50. </select>
  51. @if($adminLocked)
  52. <input type="hidden" name="{{ $inputName }}[{{ $permission->id }}]" value="allow">
  53. @endif
  54. </td>
  55. </tr>
  56. @endforeach
  57. </tbody>
  58. </table>
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. @endforeach
  64. </div>