@extends('layouts.admin') @section('content')

{{ $title }}

{{ $role->name ?: __('New Role') }} @if($isSystemLevel) • {{ __('System Role') }} @endif
@if(auth()->user()->roles->contains('id', $role->id))

{{ __('Modifying your own administrative permissions may result in losing access to certain system functions.') }}

@endif @php $isSubAccountRole = request()->routeIs('*.sub-account-roles.*'); if ($role->exists) { $action = route($isSubAccountRole ? 'admin.data-config.sub-account-roles.update' : 'admin.permission.roles.update', $role->id); $method = 'PUT'; } else { $action = route($isSubAccountRole ? 'admin.data-config.sub-account-roles.store' : 'admin.permission.roles.store'); $method = 'POST'; } @endphp
@csrf @if($method === 'PUT') @method('PUT') @endif
@foreach($all_permissions as $group => $permissions) @php // 如果非系統角色,過濾掉敏感權限 if (!$isSystemLevel && $group === 'menu') { $permissions = $permissions->filter(function($p) { return !str_starts_with($p->name, 'menu.basic') && !str_starts_with($p->name, 'menu.permissions'); }); } $groupId = 'group-' . $group; $groupPermissions = $permissions->pluck('name')->toArray(); @endphp

{{ __($group == 'menu' ? 'Menu Permissions' : 'Other Permissions') }}

@if($group === 'menu')
@php $parents = $permissions->filter(fn($p) => count(explode('.', $p->name)) === 2); @endphp @foreach($parents as $parent) @php $children = $permissions->filter(function($p) use ($parent) { if ($p->name === $parent->name) return false; // 取得基礎前綴,例如 menu.basic-settings -> basic, menu.permission -> permission $parentSlug = explode('.', $parent->name)[1] ?? ''; $parentBase = rtrim(str_replace('-settings', '', $parentSlug), 's'); $childSlug = explode('.', $p->name)[1] ?? ''; return str_starts_with($childSlug, $parentBase); }); @endphp
@if($children->count() > 0) @endif

{{ __($parent->name) }}

{{ $parent->name }}
@if($children->count() > 0)
@foreach($children as $child) @endforeach
@endif
@endforeach
@else
@foreach($permissions as $perm) @endforeach
@endif
@endforeach
{{ __('Cancel') }}
@endsection @section('scripts') @endsection