This commit is contained in:
salam committed 2025-10-15 11:47:47 +02:00
1 parent 18ce61bc9b
commit 76f4127bb2
8 files changed
+177 -64

No files matched your search

@@ -3,8 +3,11 @@
namespace App\Filament\Resources\Users\Pages;
use App\Filament\Resources\Users\UserResource;
use Filament\Actions\Action;
use Filament\Actions\CreateAction;
use Filament\Forms\Components\TextInput;
use Filament\Resources\Pages\ListRecords;
use Filament\Schemas\Components\Section;
class ListUsers extends ListRecords
{
@@ -13,6 +16,34 @@ class ListUsers extends ListRecords
protected function getHeaderActions(): array
{
return [
Action::make('inviteUser')
->label('Einladen')
->icon('phosphor-envelope')
->form([
Section::make('Jemanden einladen')
->icon('lucide-user')
->description('Nur mit dieser Einladung können sich weitere Benutzer bei diesem Konto registrieren.')
->schema([
TextInput::make('email')
->label('E-Mail')
->prefixIcon('phosphor-envelope')
->email()
->required()
->belowContent('Die Einladung ist 12 Stunden gültig.'),
]),
])
->action(function ($data) {
$invitation = Invitation::create([
'knoto_id' => auth()->user()->konto_id,
'email' => $data['email'],
]);
// @todo Add email sending here
Notification::make('invitedSuccess')
->body('Der Benutzer wurde erfolgreich eingelanden!')
->success()->send();
}),
CreateAction::make()
->icon('phosphor-file-plus')
->createAnother(false)
@@ -21,15 +21,24 @@ class UserForm
Section::make('Benutzerkonto')
->icon('lucide-user')
->schema([
TextInput::make('name')->required(),
Select::make('gender')
->prefixIcon('phosphor-gender-neuter')
->label('Geschlecht')
->options([
'Herr' => 'Herr',
'Frau' => 'Frau',
'Non-binary' => 'Non-binary',
])
->required(),
TextInput::make('name')
->prefixIcon('phosphor-user')
->required(),
TextInput::make('email')->email()
->required()
->prefixIcon('phosphor-envelope')
->label('E-Mail'),
]),
Section::make('Sicherheit')
->icon('lucide-lock')
->schema([
TextInput::make('password')
->prefixIcon('phosphor-lock')
->label('Passwort')
->password() // Masks the input
->required()
@@ -38,19 +47,22 @@ class UserForm
->dehydrateStateUsing(fn ($state) => bcrypt($state)) // Hashes the password before saving
->label('Password'),
TextInput::make('password_confirmation')
->prefixIcon('phosphor-lock')
->password() // Masks the input
->required()
->same('password') // Validates that this matches the 'password' field
->label('Passwort Bestätigen'),
Select::make('roles')
->label('Rolle')
->prefixIcon('phosphor-gear')
->aboveContent('Nur für SuperAdmin sichtbare')
->visible(fn () => auth()->user()->hasRole('super_admin'))
->relationship('roles', 'name')
->multiple()
->preload()
->searchable(),
]),
Select::make('roles')
->label('Rolle')
->visible(fn () => auth()->user()->hasRole('super_admin'))
->relationship('roles', 'name')
->multiple()
->preload()
->searchable(),
])->columns(1);
}
}