Jika Anda sudah membaca sebagian besar artikel yang saya tulis di situs ini, Anda pasti sering menemukan kalimat yang isinya kurang lebih menyatakan bahwa betapa mudah sekaligus fleksibelnya PHPMaker untuk membangun Aplikasi Web. Pernyataan tersebut memang beralasan, alias benar apa adanya. Fleksibilitas yang dimiliki oleh PHPMaker di antaranya memungkinkan Web Developer dapat menerapkan business-logic sendiri melalui penambahan sedikit kode dari bagian Server Events.
Tidak terkecuali buat penanganan validasi Pengguna yang sedang Login ke Aplikasi Web. Anda sebagai Web Developer dapat menambahkan kode Anda sendiri untuk memvalidasi data Pengguna sesuai dengan kebutuhan tertentu. Katakanlah Anda ingin memvalidasi Pengguna di Aplikasi Web Anda menggunakan LDAP; selain hanya menggunakan validasi berdasarkan tabel users yang telah ditentukan dari pengaturan Security -> Use Existing Table aplikasi PHPMaker. Hal ini pun bisa diatasi oleh PHPMaker dengan sangat mudah.
PHPMaker telah menyediakan server event yang bernama User_CustomValidate untuk memvalidasi Pengguna Aplikasi Web Anda dengan cara Anda sendiri. Seperti namanya, server event ini berisi kode yang sifatnya kostum untuk memvalidasi Pengguna sesuai dengan aturan tertentu. Server event ini dapat Anda akses dari lokasi: Server Events -> Global -> All Pages dalam project PHPMaker Anda. Perlu diingat, bahwa server event ini merupakan member dari class Security yang digunakan oleh PHPMaker. Artinya, Anda dapat mengacu langsung kepada member lainnya yang terdapat di class Security itu.
Server event User_CustomValidate dieksekusi sebelum validasi Pengguna yang standar selama ini digunakan oleh PHPMaker untuk Aplikasi Web Anda. Argumen yang terdapat di server event ini ada dua, yaitu username dan password; yang dimasukkan oleh Pengguna melalui form Login. Cukup kembalikan nilai TRUE jika username dan password tersebut memenuhi validasi yang Anda tentukan tadi. Nilai kembalian standar yang dikembalikan oleh server event ini adalah FALSE. Itu artinya, PHPMaker akan menggunakan kode validasi asli bawaan PHPMaker jika Anda tidak mengubahnya menjadi TRUE.
Catatan: Sejak PHPMaker versi 9, standar validasi akan dijalankan setelah server event User_CustomValidate selesai dijalankan. Jika Anda mengembalikan nilai TRUE, maka Pengguna akan selalu memenuhi/melewati standar validasi yang digunakan oleh PHPMaker, dan akan mendapatkan User ID dan User Level, jika ada. Jika Anda mengembalikan nilai FALSE, maka standar validasi bawaan PHPMaker yang akan dijalankan secara normal.
Jika Anda menggunakan fitur Advanced Security (Security -> Use Existing Table -> Advanced) di project PHPMaker Anda), maka Anda tetap memerlukan tabel users untuk menyimpan data Pengguna seperti User ID dan User Level, meskipun nilai field password dapat berupa string kosong atau nilai apapun jika Anda mengembalikan nilai TRUE.
Supaya semakin lebih jelas, mari kita simak contoh berikut. Kode ini menunjukkan bagaimana validasi kostum dapat ditambahkan oleh Web Developer menggunakan Login ke server LDAP dengan sangat mudah. Contoh kode berikut juga dapat Anda lihat dengan mengklik tombol Code Repository dari bagian Server Events di dalam project PHPMaker Anda.
Untuk mencoba kode ini, pastikan Anda sudah pernah (berpengalaman) menggunakan metode otentikasi menggunakan kode PHP ke server LDAP, dan sudah mengaktifkan extension php_ldap di web server yang Anda pakai. Contoh, saya menggunakan Wampserver, maka extension php_ldap sudah saya aktifkan dari menu PHP -> PHP Extensions pada aplikasi Wampserver saya (sesuaikan dengan web server yang Anda pakai).
function User_CustomValidate(&$usr, &$pwd) { if (!function_exists("ldap_connect")) // cek apakah function ldap_connect terdeteksi dari web server die("LDAP belum terinstal atau diaktifkan."); // jika tidak, tampilkan pesan dan langsung exit $ldapconn = ldap_connect("ldap.example.com", 389) or die("Tidak terhubung ke server LDAP."); // jangan lupa untuk menyesuaikan nama host dan port server LDAP-nya if ($ldapconn && ldap_bind($ldapconn, $usr, $pwd)) { // jika koneksi ke LDAP valid $this->setCurrentUserName($usr); // set nama pengguna dari parameter username return TRUE; // pastikan TRUE supaya validasi standar tidak dilakukan lagi } }
Dengan menggunakan server event User_CustomValidate, maka Anda sebagai Web Developer dapat menambahkan kode Anda sendiri untuk memvalidasi Pengguna Aplikasi Web Anda dengan menggunakan metode lainnya selain contoh LDAP di atas.
Betapa nikmatnya menggunakan PHPMaker, bukan? 🙂
[…] Informasi tambahan lainnya yang perlu untuk diketahui, server event User_LoggingIn akan dipanggil sebelum server event User_CustomValidate yang dulu sudah pernah kita bahas melalui artikel: Alternatif Validasi Pengguna Aplikasi Web dari PHPMaker. […]