يوفر Doorman طريقة لتقييد الوصول إلى تطبيقات Laravel الخاصة بك باستخدام رموز الدعوة.
رموز الدعوة:
| لارافيل | بواب |
|---|---|
| 5.x | 3.x |
| 6.x | 4.x |
| 7.x | 5.x |
| 8.x | 6.x |
| 9.x | 7.x |
| 10.x | 8.x |
| 11.x | 9.x |
يمكنك سحب الحزمة باستخدام الملحن:
$ composer require " clarkeash/doorman=^9.0 "بعد ذلك، قم بترحيل قاعدة البيانات:
$ php artisan migrateقم بإنشاء رمز دعوة عام واحد مع استرداد واحد، وبدون انتهاء الصلاحية.
Doorman:: generate ()-> make ();قم بإنشاء 5 رموز دعوة عامة مع استرداد واحد لكل منها، وبدون انتهاء الصلاحية.
Doorman:: generate ()-> times ( 5 )-> make ();قم بإجراء دعوة مع 10 عمليات استرداد وبدون انتهاء الصلاحية.
Doorman:: generate ()-> uses ( 10 )-> make ();قم بإجراء دعوة مع عمليات استرداد غير محدودة وبدون انتهاء الصلاحية.
Doorman:: generate ()-> unlimited ()-> make ();قم بإجراء دعوة تنتهي صلاحيتها في تاريخ محدد.
$ date = Carbon:: now ( ' UTC ' )-> addDays ( 7 );
Doorman:: generate ()-> expiresOn ( $ date )-> make ();قم بإجراء دعوة تنتهي صلاحيتها خلال 14 يومًا.
Doorman:: generate ()-> expiresIn ( 14 )-> make ();قم بعمل دعوة لشخص معين.
Doorman:: generate ()-> for ( ' [email protected] ' )-> make (); بدلاً من ذلك، بدلًا من استدعاء make() والذي سيعيد مجموعة من الدعوات، يمكنك الاتصال بها once() إذا كنت تريد إنشاء دعوة واحدة فقط.
$ invite = Doorman:: generate ()-> for ( ' [email protected] ' )-> once ();
dd ( $ invite -> code ); يمكنك استرداد دعوة عن طريق الاتصال بطريقة redeem . توفير رمز الدعوة وعنوان البريد الإلكتروني بشكل اختياري.
Doorman:: redeem ( ' ABCDE ' );
// or
Doorman:: redeem ( ' ABCDE ' , ' [email protected] ' );إذا كان البواب قادرًا على استرداد رمز الدعوة، فسيزيد عدد عمليات الاسترداد بمقدار 1، وإلا فسيطرح استثناءً.
InvalidInviteCode في حالة عدم وجود الكود في قاعدة البيانات.ExpiredInviteCode إذا تم تعيين تاريخ انتهاء الصلاحية وكان في الماضي.MaxUsesReached إذا تم بالفعل استخدام رمز الدعوة لأقصى عدد من المرات.NotYourInviteCode إذا كان عنوان البريد الإلكتروني للدعوة يتطابق مع العنوان المقدم أثناء الاسترداد، أو لم يتم توفيره أثناء الاسترداد. تعمل جميع الاستثناءات المذكورة أعلاه على تمديد DoormanException حتى تتمكن من التقاط هذا الاستثناء إذا كان تطبيقك لا يحتاج إلى القيام بأي شيء محدد للاستثناءات المذكورة أعلاه.
try {
Doorman:: redeem ( request ()-> get ( ' code ' ), request ()-> get ( ' email ' ));
} catch ( DoormanException $ e ) {
return response ()-> json ([ ' error ' => $ e -> getMessage ()], 422 );
} يمكنك التحقق من الدعوة عن طريق استدعاء طريقة check . توفير رمز الدعوة وعنوان البريد الإلكتروني بشكل اختياري. (له نفس توقيع طريقة redeem باستثناء أنه سيعيد true أو false بدلاً من طرح استثناء.
Doorman:: check ( ' ABCDE ' );
// or
Doorman:: check ( ' ABCDE ' , ' [email protected] ' );من أجل تغيير رسالة الخطأ التي تم إرجاعها من البواب، نحتاج إلى نشر ملفات اللغة كما يلي:
$ php artisan vendor:publish --tag=doorman-translations ستكون ملفات اللغة بعد ذلك في /resources/lang/vendor/doorman/en حيث يمكنك تحرير ملف messages.php ، وسيتم استخدام هذه الرسائل بواسطة البواب. يمكنك إنشاء دعم للغات الأخرى عن طريق إنشاء مجلدات إضافية باستخدام ملف messages.php في الدليل /resources/lang/vendor/doorman مثل de حيث يمكنك وضع ترجماتك الألمانية. اقرأ مستندات الترجمة لمزيد من المعلومات.
إذا كنت تفضل التحقق من صحة رمز الدعوة قبل محاولة استرداده أو إذا كنت تستخدم طلبات النماذج، فيمكنك التحقق من صحته على النحو التالي:
public function store ( Request $ request )
{
$ this -> validate ( $ request , [
' email ' => ' required|email|unique:users ' ,
' code ' => [ ' required ' , new DoormanRule ( $ request -> get ( ' email ' ))],
]);
// Add the user to the database.
}يجب عليك تمرير عنوان البريد الإلكتروني إلى المنشئ للتحقق من صحة الكود مقابل هذا البريد الإلكتروني. إذا كنت تعلم أنه يمكن استخدام الرمز مع أي بريد إلكتروني، فيمكنك ترك المعلمة فارغة.
قم أولاً بنشر تكوين الحزمة:
$ php artisan vendor:publish --tag=doorman-config في config/doorman.php سترى:
return [
' invite_table_name ' => ' invites ' ,
];إذا قمت بتغيير اسم الجدول ثم قمت بتشغيل عمليات الترحيل الخاصة بك، فسوف يستخدم البواب اسم الجدول الجديد.
لإزالة الدعوات المستخدمة والمنتهية الصلاحية، يمكنك استخدام أمر cleanup :
$ php artisan doorman:cleanup