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