Tutorial Laravel 11 RESTful API #6 Logout API

Belajar membuat RESTful API dengan Laravel 11 melalui tutorial step-by-step yang mudah dipahami. Laravel 11 menawarkan fitur terbaru dan lebih optimal untuk membangun API yang cepat, aman, dan scalable.

✅ Telah dilihat 422 kali

Rating: 5.00 ⭐

... 12 March 2025, 16:05

Function Logout

Fungsi ini bertujuan untuk menghapus semua token yang terkait dengan user yang sedang login. Dengan demikian, saat mencoba mengakses rute yang dilindungi oleh middleware Sanctum, maka pengguna akan dianggap unauthenticated. Tambahkan fungsi berikut ke dalam AuthController:

public function logout(Request $request)
    {
        // Ambil pengguna yang sedang login
        $user = Auth::user();

        // Periksa apakah pengguna memiliki token
        if ($user->tokens->isEmpty()) {
            return response()->json([
                'success' => false,
                'message' => 'No active tokens found for this user.',
            ], 404);
        }

        // Hapus semua token yang terkait dengan pengguna
        $user->tokens->each(function ($token) {
            $token->delete();
        });

        // Kirim respons sukses
        return response()->json([
            'success' => true,
            'message' => 'Successfully logged out.',
        ], 200);
    }

Pada kode diatas terdapat kondisi, jika tidak ada token aktif, maka function logout akan menampilkan pesan response No active tokens found for this user dengan status code 404. Apabila terdapat token aktif yang ditemukan maka akan muncul status code 200 dengan response Successfully logged out. Dengan kondisi ini, pengguna akan mendapatkan pesan yang lebih informatif jika mereka mencoba logout tanpa memiliki token aktif.

Konfigurasi Rute Logout

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::middleware('web')->group(function () {
    Route::post('register', [AuthController::class, 'register']);
    Route::post('logout', [AuthController::class, 'logout']);
});

Test API

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

Silakan buat request baru dengan nama request LOGOUT dengan menggunakan methode POST . Lebih jelasnya bisa dilihat pada gambar berikut ini

Respon Ketika Sukses Menghapus Token

Respon Ketika Tidak ada Token Aktif

Pada materi berikutnya, kita akan membuat satu fungsi lagi didalam AuthController, yakni fungsi Login.

Daftar eBook