Add role-based access control to various settings pages: implement canAccess method in AboutPageSettings, ContactPageSettings, HomePageSettings, ManageCtaSettings, ManagePortfolio, ManageSite, ManageSiteSocialSettings, ManageSolutions, ManageSuccess, and update User model to include canManageSettings method for enhanced security and user experience.

This commit is contained in:
2025-07-29 15:54:16 +05:00
parent 3e80ea4d5e
commit 643ccd6d9e
16 changed files with 83 additions and 27 deletions

View File

@@ -2,8 +2,8 @@
namespace App\Filament\Pages;
use App\Settings\AboutSettings;
use App\Models\UserRole;
use App\Settings\AboutSettings;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Repeater;
@@ -247,8 +247,13 @@ class AboutPageSettings extends SettingsPage
return 'Manage the content sections of the About Us page.';
}
public static function canAccess(): bool
{
return auth()->user()->canManageSettings();
}
public static function canView(): bool
{
return auth()->user()->role === UserRole::ADMIN || auth()->user()->role === UserRole::MANAGER;
}
}
}

View File

@@ -2,8 +2,8 @@
namespace App\Filament\Pages;
use App\Settings\ContactSettings;
use App\Models\UserRole;
use App\Settings\ContactSettings;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
@@ -86,6 +86,11 @@ class ContactPageSettings extends SettingsPage
return 'Manage the contact form details, contact information, and map embed.';
}
public static function canAccess(): bool
{
return auth()->user()->canManageSettings();
}
public static function canView(): bool
{
return auth()->user()->role === UserRole::ADMIN || auth()->user()->role === UserRole::MANAGER;

View File

@@ -2,8 +2,8 @@
namespace App\Filament\Pages;
use App\Settings\HomeSettings;
use App\Models\UserRole;
use App\Settings\HomeSettings;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Repeater;
@@ -294,6 +294,11 @@ class HomePageSettings extends SettingsPage
return 'Manage the homepage hero section, background video, and call-to-action content.';
}
public static function canAccess(): bool
{
return auth()->user()->canManageSettings();
}
public static function canView(): bool
{
return auth()->user()->role === UserRole::ADMIN || auth()->user()->role === UserRole::MANAGER;

View File

@@ -2,13 +2,12 @@
namespace App\Filament\Pages;
use App\Settings\CtaSettings;
use App\Models\UserRole;
use App\Settings\CtaSettings;
use Filament\Forms;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Form;
use Filament\Pages\SettingsPage;
use Illuminate\Contracts\Support\Htmlable;
class ManageCtaSettings extends SettingsPage
{
@@ -45,6 +44,11 @@ class ManageCtaSettings extends SettingsPage
]);
}
public static function canAccess(): bool
{
return auth()->user()->canManageSettings();
}
public static function canView(): bool
{
return auth()->user()->role === UserRole::ADMIN || auth()->user()->role === UserRole::MANAGER;

View File

@@ -2,8 +2,8 @@
namespace App\Filament\Pages;
use App\Settings\PortfolioSettings;
use App\Models\UserRole;
use App\Settings\PortfolioSettings;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Repeater;
@@ -110,6 +110,11 @@ class ManagePortfolio extends SettingsPage
return 'Manage the portfolio section content, including items, categories, and titles.';
}
public static function canAccess(): bool
{
return auth()->user()->canManageSettings();
}
public static function canView(): bool
{
return auth()->user()->role === UserRole::ADMIN || auth()->user()->role === UserRole::MANAGER;

View File

@@ -2,8 +2,8 @@
namespace App\Filament\Pages;
use App\Settings\SiteSettings;
use App\Models\UserRole;
use App\Settings\SiteSettings;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Pages\SettingsPage;
@@ -170,6 +170,11 @@ class ManageSite extends SettingsPage
return 'Manage your website\'s general configuration';
}
public static function canAccess(): bool
{
return auth()->user()->canManageSettings();
}
public static function canView(): bool
{
return auth()->user()->role === UserRole::ADMIN || auth()->user()->role === UserRole::MANAGER;

View File

@@ -2,8 +2,8 @@
namespace App\Filament\Pages;
use App\Settings\SiteSocialSettings;
use App\Models\UserRole;
use App\Settings\SiteSocialSettings;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Pages\SettingsPage;
@@ -79,6 +79,11 @@ class ManageSiteSocialSettings extends SettingsPage
return 'Manage your social media profiles and sharing options';
}
public static function canAccess(): bool
{
return auth()->user()->canManageSettings();
}
public static function canView(): bool
{
return auth()->user()->role === UserRole::ADMIN || auth()->user()->role === UserRole::MANAGER;

View File

@@ -2,8 +2,8 @@
namespace App\Filament\Pages;
use App\Settings\SolutionSettings;
use App\Models\UserRole;
use App\Settings\SolutionSettings;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Repeater;
@@ -378,6 +378,11 @@ class ManageSolutions extends SettingsPage
return 'Manage the solutions section content, including individual solution items.';
}
public static function canAccess(): bool
{
return auth()->user()->canManageSettings();
}
public static function canView(): bool
{
return auth()->user()->role === UserRole::ADMIN || auth()->user()->role === UserRole::MANAGER;

View File

@@ -2,8 +2,8 @@
namespace App\Filament\Pages;
use App\Settings\SuccessSettings;
use App\Models\UserRole;
use App\Settings\SuccessSettings;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Repeater;
@@ -115,6 +115,11 @@ class ManageSuccess extends SettingsPage
return 'Manage the success section content, including text, button, and skill bars.';
}
public static function canAccess(): bool
{
return auth()->user()->canManageSettings();
}
public static function canView(): bool
{
return auth()->user()->role === UserRole::ADMIN || auth()->user()->role === UserRole::MANAGER;

View File

@@ -16,9 +16,8 @@ use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Columns\ImageColumn;
use Filament\Tables\Table;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
class NewsResource extends Resource
{

View File

@@ -14,8 +14,8 @@ use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Columns\ImageColumn;
use Filament\Tables\Table;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Str;
class SuccessResource extends Resource
{

View File

@@ -3,7 +3,6 @@
namespace App\Filament\Resources;
use App\Filament\Resources\TeamMemberResource\Pages;
use App\Filament\Resources\TeamMemberResource\RelationManagers;
use App\Models\TeamMember;
use App\Models\UserRole;
use Filament\Forms\Components\FileUpload;
@@ -12,14 +11,9 @@ use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Actions\ActionGroup;
use Filament\Tables\Actions\DeleteAction;
use Filament\Tables\Actions\EditAction;
use Filament\Tables\Columns\ImageColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
class TeamMemberResource extends Resource
{

View File

@@ -3,7 +3,6 @@
namespace App\Filament\Resources\TeamMemberResource\Pages;
use App\Filament\Resources\TeamMemberResource;
use Filament\Actions;
use Filament\Resources\Pages\CreateRecord;
class CreateTeamMember extends CreateRecord