Doorman menyediakan cara untuk membatasi akses ke aplikasi Laravel Anda dengan menggunakan kode undangan.
Kode Undangan:
Laravel | Penjaga pintu |
---|---|
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 |
Anda dapat menarik paket menggunakan composer:
$ composer require " clarkeash/doorman=^9.0 "
Selanjutnya, migrasikan database:
$ php artisan migrate
Buatlah satu kode undangan generik dengan 1 kali penukaran, dan tanpa masa berlaku.
Doorman:: generate ()-> make ();
Buat 5 kode undangan generik dengan masing-masing 1 penukaran, dan tidak ada masa berlakunya.
Doorman:: generate ()-> times ( 5 )-> make ();
Buat undangan dengan 10 penukaran dan tanpa masa berlaku.
Doorman:: generate ()-> uses ( 10 )-> make ();
Buat undangan dengan penukaran tanpa batas dan tanpa masa berlaku.
Doorman:: generate ()-> unlimited ()-> make ();
Buatlah undangan yang masa berlakunya habis pada tanggal tertentu.
$ date = Carbon:: now ( ' UTC ' )-> addDays ( 7 );
Doorman:: generate ()-> expiresOn ( $ date )-> make ();
Buat undangan yang masa berlakunya habis dalam 14 hari.
Doorman:: generate ()-> expiresIn ( 14 )-> make ();
Buatlah undangan untuk orang tertentu.
Doorman:: generate ()-> for ( ' [email protected] ' )-> make ();
Alternatifnya, alih-alih memanggil make()
yang akan mengembalikan kumpulan undangan, Anda dapat memanggil once()
jika Anda hanya ingin satu undangan dibuat.
$ invite = Doorman:: generate ()-> for ( ' [email protected] ' )-> once ();
dd ( $ invite -> code );
Anda dapat menukarkan undangan dengan memanggil metode redeem
. Memberikan kode undangan dan opsional alamat email.
Doorman:: redeem ( ' ABCDE ' );
// or
Doorman:: redeem ( ' ABCDE ' , ' [email protected] ' );
Jika penjaga pintu dapat menukarkan kode undangan, maka jumlah penukaran akan bertambah 1, jika tidak maka akan menimbulkan pengecualian.
InvalidInviteCode
dilempar jika kode tidak ada di database.ExpiredInviteCode
ditampilkan jika tanggal kedaluwarsa ditetapkan dan sudah lewat.MaxUsesReached
ditampilkan jika kode undangan telah digunakan sebanyak jumlah maksimum.NotYourInviteCode
ditampilkan jika alamat email undangan cocok dengan yang diberikan saat penukaran, atau tidak diberikan saat penukaran. Semua pengecualian di atas memperluas DoormanException
sehingga Anda dapat menangkap pengecualian tersebut jika aplikasi Anda tidak perlu melakukan sesuatu yang spesifik untuk pengecualian di atas.
try {
Doorman:: redeem ( request ()-> get ( ' code ' ), request ()-> get ( ' email ' ));
} catch ( DoormanException $ e ) {
return response ()-> json ([ ' error ' => $ e -> getMessage ()], 422 );
}
Anda dapat memeriksa undangan dengan memanggil metode check
. Memberikan kode undangan dan opsional alamat email. (Ini memiliki tanda tangan yang sama dengan metode redeem
kecuali metode ini akan mengembalikan true
atau false
alih-alih memberikan pengecualian.
Doorman:: check ( ' ABCDE ' );
// or
Doorman:: check ( ' ABCDE ' , ' [email protected] ' );
Untuk mengubah pesan kesalahan yang dikembalikan dari penjaga pintu, kita perlu mempublikasikan file bahasa seperti:
$ php artisan vendor:publish --tag=doorman-translations
File bahasa kemudian akan berada di /resources/lang/vendor/doorman/en
di mana Anda dapat mengedit file messages.php
, dan pesan-pesan ini akan digunakan oleh penjaga pintu. Anda dapat membuat dukungan untuk bahasa lain dengan membuat folder tambahan dengan file messages.php
di direktori /resources/lang/vendor/doorman
seperti de
di mana Anda dapat menempatkan terjemahan bahasa Jerman Anda. Baca dokumen pelokalan untuk informasi lebih lanjut.
Jika Anda ingin memvalidasi kode undangan sebelum mencoba menukarkannya atau Anda menggunakan Permintaan Formulir, maka Anda dapat memvalidasinya seperti ini:
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.
}
Anda harus meneruskan alamat email ke konstruktor untuk memvalidasi kode terhadap email tersebut. Jika Anda tahu kode tersebut dapat digunakan dengan email apa pun, Anda dapat membiarkan parameternya kosong.
Pertama-tama publikasikan konfigurasi paket:
$ php artisan vendor:publish --tag=doorman-config
Di config/doorman.php
Anda akan melihat:
return [
' invite_table_name ' => ' invites ' ,
];
Jika Anda mengubah nama tabel lalu menjalankan migrasi, Doorman akan menggunakan nama tabel baru.
Untuk menghapus undangan bekas dan kedaluwarsa, Anda dapat menggunakan perintah cleanup
:
$ php artisan doorman:cleanup