938e704a67
Per request:
- Migration: add nullable 'description' to the roles table.
- RoleManager Livewire component + view at /admin/roles:
* Roles list table with per-row checkboxes for bulk selection (+ select-all)
and a 'Delete selected' bulk action (protected roles skipped).
* 'New role' opens a modal form with just Name + Description (and permission
checkboxes to assign).
* Per-row View / Edit / Delete buttons (View modal shows description,
counts and assigned permissions).
- Admin role stays protected (no rename/delete/lose 'manage all').
- /admin/users links to the new Roles screen; the phase-1 permission matrix
stays available via a 'Matrix view' link.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 lines
1011 B
PHP
27 lines
1011 B
PHP
<x-app-layout>
|
|
<x-slot name="header">
|
|
<div class="flex items-center justify-between">
|
|
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
|
|
{{ __('Users') }}
|
|
</h2>
|
|
|
|
<div class="flex items-center gap-2">
|
|
<a href="{{ route('admin.roles') }}" class="btn btn-outline btn-sm gap-1" wire:navigate>
|
|
<x-heroicon-o-shield-check class="w-4 h-4" /> {{ __('Roles & permissions') }}
|
|
</a>
|
|
<a href="{{ route('admin.users.create') }}" class="btn btn-primary btn-sm gap-1" wire:navigate>
|
|
<x-heroicon-o-plus class="w-4 h-4" /> {{ __('New user') }}
|
|
</a>
|
|
</div>
|
|
|
|
</div>
|
|
</x-slot>
|
|
|
|
<div class="py-12">
|
|
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
|
|
<div class="bg-white rounded-lg shadow p-6">
|
|
<livewire:user-table />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</x-app-layout> |