Sindbad~EG File Manager

Current Path : /home/webg5288/www/laravel_kendal/app/Filament/Resources/
Upload File :
Current File : /home/webg5288/www/laravel_kendal/app/Filament/Resources/UserResource.php

<?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