Sindbad~EG File Manager
<?php
namespace App\Filament\Resources;
use App\Filament\Resources\UserResource\Pages;
use App\Filament\Resources\UserResource\RelationManagers;
use App\Models\User;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Select;
use Illuminate\Support\Facades\Hash;
use Spatie\Permission\Models\Role;
use Filament\Tables\Columns\TextColumn;
class UserResource extends Resource
{
protected static ?string $model = User::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
public static function form_def(Form $form): Form
{
return $form
->schema([
//
]);
}
public static function form(Form $form): Form
{
return $form->schema([
TextInput::make('name')
->label('Nama')
->required()
->maxLength(255),
TextInput::make('email')
->label('Email')
->email()
->required()
->unique(ignoreRecord: true),
TextInput::make('password')
->label('Password')
->password()
->helperText('Kosongkan saat edit jika tidak ingin mengubah password')
->dehydrateStateUsing(fn ($state) =>
filled($state) ? Hash::make($state) : null
)
->dehydrated(fn ($state) => filled($state))
->required(fn ($record) => $record === null),
// Select::make('role')
// ->label('Role')
// ->options([
// 'administrator' => 'Administrator',
// 'operator' => 'Operator',
// 'guest' => 'Guest',
// ])
// ->required(),
Select::make('role')
->label('Role')
->options(
Role::query()->pluck('name', 'name')->toArray()
)
->required()
->afterStateHydrated(function ($component, $record) {
$component->state(
$record?->getRoleNames()->first()
);
})
->saveRelationshipsUsing(function ($record, $state) {
$record->syncRoles([$state]);
}),
]);
}
// public static function table_def(Table $table): Table
// {
// return $table
// ->columns([
// //
// ])
// ->filters([
// //
// ])
// ->actions([
// Tables\Actions\EditAction::make(),
// ])
// ->bulkActions([
// Tables\Actions\BulkActionGroup::make([
// Tables\Actions\DeleteBulkAction::make(),
// ]),
// ]);
// }
public static function table(Table $table): Table
{
return $table
->columns([
TextColumn::make('name')
->label('Nama')
->searchable()
->sortable(),
TextColumn::make('email')
->label('Email')
->searchable()
->sortable(),
TextColumn::make('roles.name')
->label('Role')
->badge()
->sortable(),
TextColumn::make('created_at')
->label('Dibuat')
->dateTime('d-m-Y H:i')
->sortable(),
])
->defaultSort('name', 'asc')
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::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()?->can('manage users') ?? false;
// }
public static function canViewAny(): bool
{
return auth()->user()?->hasRole('administrator') ?? false;
}
//awal agung wibowo 20260122
// public static function canCreate(): bool
// {
// return auth()->user()?->hasRole('administrator') ?? false;
// }
// public static function canEdit($record): bool
// {
// return auth()->user()?->hasRole('administrator') ?? false;
// }
// public static function canDelete($record): bool
// {
// return auth()->user()?->hasRole('administrator') ?? false;
// }
//akhir agung wibowo 20260122
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists