Membuat Custom Validation Password Strength Dengan Codeigniter 4

Membuat Custom Validation Password Strength Dengan Codeigniter 4.Validasi untuk kekuatan dari password saat ini sangat penting,karena semakin canggihnya teknologi untuk melakukan brute force password.Daripada membuat fungsi helper untuk melakukan validasi,kita bisa membuat custom validation.

Membuat Folder Validation

Langkah pertama yang kita lakukan adalah membuat folder bernama Validation di dalam folder app,folder ini nantinya berisi custom validation.

Membuat Custom Validation

Buat file baru bernama PasswordStrength.php di dalam folder Validation.Kemudian buka file dan tambahkan code dibawah ini.

<?php
namespace App\Validation;

class PasswordStrength{
  public $length = 10;

  public $lengthCheck = false;

  public $uppercaseCheck = false;

  public $numericCheck = false;

  public $specialCharacterCheck = false;
  
  public function password_strength(string $str,string $length, array $data, string &$error = null){
    $this->lengthCheck = strlen($str) >= $this->length;
    $this->uppercaseCheck = strtolower($str) !== $str;
    $this->numericCheck = (bool) preg_match('/[0-9]/', $str);
    $this->specialCharacterCheck = (bool) preg_match('/[^A-Za-z0-9]/', $str);
    if ($this->lengthCheck && $this->uppercaseCheck && $this->numericCheck && $this->specialCharacterCheck)
    {
        return true;
    }
    //pesan jika gagal validasi
    $error = "Password minimal {$length} karakter dan mengandung satu huruf besar,1 angka dan 1 special karakter";
    return false;
  }
}

Untuk custom validation diatas kita membuat password harus memiliki huruf besar,angka dan special karakter,dan untuk panjangnya sendiri bisa diatur saat memanggil custom validation.

Load Custom Validation

Agar custom validation bisa digunakan,buka file app/Config/Validation.php kemudian cari variabel $ruleSets dan tambahkan custom validation yang tadi telah dibuat.

<?php namespace Config;
# tambahkan perintah use untuk file custom validation kita
use \App\Validation\PasswordStrength;
class Validation
{
	//--------------------------------------------------------------------
	// Setup
	//--------------------------------------------------------------------

	/**
	 * Stores the classes that contain the
	 * rules that are available.
	 *
	 * @var array
	 */
	public $ruleSets = [
		\CodeIgniter\Validation\Rules::class,
		\CodeIgniter\Validation\FormatRules::class,
		\CodeIgniter\Validation\FileRules::class,
		\CodeIgniter\Validation\CreditCardRules::class,
		//panggil nama class dari custom validation
		PasswordStrength::class,
	];

Menggunakan Custom Validation

Setelah ditambahkan di file app/Config/Validation.php ,kita sudah bisa memanggilnya di controller.

<?php
public function register(){
    $validation = [
        'password'=>'required|password_strength[8]'
    ];
    // code lainnya
}

Jika kita lihat code diatas ,untuk password menggunakan dua rules

  • required rules bawaan dari codeigniter
  • password_strength[8] rules yang kita buat didalam PasswordStrength.php,angka 8 adalah panjang dari password,teman-teman bisa mengantinya sesuai dengan kebutuhan

Sekian tutorial kali ini,jika ada yang kurang jelas bisa ditanyakan dibawah.Kalau diatas susah gak ada kolom komentar.