Filament Installation and User Restrictions

Filament Installation and User Restrictions

2024-10-18 وقت القراءه : 1 دقائق

بعد تثبيت مشروع لارافيل، والذهاب للمجلدات الخاصة بالمشروع ، يمكن لنا تثبيت filament من خلال إستخدام الأمر

composer require filament/filament:"^3.2" -W

ومن ثم تنفيذ الأمر

php artisan filament:install --panels

ومن ثم عمل publish  للـ configuration

php artisan vendor:publish --tag=filament-config


كذلك يمكن لنا عمل publish للـ translation

php artisan vendor:publish --tag=filament-panels-translations
php artisan vendor:publish --tag=filament-actions-translations
php artisan vendor:publish --tag=filament-forms-translations
php artisan vendor:publish --tag=filament-infolists-translations
php artisan vendor:publish --tag=filament-notifications-translations 
php artisan vendor:publish --tag=filament-tables-translations
php artisan vendor:publish --tag=filament-translations

الأن بعد الإنتهاء من تثبيت الحزمة، يمكن لنا التوجه إلى النطاق ( الدومين ) ومن ثم /admin

projectname.test/admin

فتظهر لنا هذه النافذه

الأن لتسجيل الدخول، نحتاج معلومات الدخول، بالوضع الإفتراضي أي مستخدم موجود في قاعده البيانات يمكن من خلاله تسجيل الدخول إلى اللوحة.

وبعد نجاح تسجيل الدخول تظهر لنا الواجهه الأساسية للوحة التحكم


لكن هنا السؤال، لو كان لدي في جدول users مجموعة من المستخدمين لكن ليس admin بالتالي يستطيعون الدخول إلى لوحة التحكم، ولمنع ذلك والسماح فقط للـ admin هنا نذهب إلى User Model و نعمل implements filamentUser وكذلك إضافة الدالة canAccessPanel

<?php
 
namespace App\Models;
 
use Filament\Models\Contracts\FilamentUser;
use Filament\Panel;
use Illuminate\Foundation\Auth\User as Authenticatable;
 
class User extends Authenticatable implements FilamentUser
{
    // ...
 
    public function canAccessPanel(Panel $panel): bool
    {
        return str_ends_with($this->email, '@yourdomain.com') && $this->hasVerifiedEmail();
    }
}

كما نلاحظ أنه فقط المستخدمين الذين لديهم بريد الكتروني خاص بدومين معين يسمح لهم بعملية الوصول إلى لوحة التحكم، وممكن تعديلها أيضا إلى أي شيئ نريده مثلا اي بريد إلكتروني يكون @admin.com

    public function canAccessPanel(Panel $panel): bool
    {
        return str_ends_with($this->email, '@admin.com') && $this->hasVerifiedEmail();
    }


إضافة تعليق
Loading...