Menambahkan Validasi Password di Laravel

Menambahkan Validasi Password di Laravel

Admin
Admin・ 28 April 2021
6 min read ・ 5359 views

Validasi Password Laravel - Beberapa hari yang lalu Laravel resmi memperbarui password validation atau validasi password yang berarti semakin lengkap opsi yang dapat kita gunakan dengan tambahan seperti mixedCase yang berarti password setidaknya harus terdiri dari satu huruf besar (uppercase) dan satu huruf kecil (lowercase), Letters yang berarti password setidaknya harus terdiri dari satu huruf, numbers yang berarti password harus ada minimal satu angka, symbols yang berarti harus ada minimal satu simbol dalam password, dan uncompromised yang berarti passwork tidak boleh dikompromikan dalam data leak.

password validation laravel

Pendahuluan

Pada artikel ini, saya akan membagikan tutorial tentang bagaimana penggunaan validation tersebut di laravel versi 8 dengan menggunakan auth package dari jetstream. Di latihan ini nanti kita akan memulainya dari nol atau mulai dari install projek laravel, install jetstream dan seterusnya.

Memulai Latihan

Mari langsung saja kita mulai latihan membuat atau menggunakan password validation atau validasi password di laravel 8 dengan langkah-langkah di bawah ini.

Install Laravel Terbaru

composer create-project laravel/laravel password-validation

Kita awali dengan install laravel terbaru untuk latihan menggunakan password validation di laravel. Jalankan command di atas pada terminal. Disini kita akan menginstall projek laravel yang diberi nama password-validation.

Buat Database

Jika sudah selesai install laravel, selanjutnya kita buat database baru untuk menampung data user saat register nanti. Disini saya menggunakan phpMyAdmin dan jika kalian juga menggunakan phpMyAdmin langsung saja membuat database baru misalnya diberikan nama password-validation. Kemudian jika sudah, jangan lupa untuk setup atau menyesuaikan nama database kalian di file .env.

Install Jetstream

composer require laravel/jetstream
php artisan jetstream:install livewire
npm install
npm run dev
php artisan migrate

Masuk ke langkah install jetstream di projek laravel kita, langsung saja jalankan command-command di atas secara berurutan pada terminal. Disini kita akan menggunakan livewire (*bebas, menggunakan inertia juga bisa). Dan jangan lupa di akhir kita harus memigrasi file migration dengan command php artisan migrate.

Update RegisterController.php

protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'confirmed', Password::min(8)
            ->mixedCase()
            ->letters()
            ->numbers()
            ->symbols()
            ->uncompromised()],
        ]);
    }

Sekarang kita masuk ke koding dengan memperbaru file RegisterController.php yang ada di folder app\Http\Controllers\Auth. Cari function validator, kemudian ubah kodenya menjadi seperti kode di atas, atau bisa langsung copy kode di atas kemudian replace function validator yang sudah ada. Disini kita menggunakan validation atau validasi berupa min(8) yang berarti password minimal berisi 8 karakter, mixedCase, letters, numbers, symbols, dan uncompromised.

use Illuminate\Validation\Rules\Password;

Dan jangan lupa untuk menggunakan atau import Rules Password dengan kode di atas pada baris teratas RegisterController.php

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\Models\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rules\Password;

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::HOME;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'confirmed', Password::min(8)
            ->mixedCase()
            ->letters()
            ->numbers()
            ->symbols()
            ->uncompromised()],
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\Models\User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }
} 

Sehingga sekarang, secara keseluruhan kode yang ada di file RegisterController.php akan seperti kode di atas. Kalian bisa langsung copy kode di atas lalu replace semua kode yang ada di file RegisterController.php kalian.

Pengujian

Validasi Password Laravel

Setelah mengikuti langkah-langkah sebelumnya mulai dari install laravel, install jetstream, membuat database, setup file .env, update kode RegisterController, nah sekarang tiba waktunya untuk pengujian. Untuk menguji dari apa yang telah kita buat di latihan ini, silahkan jalankan local server dengan php artisan serve kemudian masuk ke menu register. Silahkan isi form-form yang tersedia, pada form password silahkan dicoba memasukkan value misalnya asasasas dan masukkan juga value yang sama pada form confirm password, maka hasilnya akan menampilkan error seperti di atas (The password must contain at least one uppercase and one lowercase, The password must contain at least one symbol, The password must contain at least one number). Error tersebut muncul karena kita tidak memasukkan password sesuai ketentuan dari apa yang telah kita buat pada latihan ini. 

Sekarang coba masukkan ulang dengan value yang berbeda yaitu mengikuti ketentuan password yang harus terdiri minimal 8 karakter, minimal satu huruf besar, minimal satu huruf kecil, minimal satu symbol (_,-,%,#,@, dan lain-lain) dan minimal satu nomor atau angka. Apa yang terjadi ? ya, password dapat diterima dan kita sudah bisa register akun user. WELL DONE.

Kesimpulan

Sampai disini kita sudah berhasil membuat atau menambahkan password validation atau validasi password dengan ketentuan yang telah kita buat (min(8), mixedCase, letters, numbers, symbols dan uncompromised). Dengan validasi password atau kombinasi password seperti ini akan sangat memberikan keamanan terhadap akses data user maupun website kita. Dan sekarang untuk membuat validasi password yang seperti di latihan ini, sangat mudah sekali membuat validasi password di laravel dengan pembaruan tersebut.

Sekian artikel kali ini, jika ada kritik, saran, masukan, atau apapun itu yang ingin didiskusikan, silahkan tulis komentar di bawah ini dan sampai jumpa di artikel berikutnya.

Tinggalkan Komentar
Loading Comments