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สร้างรหัสเชิญทั่วไปเพียงรหัสเดียวโดยแลกได้ 1 ครั้งและไม่มีวันหมดอายุ
Doorman:: generate ()-> make ();สร้างรหัสเชิญทั่วไป 5 รหัส โดยแลกได้ 1 ครั้งต่อ 1 รหัส และไม่มีวันหมดอายุ
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