81 lines
3.3 KiB
PHP
81 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\SuperAdmin\Pages\Auth;
|
|
|
|
use Filament\Auth\Pages\EditProfile as BaseEditProfile;
|
|
use Filament\Facades\Filament;
|
|
use Filament\Forms\Components\Select;
|
|
use Filament\Forms\Components\TextInput;
|
|
use Filament\Schemas\Components\Component;
|
|
use Filament\Schemas\Components\Livewire;
|
|
use Filament\Schemas\Components\Section;
|
|
use Filament\Schemas\Components\Utilities\Get;
|
|
use Filament\Schemas\Schema;
|
|
|
|
class EditProfile extends BaseEditProfile
|
|
{
|
|
protected function getPasswordConfirmationFormComponent(): Component
|
|
{
|
|
return TextInput::make('passwordConfirmation')
|
|
->label(__('filament-panels::auth/pages/edit-profile.form.password_confirmation.label'))
|
|
->validationAttribute(__('filament-panels::auth/pages/edit-profile.form.password_confirmation.validation_attribute'))
|
|
->password()
|
|
->autocomplete('new-password')
|
|
->revealable(filament()->arePasswordsRevealable())
|
|
->required()
|
|
->visible(fn (Get $get): bool => filled($get('password')))
|
|
->dehydrated(false);
|
|
}
|
|
|
|
protected function getCurrentPasswordFormComponent(): Component
|
|
{
|
|
return TextInput::make('currentPassword')
|
|
->label(__('filament-panels::auth/pages/edit-profile.form.current_password.label'))
|
|
->validationAttribute(__('filament-panels::auth/pages/edit-profile.form.current_password.validation_attribute'))
|
|
->belowContent(__('filament-panels::auth/pages/edit-profile.form.current_password.below_content'))
|
|
->password()
|
|
->autocomplete('current-password')
|
|
->currentPassword(guard: Filament::getAuthGuard())
|
|
->revealable(filament()->arePasswordsRevealable())
|
|
->required()
|
|
->visible(fn (Get $get): bool => filled($get('password')))
|
|
->dehydrated(false);
|
|
}
|
|
|
|
public function form(Schema $schema): Schema
|
|
{
|
|
return $schema
|
|
->schema([
|
|
Section::make('Profile')
|
|
->schema([
|
|
$this->getNameFormComponent(),
|
|
$this->getEmailFormComponent(),
|
|
TextInput::make('username')
|
|
->required()
|
|
->unique(ignoreRecord: true)
|
|
->maxLength(255),
|
|
Select::make('preferred_locale')
|
|
->options([
|
|
'de' => 'Deutsch',
|
|
'en' => 'English',
|
|
])
|
|
->default('de')
|
|
->required(),
|
|
])
|
|
->columns(2),
|
|
Section::make('Security')
|
|
->schema([
|
|
$this->getPasswordFormComponent(),
|
|
$this->getPasswordConfirmationFormComponent(),
|
|
$this->getCurrentPasswordFormComponent(),
|
|
])
|
|
->columns(1),
|
|
Section::make('Support API Tokens')
|
|
->description('Manage bearer tokens for external support tooling.')
|
|
->schema([
|
|
Livewire::make('support-api-token-manager'),
|
|
]),
|
|
]);
|
|
}
|
|
}
|