In laravel 9.52.5 / filament/filament ^2.17.21 / filament/forms ^2.17.21" app I added filament/spatie-laravel-settings-plugin 2.17.21 plugin and created settings page with command:
php artisan make:filament-settings-page ManageAppSettings AppSettings
I got 2 file:
app/Filament/Pages/ManageAppSettings.php :
<?php
namespace App\Filament\Pages;
use App\Settings\AppSettings;
use Filament\Forms\Components\TextInput;
use Filament\Pages\SettingsPage;
class ManageAppSettings extends SettingsPage
{
protected static ?string $navigationIcon = 'heroicon-o-cog';
protected static ?string $navigationGroup = 'Settings';
protected static string $settings = AppSettings::class;
protected function getFormSchema(): array
{
\Log::info(varDump(-1, ' -1 app/Filament/Pages/ManageAppSettings.php::'));
return [
TextInput::make('site_name')
->label('Site name')
->required(),
...
];
}
public static function repository(): ?string
{
return 'common';
}
}
and app/Settings/AppSettings.php :
<?php
namespace App\Settings;
use Spatie\LaravelSettings\Settings;
class AppSettings extends Settings
{
public string $site_name;
...
public static function group(): string
{
\Log::info(varDump(-11, ' -11 app/Settings/AppSettings.php::'));
return 'common';
}
I created Policy :
php artisan make:policy AppSettingsPolicy
I did not use any model in this command like
--model=AppSettings
as I do not have any model file like App/Models/AppSettings
I tried to debug app/Policies/AppSettingsPolicy.php file with lines :
<?php
namespace App\Policies;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class AppSettingsPolicy
{
use HandlesAuthorization;
public function __construct()
{
\Log::info(varDump(auth()->user()->id, ' -1 AppSettingsPolicy __construct auth()->user()->id::'));
}
public function __invoke($x)
{
\Log::info(varDump(auth()->user()->id, ' -1 AppSettingsPolicy __invoke auth()->user()->id::'));
}
}
But running settings page with url
/admin/manage-app-settings
I do not find any lines from app/Policies/AppSettingsPolicy.php in log file.
In file app/Providers/AuthServiceProvider.php I tried to assign policy file just I do with other models :
class AuthServiceProvider extends ServiceProvider
{
protected $policies
= [
'App\Settings\AppSettings' => 'App\Policies\AppSettingsPolicy',
'App\Filament\Pages\ManageAppSettings' => 'App\Policies\AppSettingsPolicy',
'App\Models\Banner' => 'App\Policies\BannerPolicy',
...
I also tried to define it as :
class AuthServiceProvider extends ServiceProvider
{
protected $policies
= [
ManageAppSettings::class => AppSettingsPolicy::class,
...
I do not see amy log messages from AppSettingsPolicy file...
In which way can I use AppSettingsPolicy ? Are there some other way to restrict access to App\Settings\AppSettings ?