Sindbad~EG File Manager

Current Path : /home/webg5288/www/laravel_kendal/vendor/jeffgreco13/filament-breezy/src/Livewire/
Upload File :
Current File : /home/webg5288/www/laravel_kendal/vendor/jeffgreco13/filament-breezy/src/Livewire/SanctumTokens.php

<?php

namespace Jeffgreco13\FilamentBreezy\Livewire;

use Carbon\Carbon;
use Filament\Facades\Filament;
use Filament\Forms;
use Filament\Notifications\Notification;
use Filament\Tables;
use Illuminate\Database\Eloquent\Builder;
use Laravel\Sanctum\Sanctum;

class SanctumTokens extends MyProfileComponent implements Tables\Contracts\HasTable
{
    use Tables\Concerns\InteractsWithTable;

    protected string $view = 'filament-breezy::livewire.sanctum-tokens';

    protected string $modalWidth = 'md';

    protected int $abilityColumns = 2;

    public $user;

    public ?string $plainTextToken;

    public static $sort = 40;

    public function mount()
    {
        $this->user = Filament::getCurrentPanel()->auth()->user();
    }

    protected function getTableQuery(): Builder
    {
        $auth = Filament::getCurrentPanel()->auth();

        return app(Sanctum::$personalAccessTokenModel)->where([
            ['tokenable_id', '=', $auth->id()],
            ['tokenable_type', '=', $auth->user()->getMorphClass()],
        ]);
    }

    protected function getTableColumns(): array
    {
        return [
            Tables\Columns\TextColumn::make('name')
                ->searchable()
                ->sortable()
                ->label(__('filament-breezy::default.fields.token_name')),
            Tables\Columns\TextColumn::make('created_at')
                ->date()
                ->label(__('filament-breezy::default.fields.created'))
                ->sortable(),
            Tables\Columns\TextColumn::make('expires_at')
                ->color(fn ($record) => now()->gt($record->expires_at) ? 'danger' : null)
                ->date()
                ->label(__('filament-breezy::default.fields.expires'))
                ->sortable(),
            Tables\Columns\TextColumn::make('abilities')
                ->badge()
                ->label(__('filament-breezy::default.fields.abilities'))
                ->getStateUsing(fn ($record) => count($record->abilities)),
        ];
    }

    protected function getSanctumFormSchema(bool $edit = false): array
    {
        return [
            Forms\Components\TextInput::make('token_name')
                ->label(__('filament-breezy::default.fields.token_name'))
                ->required()
                ->hidden($edit),
            Forms\Components\CheckboxList::make('abilities')
                ->label(__('filament-breezy::default.fields.abilities'))
                ->options(filament('filament-breezy')->getSanctumPermissions())
                ->columns($this->abilityColumns)
                ->required(),
            Forms\Components\DatePicker::make('expires_at')
                ->label(__('filament-breezy::default.fields.token_expiry')),

        ];
    }

    protected function getTableHeaderActions(): array
    {
        return [
            Tables\Actions\Action::make('createToken')
                ->label(__('filament-breezy::default.profile.sanctum.create.submit.label'))
                ->modalWidth($this->modalWidth)
                ->form($this->getSanctumFormSchema())
                ->action(function ($data) {
                    $this->plainTextToken = $this->user->createToken($data['token_name'], array_values($data['abilities']), $data['expires_at'] ? Carbon::createFromFormat('Y-m-d', $data['expires_at']) : null)->plainTextToken;
                    Notification::make()
                        ->success()
                        ->title(__('filament-breezy::default.profile.sanctum.create.notify'))
                        ->send();
                }),
        ];
    }

    // protected function getTableBulkActions(): array
    // {
    //     return [
    //         Tables\Actions\DeleteBulkAction::make()
    //     ];
    // }

    protected function getTableActions(): array
    {
        return [
            Tables\Actions\EditAction::make('edit')
                ->label(__('filament-breezy::default.profile.sanctum.update.submit.label'))
                ->iconButton()
                ->modalWidth($this->modalWidth)
                ->form($this->getSanctumFormSchema(edit: true)),
            Tables\Actions\DeleteAction::make()
                ->iconButton(),
        ];
    }
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists