Langsung ke konten utama

Reset Password Laravel 8 API

Pada kasus kali ini saya menggunakan Laravel 8 (buat API) frontend Vue Js:

Pertama siapkan routingnya pada folder routes - api.php

Route::post('forgot-password', [UserController::class'forgotPassword']);
Route::post('reset-password', [UserController::class'resetPassword']);

 

Tambahkan di UserController.php atau anda bisa nambah controller baru.

public function forgotPassword(Request $request)
    {
        $request->validate(['email' => 'required|email']);

        $status = Password::sendResetLink(
            $request->only('email')
        );

        if($status == Password::RESET_LINK_SENT){
            return [
                'status' => __($status)
            ];
        }

        throw ValidationException::withMessages([
            'email' => [trans($status)],
        ]);
    }

    public function resetPassword(Request $request)
    {
        $request->validate([
            'token' => 'required',
            'email' => 'required|email',
            'password' => ['required''confirmed'RulesPassword::defaults()],
        ]);

        $status = Password::reset(
            $request->only('email''password''password_confirmation''token'),
            function ($useruse ($request) {
                $user->forceFill([
                    'password'=> Hash::make($request->password),
                    'remember_token' => Str::random(60),
                ])->save();

                event(new PasswordReset($user));
            }
        );

        if($status == Password::PASSWORD_RESET){
            return response([
                'message' => 'Password reset successfully'
            ]);
        }

        return response([
            'message' => __($status)
        ], 500);
    }

 Tambahkan di model User.php

public function sendPasswordResetNotification($token)
    {
        $url = 'http://localhost:8000/reset-password?token=' . $token;

        $this->notify(new ResetPasswordNotification($url));
    }

 Jalankan notification reset password melalui terminal

php artisan make:notification ResetPasswordNotification 

 Lalu buka file ResetPasswordNotification.php

Tambahkan url 

public $url;
 
public function __construct(string $url)
{
    $this->url = $url;
}
 
public function toMail($notifiable)
    {
        return (new MailMessage)
                    ->line('Forgot Password?')
                    ->action('Click to reset'$this->url)
                    ->line('Thank you for using our application!');
    }
 

 Langkah selanjutnya tinggal testing apakah berjalan dengan lancar

http://localhost:8000/api/forgot-password
{
  "status": "We have emailed your password reset link!"
}
artinya sudah dikirim ke email
 

http://localhost:8000/api/reset-password

 

Jangan lupa samakan ubah config .env 

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=xxxx
MAIL_PASSWORD=xxxx
MAIL_ENCRYPTION=tls

Jika menggunakan gmail setting dulu di bagian keamanan - akses aplikasi yang kurang aman di uncheclist.
MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=72ce0f2cdeb928 MAIL_PASSWORD=80c25747b32926 MAIL_ENCRYPTION=tls

Komentar

Postingan populer dari blog ini

Apa itu API

Bagaimana membuat aplikasi atau website dengan performa yang baik? Bagaimana membuat website yang mudah dikembangkan di berbagai platform? Bagaimana mengintegrasikan website dengan aplikasi yang berbeda bahasa pemrograman? Jawabannya adalah dengan membuat API. Untuk membuat API, arsitektur yang paling populer yaitu RESTful API.   Pada tutorial kali ini saya akan sharing bagaimana membuat RESTful API menggunakan node.js, express, dan MySQL secara step by step. Api itu RESTful API? RESTful API  merupakan implementasi dari API  ( Application Programming Interface ). REST (REpresentational State Transfer) adalah suatu arsitektur metode komunikasi yang menggunakan protocol HTTP untuk pertukaran data dan metode ini sering diterapkan dalam pengembangan aplikasi. Mungkin terdengar rumit tapi sebenarnya tidak. Tujuannya untuk menjadikan system dengan performa yang baik, cepat, dan mudah untuk dikembangkan ( scale ) terutama dalam pertukaran dan komunikasi data...

Latihan J2ME ChoiceGroup Tampil

import javax.microedition.lcdui.*; import javax.microedition.midlet.*;   public class Midlet_8 extends MIDlet implements CommandListener {     private Display display;     private Form frmInput;     private ChoiceGroup cgPilihan;     private TextField nama;     private Command cmdKeluar;     private Command cmdTampil;     private CommandListener listener;     private StringItem siPilih;     //private Alert alert;     public Midlet_8 () {  }     public void startApp() {         //Form         frmInput = new Form("Form Input Nama");         nama = new TextField("Nama: ", null, 35, TextField.ANY);         frmInput.append(nama);         cgPilihan = new ChoiceGroup("Pilih Jurusan : ", Choice.POPUP);         cgPilihan.append("Teknik Inf...
tugasAlgoLanjut HITUNG LUAS PERSEGI Nama kelompok : Aditya Dwi Saputra (111 0511 003) Syamsul Amin (111 0511 048) Studi Kasus Pada kesempatan kali ini kelompok kami ingin membuat aplikasi yang sederhana untuk menghitung luas persegi panjang. Yang terdiri dari: ADT (Abstract Data type), Struct, fungsi, array. Pseudecode mulai mendeklarasikan typedef int jumlah struct{ jumlah hasiluas; }persegi; menginisialisasi fungsi luas void luas (jumlah p, jumlah l){ persegi.hasiluas=p*l; } melakukan perulangan sebanyak data array input data persegi ke array input panjang input lebar pemanggilan fungsi luas tutup perulangan cetak data yang tersimpan didalam array finish Source Code #include //deklarasi ADT typedef int jumlah; //deklarasi struct struct{ jumlah hasiluas; }persegi; //Fungsi penghitung luas. void luas (jumlah p, jumlah l){ persegi.hasiluas = p * l; } //Fungsi utama. int main() { //Pendeklarasian variabel yang dibutuhkan. ...