permissions-table.blade.php 4.2 KB

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