Home Paket Belajar Bootcamp Instruktur

Tutorial Laravel 13 REST API Authentication #7 – Membuat API Login & Testing API

Panduan lengkap membuat REST API authentication di Laravel 13. Dalam tutorial ini, teman-teman akan belajar membuat fitur register, login, logout, dan mendapatkan informasi user yang sedang login menggunakan API, lengkap dengan validasi dan penanganan error. Cocok untuk pemula yang ingin memahami autentikasi berbasis API di Laravel.

✅ Telah dilihat 449 kali

Rating: 5.00 ⭐

... 18 March 2026, 10:41

Function Login

Selain pada register, fungsi ini bertindak sebagai gerbang utama bagi pengguna untuk mendapatkan token. Token yang diberikan digunakan sebagai kunci autentikasi untuk mengakses URL yang memerlukan token sebagai bagian dari sistem keamanan API.

Penjelasan ini menekankan bahwa token berfungsi untuk autentikasi dan memberikan akses ke API yang dilindungi. Tambahkan fungsi login berikut ke dalam AuthController:

public function login(Request $request)
    {
        // Validasi input
        $validator = Validator::make($request->all(), [
            'email' => 'required|email',
            'password' => 'required',
        ]);

        if ($validator->fails()) {
            return response()->json([
                'success' => false,
                'message' => 'Validation errors occurred.',
                'errors' => $validator->errors(),
            ], 422);
        }

        // Verifikasi kredensial
        if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) {
            $user = Auth::user();
            $responseData = [
                'token' => $user->createToken($user->name)->plainTextToken,
                'name' => $user->name,
            ];

            // Kirim respons sukses
            return response()->json([
                'success' => true,
                'message' => 'Login successful.',
                'data' => $responseData,
            ], 200);
        }

        // Kredensial salah
        return response()->json([
            'success' => false,
            'message' => 'Invalid credentials.',
        ], 401);
    }

1. Deklarasi Fungsi

public function login(Request $request)
  • Method login bersifat publik pada controller.
  • Parameter $request berisi semua data yang dikirim client, seperti email dan password.

2. Validasi Input

$validator = Validator::make($request->all(), [
    'email' => 'required|email',
    'password' => 'required',
]);
  • Membuat validator untuk memeriksa input user.
  • Aturan validasi:
    • email: wajib (required) dan harus berformat email (email).
    • password: wajib diisi (required).
if ($validator->fails()) {
    return response()->json([
        'success' => false,
        'message' => 'Validation errors occurred.',
        'errors' => $validator->errors(),
    ], 422);
}
  • Jika validasi gagal:
    • Kirim response JSON dengan status 422 Unprocessable Entity.
    • success: false → menandakan gagal.
    • errors → daftar error per field.
    • message → pesan umum.

3. Verifikasi Kredensial

if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) {
  • Auth::attempt(...) → mencoba login user dengan kombinasi email dan password.
  • Laravel otomatis membandingkan password dengan hash yang tersimpan di database.
  • Jika kredensial valid → login berhasil.
$user = Auth::user();
$responseData = [
    'token' => $user->createToken($user->name)->plainTextToken,
    'name' => $user->name,
];
  • Auth::user() → mengambil user yang baru saja login.
  • createToken($user->name) → membuat token API baru (menggunakan Laravel Sanctum).
  • plainTextToken → token dikirim ke client agar bisa digunakan di request selanjutnya.
return response()->json([
    'success' => true,
    'message' => 'Login successful.',
    'data' => $responseData,
], 200);
  • Mengirim JSON sukses:
    • success: true
    • message: login berhasil
    • data: token + nama user
  • Status HTTP 200 OK

4. Jika Kredensial Salah

return response()->json([
    'success' => false,
    'message' => 'Invalid credentials.',
], 401);
  • Jika Auth::attempt gagal → kredensial salah.
  • Response JSON:
    • success: false
    • message: Invalid credentials
  • Status HTTP 401 Unauthorized → user tidak memiliki hak akses.

Ringkasan Alur Login

  1. Ambil input dari request (email + password).
  2. Validasi input.
  3. Jika validasi gagal → kirim 422.
  4. Jika valid → coba login dengan Auth::attempt.
  5. Jika login berhasil:
    • Ambil user
    • Buat token API baru
    • Kirim response sukses
  6. Jika login gagal → kirim response 401.

Konfigurasi Rute Login

Silakan buka file rute yakni api.php, kemudian ubah menjadi seperti berikut ini:

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\AuthController;

Route::middleware('auth:sanctum')->group(function () {
    Route::get('/user', [AuthController::class, 'getUser']);
    Route::post('/logout', [AuthController::class, 'logout']);
});


Route::post('register', [AuthController::class, 'register']);
Route::post('login', [AuthController::class, 'login']);

Test API

Endpoint Methode
http://127.0.0.1:8000/api/login POST

Silakan buat request baru dengan nama request LOGIN dengan menggunakan methode POST .

Lebih jelasnya bisa dilihat pada gambar berikut ini

Sampai pada materi kali ini kita sudah berhasil belajar membuat API Authentication sederhana menggunakan laravel 13.

Daftar eBook