Skip to content

Commit 443852e

Browse files
committed
Initial user resource
1 parent e95b166 commit 443852e

File tree

4 files changed

+179
-0
lines changed

4 files changed

+179
-0
lines changed
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
<?php
2+
3+
namespace App\Filament\Resources;
4+
5+
use App\Filament\Resources\UserResource\Pages;
6+
use App\Filament\Resources\UserResource\RelationManagers;
7+
use App\Models\User;
8+
use Filament\Forms;
9+
use Filament\Forms\Form;
10+
use Filament\Resources\Resource;
11+
use Filament\Tables;
12+
use Filament\Tables\Table;
13+
use Illuminate\Database\Eloquent\Builder;
14+
use Illuminate\Database\Eloquent\SoftDeletingScope;
15+
16+
class UserResource extends Resource
17+
{
18+
protected static ?string $model = User::class;
19+
20+
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
21+
22+
public static function form(Form $form): Form
23+
{
24+
return $form
25+
->schema([
26+
Forms\Components\TextInput::make('github_id')
27+
->maxLength(255),
28+
Forms\Components\TextInput::make('github_username')
29+
->maxLength(255),
30+
Forms\Components\TextInput::make('email')
31+
->email()
32+
->required()
33+
->maxLength(255),
34+
Forms\Components\TextInput::make('twitter')
35+
->maxLength(255),
36+
Forms\Components\TextInput::make('website')
37+
->maxLength(255),
38+
Forms\Components\TextInput::make('name')
39+
->required()
40+
->maxLength(255),
41+
Forms\Components\TextInput::make('username')
42+
->required()
43+
->maxLength(40),
44+
Forms\Components\TextInput::make('password')
45+
->password()
46+
->required()
47+
->maxLength(255),
48+
Forms\Components\TextInput::make('type')
49+
->required()
50+
->numeric()
51+
->default(1),
52+
Forms\Components\TextInput::make('bio')
53+
->required()
54+
->maxLength(160),
55+
Forms\Components\DateTimePicker::make('banned_at'),
56+
Forms\Components\Textarea::make('banned_reason')
57+
->columnSpanFull(),
58+
Forms\Components\DateTimePicker::make('email_verified_at'),
59+
Forms\Components\TextInput::make('allowed_notifications'),
60+
]);
61+
}
62+
63+
public static function table(Table $table): Table
64+
{
65+
return $table
66+
->columns([
67+
Tables\Columns\TextColumn::make('github_id')
68+
->searchable(),
69+
Tables\Columns\TextColumn::make('github_username')
70+
->searchable(),
71+
Tables\Columns\TextColumn::make('email')
72+
->searchable(),
73+
Tables\Columns\TextColumn::make('twitter')
74+
->searchable(),
75+
Tables\Columns\TextColumn::make('website')
76+
->searchable(),
77+
Tables\Columns\TextColumn::make('name')
78+
->searchable(),
79+
Tables\Columns\TextColumn::make('created_at')
80+
->dateTime()
81+
->sortable()
82+
->toggleable(isToggledHiddenByDefault: true),
83+
Tables\Columns\TextColumn::make('updated_at')
84+
->dateTime()
85+
->sortable()
86+
->toggleable(isToggledHiddenByDefault: true),
87+
Tables\Columns\TextColumn::make('username')
88+
->searchable(),
89+
Tables\Columns\TextColumn::make('type')
90+
->numeric()
91+
->sortable(),
92+
Tables\Columns\TextColumn::make('bio')
93+
->searchable(),
94+
Tables\Columns\TextColumn::make('banned_at')
95+
->dateTime()
96+
->sortable(),
97+
Tables\Columns\TextColumn::make('email_verified_at')
98+
->dateTime()
99+
->sortable(),
100+
])
101+
->filters([
102+
//
103+
])
104+
->actions([
105+
Tables\Actions\EditAction::make(),
106+
])
107+
->bulkActions([
108+
Tables\Actions\BulkActionGroup::make([
109+
Tables\Actions\DeleteBulkAction::make(),
110+
]),
111+
]);
112+
}
113+
114+
public static function getRelations(): array
115+
{
116+
return [
117+
//
118+
];
119+
}
120+
121+
public static function getPages(): array
122+
{
123+
return [
124+
'index' => Pages\ListUsers::route('/'),
125+
'create' => Pages\CreateUser::route('/create'),
126+
'edit' => Pages\EditUser::route('/{record}/edit'),
127+
];
128+
}
129+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace App\Filament\Resources\UserResource\Pages;
4+
5+
use App\Filament\Resources\UserResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\CreateRecord;
8+
9+
class CreateUser extends CreateRecord
10+
{
11+
protected static string $resource = UserResource::class;
12+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Filament\Resources\UserResource\Pages;
4+
5+
use App\Filament\Resources\UserResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\EditRecord;
8+
9+
class EditUser extends EditRecord
10+
{
11+
protected static string $resource = UserResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\DeleteAction::make(),
17+
];
18+
}
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Filament\Resources\UserResource\Pages;
4+
5+
use App\Filament\Resources\UserResource;
6+
use Filament\Actions;
7+
use Filament\Resources\Pages\ListRecords;
8+
9+
class ListUsers extends ListRecords
10+
{
11+
protected static string $resource = UserResource::class;
12+
13+
protected function getHeaderActions(): array
14+
{
15+
return [
16+
Actions\CreateAction::make(),
17+
];
18+
}
19+
}

0 commit comments

Comments
 (0)