From f7a98dd2408f23e16dc671e316ed1625bc351a5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anna-Sara=20S=C3=A9lea?= Date: Sun, 19 Jan 2025 10:30:47 +0100 Subject: [PATCH] User: migration, model, filament --- app/Filament/Resources/UserResource.php | 88 +++++++++++++++++++ .../UserResource/Pages/CreateUser.php | 12 +++ .../Resources/UserResource/Pages/EditUser.php | 19 ++++ .../UserResource/Pages/ListUsers.php | 19 ++++ app/Models/User.php | 11 ++- ...1_16_073531_add_isadmin_to_users_table.php | 28 ++++++ 6 files changed, 171 insertions(+), 6 deletions(-) create mode 100644 app/Filament/Resources/UserResource.php create mode 100644 app/Filament/Resources/UserResource/Pages/CreateUser.php create mode 100644 app/Filament/Resources/UserResource/Pages/EditUser.php create mode 100644 app/Filament/Resources/UserResource/Pages/ListUsers.php create mode 100644 database/migrations/2025_01_16_073531_add_isadmin_to_users_table.php diff --git a/app/Filament/Resources/UserResource.php b/app/Filament/Resources/UserResource.php new file mode 100644 index 0000000..65daaba --- /dev/null +++ b/app/Filament/Resources/UserResource.php @@ -0,0 +1,88 @@ +schema([ + Forms\Components\TextInput::make('name') + ->required() + ->maxLength(255), + Forms\Components\TextInput::make('email') + ->email() + ->required() + ->maxLength(255), + Forms\Components\DateTimePicker::make('email_verified_at'), + Forms\Components\TextInput::make('password') + ->password() + ->required() + ->maxLength(255), + Forms\Components\Toggle::make('is_admin') + ->required(), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + Tables\Columns\TextColumn::make('name') + ->label('Namn') + ->searchable(), + Tables\Columns\TextColumn::make('email') + ->searchable(), + Tables\Columns\IconColumn::make('is_admin') + ->boolean(), + ]) + ->filters([ + // + ]) + ->actions([ + Tables\Actions\EditAction::make(), + ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListUsers::route('/'), + 'create' => Pages\CreateUser::route('/create'), + 'edit' => Pages\EditUser::route('/{record}/edit'), + ]; + } + + public static function canViewAny(): bool + { + return auth()->user()->is_admin==true; + } +} diff --git a/app/Filament/Resources/UserResource/Pages/CreateUser.php b/app/Filament/Resources/UserResource/Pages/CreateUser.php new file mode 100644 index 0000000..73aa46d --- /dev/null +++ b/app/Filament/Resources/UserResource/Pages/CreateUser.php @@ -0,0 +1,12 @@ +hasMany(Game::class); + return $this->belongsToMany(Reserveditem::class, 'user_reserveditems')->withTimestamps(); } } diff --git a/database/migrations/2025_01_16_073531_add_isadmin_to_users_table.php b/database/migrations/2025_01_16_073531_add_isadmin_to_users_table.php new file mode 100644 index 0000000..596bae1 --- /dev/null +++ b/database/migrations/2025_01_16_073531_add_isadmin_to_users_table.php @@ -0,0 +1,28 @@ +boolean('is_admin')->default(false); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +};