Change password teknik dengan laravel

Mungkin anda yang sedang membaca ada yang sudah tau, ada juga yang belum, jadi bagi anda yang sudah tau teknik nya silahkan skip. Jika belum ayo kita belajar bersama.

Saya akan menggunakan 1 route disini (patch & get)

Route::prefix('password')->group(function () {
    Route::get('change', 'AccountController@password')->name('password.change');
    Route::patch('change', 'AccountController@password_update');
});

Saya sengaja membuat route group pada password agar tidak bersatu dengan route lainnya. Untuk AccountController.php pada method password adalah basic, hanya menampilkan view nya seperti.

public function password()
{
    return view('account.password');
}

Pertama yang kita akan lakukan adalah membuat form untuk change passwordnya seperti.

<form action="{{ route('password.change') }}" method="post">
    {{ csrf_field() }}
    {{ method_field("PATCH") }}
    <div class="form-group">
        <label for="old_password" class="control-label">Old Password</label>
        <input type="password" name="old_password" id="old_password" class="form-control" required />
    </div>
    <div class="form-group">
        <label class="col-form-label text-lg-right">Password</label>
        <input type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>
        @if ($errors->has('password'))
            <div class="invalid-feedback">
                <strong>{{ $errors->first('password') }}</strong>
            </div>
        @endif
    </div>
    <div class="form-group">
        <label class="col-form-label text-lg-right">Confirm Password</label>
        <input type="password" class="form-control" name="password_confirmation" required>
    </div>
    <button type="submit" class="btn btn-primary">Change password</button>
</form>

Keep in mind, saya disini menggunakan bootstrap 4, tidak usah khawatir jika anda tidak mengerti bootstrap 4, karna itu hanya lah style saja, hal yang paling utama kan sebenarnya ada pada teknik password di controllerya.

Jika anda lihat sedikit komplikasi, itu hanya untuk menampilkan errors saja.

Yang penting anda harus perhatikan adalah name field tersebut masing - masing berbeda, ada password_confirmation, old_password, dan password.

Next jika anda lihat ada tambahan untuk methodnya saya buat patch. Itu karna pada route nya saya buat patch. Kenapa pakai patch, ya karna memang jika kita ingin mengedit data, itulah method yang paling direkomendasikan, termasuk juga laravel.

Selanjutnya untuk method password_update kita buat seperti.

public function password_update()
{
    // Validation
    $this->validate(request(), [
        'password' => 'required|string|min:6|confirmed',
    ]);

    // All variables
    $user_password = auth()->user()->password;
    $old_password = request('old_password');
    $password = request('password');

    // Cek jika password valid
    if (\Hash::check($old_password, $user_password)) {

        // Jika password telah terverifikasi valid, maka akan dilanjutkan
        auth()->user()->update([
            'password' => $password
        ]);

        dd("Your password changed");
    } else {
        // Jika password yang lama tidak sama dengan password yang sedang dimasukkan (old_password)
        dd("Something wrong! Double check your old password.");
    }
}

Jika sudah, maka tutorial ini juga telah selesai, karna main thing nya itu adalah di controllernya. Jika anda mengerti basic nya checking password. Maka itu akan sangat terasa mudah jika anda mengimplementasikannya dengan menggunakan laravel.

Thanks for reading. See you on the next comin' post :)



Generic placeholder image
By Irsyad A. Panjaitan
I am error

Comments

Afandi Siregar's image
Afandi Siregar

Thanks brother.

Irsyad A. Panjaitan's image
Irsyad A. Panjaitan

Sipp.

Please login to leave a comment!