novay / icaptcha
Custom Image Captcha Package for Laravel.
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:laravel-package
pkg:composer/novay/icaptcha
README
Package Laravel Icaptcha menyediakan solusi keamanan berbasis image CAPTCHA yang fleksibel untuk aplikasi Laravel Anda. Icaptcha menawarkan berbagai tipe tantangan (teks, matematika, dan pengetahuan umum) dan mudah diintegrasikan menggunakan Blade Directive sederhana.
✨ Fitur Utama
- Tiga Tipe Tantangan: Mendukung Captcha Teks Acak, Matematika Sederhana, dan Tebak Nama Kota (pengetahuan umum).
- Kustomisasi Runtime: Konfigurasi dapat ditimpa langsung di view Anda.
- Validasi Satu Kali Pakai (One-Time Use): Jawaban Captcha dihapus dari session segera setelah validasi untuk keamanan.
- Noise dan Rotasi: Teks dan gambar diacak untuk mencegah bot OCR (Optical Character Recognition).
- Modularitas: Menggunakan view dan data yang dapat dipublikasikan untuk kustomisasi mudah.
🚀 Instalasi
1. Instalasi Composer
composer require novay/icaptcha
2. Publikasi Aset
Setelah instalasi, jalankan perintah publish untuk menyalin config, view, dan data ke direktori aplikasi Anda:
php artisan vendor:publish --tag=icaptcha-config # [config/icaptcha.php] php artisan vendor:publish --tag=icaptcha-views # [resources/views/vendor/icaptcha/icaptcha.blade.php] php artisan vendor:publish --tag=icaptcha-data # [storage/app/vendor/icaptcha/cities.json]
Disarankan: Periksa dan sesuaikan pengaturan di
config/icaptcha.phpsesuai kebutuhan Anda, terutama path font dan dimensi gambar.
🔑 Penggunaan
1. Menampilkan Captcha di View
Gunakan Blade Directive @icaptcha di mana pun Anda membutuhkan kode keamanan (biasanya di formulir login atau pendaftaran).
<div class="form-group"> <label for="icaptcha">Kode Keamanan</label> <div class="icaptcha-wrapper"> @icaptcha </div> <input type="text" name="icaptcha" required class="form-control" placeholder="Masukkan jawaban di atas"> </div>
2. Kustomisasi Tipe Captcha (Runtime)
Anda dapat menimpa tipe dan parameter konfigurasi Captcha langsung saat pemanggilan directive:
| Tipe | Deskripsi | Contoh Pemanggilan |
|---|---|---|
text |
Karakter acak dengan rotasi per karakter. | @icaptcha(['length' => 6]) |
math |
Soal aritmatika sederhana. | @icaptcha(['type' => 'math', 'math_operator' => ['+']]) |
city |
Tebak nama kota (vokal disamarkan). | @icaptcha(['type' => 'city']) |
🔒 Validasi Jawaban
Gunakan aturan validasi icaptcha yang disediakan oleh package di Request atau Controller Anda.
// Dalam FormRequest atau Controller public function store(Request $request) { $request->validate([ // ... aturan validasi lainnya 'icaptcha' => 'required|icaptcha', ], [ 'icaptcha.required' => 'Mohon masukkan kode keamanan.', 'icaptcha.icaptcha' => 'Jawaban kode keamanan tidak tepat.', ]); // ... Logika login atau pendaftaran berhasil }
Perhatian: Aturan
icaptchasecara otomatis mengambil jawaban yang benar dari session, membandingkannya dengan input pengguna, dan menghapus kunci session setelah validasi.
⚙️ Detail Konfigurasi
Berikut adalah kunci-kunci penting di config/icaptcha.php:
| Kunci | Tipe | Deskripsi | Default |
|---|---|---|---|
type |
string |
Tipe Captcha: 'text', 'math', atau 'city'. |
'text' |
session_key |
string |
Kunci yang digunakan untuk menyimpan jawaban di session. | 'icaptcha_code' |
width |
int |
Lebar gambar Captcha (piksel). | 180 |
height |
int |
Tinggi gambar Captcha (piksel). | 50 |
font_path |
string |
Path ke file font TTF yang digunakan. | Path default |
math_operator |
array |
Operator yang digunakan untuk tipe math (e.g., ['+', '-']). |
['+', '-'] |
Lisensi
Package ini dirilis di bawah Lisensi MIT.