shielda / laravel
Official Laravel package for Shielda Captcha (پکیج رسمی شیلدا کپچا برای لاراول)
Requires
- php: ^8.1 || ^8.2 || ^8.3 || ^8.4
- guzzlehttp/guzzle: ^7.5
- illuminate/http: ^10.0 || ^11.0 || ^12.0
- illuminate/support: ^10.0 || ^11.0 || ^12.0
- illuminate/validation: ^10.0 || ^11.0 || ^12.0
Requires (Dev)
- orchestra/testbench: ^8.0 || ^9.0 || ^10.0
- phpunit/phpunit: ^10.0 || ^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-13 07:44:44 UTC
README
پکیج رسمی و متنباز سامانه شیلدا (Shielda) برای فریمورک محبوب لاراول (Laravel). این پکیج امکان اعتبارسنجی چالشهای امنیتی و محافظت از فرمها در برابر رباتها و حملات Brute-Force را با چند خط کد ساده فراهم میسازد.
🚀 ویژگیها
- ⚡️ نصب فوقالعاده آسان با پشتیبانی کامل از Package Auto-Discovery لاراول
- 🎨 دایرکتیوهای اختصاصی Blade جهت لود اسکریپت و قرار دادن کانتینر ویجت
- 🛡️ ولیدیشن رول اختصاصی (
shielda) برای استفاده در کنترلرها و FormRequest - 🎛️ فاساد اختصاصی (
Shielda::verify()) برای اعتبارسنجی دستی و دسترسی به جزییات پاسخ - 🌐 سازگاری کامل با نسخههای PHP 8.1 به بالا و Laravel 10، 11 و 12
📦 نصب و راهاندازی
ابتدا پکیج را با دستور زیر از طریق Composer نصب کنید:
composer require shielda/laravel
(در لاراول ۱۰ و بالاتر، پکیج به صورت خودکار شناسایی و لود میشود).
⚙️ تنظیمات (Configuration)
۱. تنظیم متغیرهای محیطی (.env)
کلیدهای دریافت شده از پنل کاربری شیلدا را در فایل .env پروژه خود قرار دهید:
SHIELDA_SITE_KEY=your_site_key_here SHIELDA_SECRET_KEY=your_secret_key_here
۲. انتشار فایل کانفیگ (اختیاری)
در صورت تمایل به تغییر تنظیمات پیشفرض (مانند زبان، تم یا پیامهای خطا)، فایل کانفیگ را منتشر کنید:
php artisan vendor:publish --tag=shielda-config
فایل تنظیمات در مسیر config/shielda.php قرار خواهد گرفت:
return [ 'site_key' => env('SHIELDA_SITE_KEY', ''), 'secret_key' => env('SHIELDA_SECRET_KEY', ''), 'verify_url' => env('SHIELDA_VERIFY_URL', 'https://shielda.ir/api/v1/siteverify'), 'widget_url' => env('SHIELDA_WIDGET_URL', 'https://shielda.ir/widget/api.js'), 'input_name' => env('SHIELDA_INPUT_NAME', 'darban-captcha-response'), 'timeout' => env('SHIELDA_TIMEOUT', 10.0), 'theme' => env('SHIELDA_THEME', 'auto'), // auto, light, dark 'lang' => env('SHIELDA_LANG', 'fa'), // fa, en 'error_message' => 'کد امنیتی (کپچا) تایید نشد یا منقضی شده است.', ];
💻 نحوه استفاده
۱. نمایش کپچا در صفحات Blade
در فرم مورد نظر (مثلاً فرم لاگین یا ثبتنام):
<form method="POST" action="{{ route('login') }}"> @csrf <input type="email" name="email" placeholder="ایمیل" required> <input type="password" name="password" placeholder="کلمه عبور" required> <!-- ویجت شیلدا کپچا --> @shieldaWidget @error('darban-captcha-response') <span class="text-danger">{{ $message }}</span> @enderror <button type="submit">ورود به حساب</button> </form> <!-- اسکریپت شیلدا (در تگ head یا انتهای body) --> @shieldaScripts
نکته: همچنین میتوانید از دایرکتیو یکپارچه
@shieldaبرای اضافه کردن همزمان اسکریپت و کانتینر استفاده کنید.
۲. اعتبارسنجی در کنترلر یا FormRequest
شما میتوانید به سادگی از رول اعتبارسنجی shielda استفاده کنید:
روش اول: اعتبارسنجی با Validator یا FormRequest (روش پیشنهادی)
namespace App\Http\Controllers; use Illuminate\Http\Request; class AuthController extends Controller { public function login(Request $request) { $request->validate([ 'email' => 'required|email', 'password' => 'required|string', 'darban-captcha-response' => 'required|shielda', ]); // فرآیند ورود کاربر پس از اعتبارسنجی موفق... } }
یا با استفاده از شیء کلاس Rule:
use Shielda\Laravel\Rules\ShieldaRule; $request->validate([ 'darban-captcha-response' => ['required', new ShieldaRule()], ]);
۳. اعتبارسنجی دستی با استفاده از فاساد (Facade)
اگر میخواهید در سناریوهای خاص به صورت دستی توکن را بررسی کنید یا جزییات کامل پاسخ سرور شیلدا را دریافت نمایید:
use Shielda\Laravel\Facades\Shielda; // بررسی وضعیت بولین (true / false) $isValid = Shielda::verify($request->input('darban-captcha-response')); if ($isValid) { // کپچا تایید شد } // یا دریافت جزییات کامل ارزیابی: $details = Shielda::verifyResponse($request->input('darban-captcha-response')); /* خروجی نمونه: [ 'success' => true, 'challenge_ts' => '2026-10-13T10:00:00Z', 'hostname' => 'yourdomain.com', 'error_codes' => [] ] */
🧪 تست و عیبیابی
اگر نیاز به شبیهسازی یا تست اعتبارسنجی دارید، میتوانید با متد فیک لاراول یا تزریق پاسخ مورد نظر آن را شبیهسازی کنید:
use Shielda\Laravel\Facades\Shielda; Shielda::shouldReceive('verify')->once()->andReturn(true);
📄 لایسنس
این پکیج تحت مجوز MIT License منتشر شده است و استفاده از آن در پروژههای تجاری و شخصی کاملاً آزاد است.
- وبسایت رسمی: https://shielda.ir
- مستندات و پشتیبانی: support@shielda.ir