mirror of
https://github.com/pelican-dev/panel.git
synced 2025-05-20 00:34:44 +02:00
User adjustments
This commit is contained in:
parent
1728cbf28b
commit
2b172e6d8b
@ -27,13 +27,16 @@ class UserResource extends Resource
|
|||||||
->schema([
|
->schema([
|
||||||
Forms\Components\TextInput::make('username')->required()->maxLength(191),
|
Forms\Components\TextInput::make('username')->required()->maxLength(191),
|
||||||
Forms\Components\TextInput::make('email')->email()->required()->maxLength(191),
|
Forms\Components\TextInput::make('email')->email()->required()->maxLength(191),
|
||||||
Forms\Components\TextInput::make('name_first')->maxLength(191),
|
Forms\Components\TextInput::make('name_first')->maxLength(191)->label('First Name'),
|
||||||
Forms\Components\TextInput::make('name_last')->maxLength(191),
|
Forms\Components\TextInput::make('name_last')->maxLength(191)->label('Last Name'),
|
||||||
Forms\Components\TextInput::make('password')->password()->columnSpanFull(),
|
Forms\Components\TextInput::make('password')->password()->columnSpanFull(),
|
||||||
|
Forms\Components\Hidden::make('skipValidation')->default(true),
|
||||||
Forms\Components\Select::make('language')->required()->default('en')
|
Forms\Components\Select::make('language')->required()->default('en')
|
||||||
->options(fn (User $user) => $user->getAvailableLanguages()),
|
->options(fn (User $user) => $user->getAvailableLanguages()),
|
||||||
Forms\Components\Toggle::make('root_admin')->required()->default(0)
|
Forms\Components\Toggle::make('root_admin')
|
||||||
->disabled(fn () => User::where('root_admin', true)->count() <= 1),
|
->required()
|
||||||
|
->default(false),
|
||||||
|
// ->disabled(fn () => User::where('root_admin', true)->count() <= 1),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,11 +55,18 @@ class UserResource extends Resource
|
|||||||
->searchable(),
|
->searchable(),
|
||||||
Tables\Columns\TextColumn::make('username')
|
Tables\Columns\TextColumn::make('username')
|
||||||
->searchable(),
|
->searchable(),
|
||||||
Tables\Columns\TextColumn::make('email')->searchable(),
|
Tables\Columns\TextColumn::make('email')
|
||||||
|
->searchable()
|
||||||
|
->icon('tabler-mail'),
|
||||||
Tables\Columns\TextColumn::make('name')
|
Tables\Columns\TextColumn::make('name')
|
||||||
->hidden()
|
->hidden()
|
||||||
->searchable(),
|
->searchable(),
|
||||||
Tables\Columns\IconColumn::make('root_admin')->label('Admin')->boolean()->sortable(),
|
Tables\Columns\IconColumn::make('root_admin')
|
||||||
|
->label('Admin')
|
||||||
|
->boolean()
|
||||||
|
->trueIcon('tabler-adjustments-check')
|
||||||
|
->falseIcon('tabler-adjustments-cancel')
|
||||||
|
->sortable(),
|
||||||
Tables\Columns\IconColumn::make('use_totp')->label('2FA')
|
Tables\Columns\IconColumn::make('use_totp')->label('2FA')
|
||||||
->icon(fn (User $user) => $user->use_totp ? 'tabler-lock' : 'tabler-lock-open-off')
|
->icon(fn (User $user) => $user->use_totp ? 'tabler-lock' : 'tabler-lock-open-off')
|
||||||
->boolean()->sortable(),
|
->boolean()->sortable(),
|
||||||
|
@ -7,7 +7,7 @@ use App\Rules\Username;
|
|||||||
use App\Facades\Activity;
|
use App\Facades\Activity;
|
||||||
use Filament\Models\Contracts\FilamentUser;
|
use Filament\Models\Contracts\FilamentUser;
|
||||||
use Filament\Panel;
|
use Filament\Panel;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Str;
|
||||||
use Illuminate\Validation\Rules\In;
|
use Illuminate\Validation\Rules\In;
|
||||||
use Illuminate\Auth\Authenticatable;
|
use Illuminate\Auth\Authenticatable;
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
@ -141,18 +141,20 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac
|
|||||||
'language' => 'en',
|
'language' => 'en',
|
||||||
'use_totp' => false,
|
'use_totp' => false,
|
||||||
'totp_secret' => null,
|
'totp_secret' => null,
|
||||||
|
'name_first' => '',
|
||||||
|
'name_last' => '',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Rules verifying that the data being stored matches the expectations of the database.
|
* Rules verifying that the data being stored matches the expectations of the database.
|
||||||
*/
|
*/
|
||||||
public static array $validationRules = [
|
public static array $validationRules = [
|
||||||
'uuid' => 'required|string|size:36|unique:users,uuid',
|
'uuid' => 'nullable|string|size:36|unique:users,uuid',
|
||||||
'email' => 'required|email|between:1,191|unique:users,email',
|
'email' => 'required|email|between:1,191|unique:users,email',
|
||||||
'external_id' => 'sometimes|nullable|string|max:191|unique:users,external_id',
|
'external_id' => 'sometimes|nullable|string|max:191|unique:users,external_id',
|
||||||
'username' => 'required|between:1,191|unique:users,username',
|
'username' => 'required|between:1,191|unique:users,username',
|
||||||
'name_first' => 'required|string|between:1,191',
|
'name_first' => 'nullable|string|between:0,191',
|
||||||
'name_last' => 'required|string|between:1,191',
|
'name_last' => 'nullable|string|between:0,191',
|
||||||
'password' => 'sometimes|nullable|string',
|
'password' => 'sometimes|nullable|string',
|
||||||
'root_admin' => 'boolean',
|
'root_admin' => 'boolean',
|
||||||
'language' => 'string',
|
'language' => 'string',
|
||||||
@ -172,6 +174,12 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac
|
|||||||
|
|
||||||
protected static function booted(): void
|
protected static function booted(): void
|
||||||
{
|
{
|
||||||
|
static::creating(function (self $user) {
|
||||||
|
$user->uuid = Str::uuid();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
static::deleting(function (self $user) {
|
static::deleting(function (self $user) {
|
||||||
throw_if($user->servers()->count() > 0, new DisplayException(__('admin/user.exceptions.user_has_servers')));
|
throw_if($user->servers()->count() > 0, new DisplayException(__('admin/user.exceptions.user_has_servers')));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user