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

1.0.0 2025-11-26 09:08 UTC

This package is auto-updated.

Last update: 2025-11-26 09:13:01 UTC


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.php sesuai 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 icaptcha secara 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.