Gameglimmer
  • AI
  • Produktivitas
  • Website
  • Hosting
  • Laravel
  • Database
No Result
View All Result
Gameglimmer
  • AI
  • Produktivitas
  • Website
  • Hosting
  • Laravel
  • Database
No Result
View All Result
Gameglimmer
No Result
View All Result
Home API

Laravel Sanctum untuk Otentikasi API: Keamanan Data Tingkat Tinggi

Seraphina Rivers by Seraphina Rivers
March 18, 2025
in API, Development, Keamanan, Online, PHP
0
Share on FacebookShare on Twitter

Otentikasi API merupakan aspek krusial dalam pengembangan aplikasi web modern. Tanpa sistem otentikasi yang kuat, data sensitif rentan terhadap akses yang tidak sah. Dalam dunia Laravel, Laravel Sanctum hadir sebagai solusi elegan dan powerful untuk mengamankan API Anda. Artikel ini akan membahas secara mendalam tentang Laravel Sanctum untuk Otentikasi API: Keamanan Data Tingkat Tinggi, mulai dari konsep dasar hingga implementasi praktis. Kita akan menyelami bagaimana Sanctum menyederhanakan proses otentikasi, meningkatkan keamanan aplikasi Anda, dan memberikan pengalaman pengguna yang lebih baik.

Apa Itu Otentikasi API dan Mengapa Penting?

Sebelum membahas Laravel Sanctum, mari kita pahami dulu apa itu otentikasi API dan mengapa ia begitu penting. Otentikasi API adalah proses memverifikasi identitas aplikasi atau pengguna yang mencoba mengakses API Anda. Tujuannya adalah untuk memastikan bahwa hanya pengguna atau aplikasi yang berwenang yang dapat mengakses data dan fungsi tertentu.

Bayangkan API sebagai gerbang ke gudang data Anda. Otentikasi API adalah kunci yang membuka gerbang tersebut. Tanpa kunci yang benar, siapapun tidak boleh masuk. Jika tidak ada otentikasi, data sensitif seperti informasi pengguna, detail keuangan, dan lainnya bisa dicuri atau dimanipulasi oleh pihak yang tidak bertanggung jawab.

Otentikasi API sangat penting karena:

Related Post

Dokumentasi Laravel Bahasa Indonesia Terbaru: Referensi Lengkap untuk Developer

July 4, 2025

Cara Menggunakan Eloquent ORM di Laravel: Database Jadi Lebih Mudah Dikelola

July 4, 2025

Template Admin Dashboard Gratis untuk Laravel: Hemat Waktu dan Biaya!

July 4, 2025

Jasa Pembuatan Website Berbasis Laravel Profesional: Solusi Website Modern & Efisien

July 4, 2025
  • Melindungi Data Sensitif: Mencegah akses tidak sah ke data pribadi dan rahasia bisnis.
  • Mencegah Penyalahgunaan API: Membatasi akses ke API berdasarkan izin yang diberikan, menghindari penggunaan berlebihan atau penyalahgunaan.
  • Memastikan Kepatuhan: Memenuhi persyaratan hukum dan regulasi terkait perlindungan data.
  • Membangun Kepercayaan: Meningkatkan kepercayaan pengguna dengan menunjukkan komitmen terhadap keamanan data.

Mengapa Memilih Laravel Sanctum untuk Otentikasi API?

Laravel menyediakan berbagai opsi otentikasi, termasuk Passport dan JWT. Lalu, mengapa memilih Laravel Sanctum? Sanctum menawarkan beberapa keunggulan utama:

  • Ringan dan Mudah Digunakan: Sanctum sangat mudah diintegrasikan ke dalam proyek Laravel Anda. Konfigurasinya minimal, sehingga Anda dapat dengan cepat mengamankan API Anda.
  • Sempurna untuk Single-Page Applications (SPAs) dan Mobile Apps: Sanctum dirancang khusus untuk menangani otentikasi untuk SPA dan aplikasi seluler yang berkomunikasi dengan API Laravel Anda. Ia memanfaatkan cookies dan sessions Laravel untuk autentikasi, sehingga cocok untuk aplikasi yang stateful.
  • Token-Based Authentication: Sanctum menggunakan token API untuk mengautentikasi permintaan dari aplikasi lain (seperti aplikasi seluler) atau saat Anda membutuhkan autentikasi stateless.
  • Security yang Solid: Sanctum memanfaatkan fitur keamanan bawaan Laravel, seperti CSRF protection dan encryption, untuk melindungi API Anda dari berbagai serangan.
  • Dukungan Laravel yang Mantap: Sanctum adalah paket resmi Laravel, yang berarti didukung penuh oleh tim Laravel dan komunitas. Anda dapat yakin bahwa Sanctum akan terus diperbarui dan dipelihara.

Singkatnya, Laravel Sanctum adalah pilihan ideal jika Anda mencari solusi otentikasi API yang sederhana, aman, dan terintegrasi dengan baik dengan Laravel.

Memahami Konsep Dasar Laravel Sanctum: Cara Kerja Otentikasi yang Aman

Untuk memahami bagaimana Laravel Sanctum memberikan keamanan data tingkat tinggi, kita perlu memahami konsep dasarnya:

  1. Token API: Sanctum menggunakan token API untuk mengautentikasi permintaan. Token ini adalah string acak yang unik yang terkait dengan pengguna tertentu. Ketika pengguna berhasil login, token API akan dibuat dan dikembalikan ke aplikasi klien.

  2. Cookie-Based Authentication: Untuk SPA yang berjalan di domain yang sama dengan API, Sanctum menggunakan cookie untuk mengautentikasi pengguna. Ketika pengguna login, Sanctum akan membuat cookie sesi yang berisi ID pengguna.

  3. Middleware EnsureFrontendRequestsAreStateful: Middleware ini memastikan bahwa permintaan dari frontend (SPA) yang berjalan di domain yang sama diperlakukan sebagai permintaan stateful yang dapat menggunakan cookie sesi.

  4. Autentikasi Stateless: Untuk aplikasi yang tidak menggunakan cookie (seperti aplikasi seluler), Sanctum dapat mengautentikasi permintaan berdasarkan token API yang dikirim dalam header Authorization.

  5. Kemampuan (Abilities/Scopes): Sanctum memungkinkan Anda untuk menentukan kemampuan (abilities) atau scopes untuk setiap token API. Kemampuan ini menentukan izin apa yang dimiliki token tersebut. Misalnya, Anda dapat membuat token yang hanya memiliki izin untuk membaca data tetapi tidak untuk mengubahnya.

Dengan mengkombinasikan cookie-based authentication untuk SPA dan token-based authentication untuk aplikasi seluler dan sistem lain, Laravel Sanctum menyediakan solusi otentikasi yang fleksibel dan aman.

Instalasi dan Konfigurasi Laravel Sanctum: Langkah Demi Langkah

Berikut adalah langkah-langkah untuk menginstal dan mengkonfigurasi Laravel Sanctum di proyek Laravel Anda:

  1. Instalasi Package: Gunakan Composer untuk menginstal package Sanctum:

    composer require laravel/sanctum
  2. Migrasi Database: Jalankan perintah migrasi untuk membuat tabel yang diperlukan oleh Sanctum:

    php artisan migrate

    Ini akan membuat tabel personal_access_tokens yang menyimpan token API Anda.

  3. Konfigurasi Model User: Tambahkan trait HasApiTokens ke model User Anda:

    <?php
    
    namespace AppModels;
    
    use IlluminateContractsAuthMustVerifyEmail;
    use IlluminateDatabaseEloquentFactoriesHasFactory;
    use IlluminateFoundationAuthUser as Authenticatable;
    use IlluminateNotificationsNotifiable;
    use LaravelSanctumHasApiTokens;
    
    class User extends Authenticatable
    {
        use HasApiTokens, HasFactory, Notifiable;
    
        // ...
    }
  4. Konfigurasi Middleware: Pastikan middleware EnsureFrontendRequestsAreStateful terdaftar di kernel HTTP Anda (app/Http/Kernel.php):

    protected $middlewareGroups = [
        'web' => [
            // ...
            AppHttpMiddlewareEncryptCookies::class,
            IlluminateSessionMiddlewareStartSession::class,
            IlluminateViewMiddlewareShareErrorsFromSession::class,
            AppHttpMiddlewareVerifyCsrfToken::class,
            IlluminateRoutingMiddlewareSubstituteBindings::class,
            LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class, // Tambahkan ini
        ],
    
        // ...
    ];

    Pastikan juga LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class adalah middleware pertama setelah middleware sesi yang telah didaftarkan.

  5. Konfigurasi SPA Domain (Optional): Jika SPA Anda berjalan di domain yang berbeda dari API Anda, Anda perlu mengkonfigurasi variabel SANCTUM_STATEFUL_DOMAINS di file .env Anda. Misalnya:

    SANCTUM_STATEFUL_DOMAINS=example.com,localhost:3000

    Ini memberitahu Sanctum domain mana yang harus dianggap stateful dan diizinkan untuk menggunakan cookie.

Setelah menyelesaikan langkah-langkah ini, Laravel Sanctum siap digunakan di proyek Anda.

Membuat dan Mengelola Token API dengan Laravel Sanctum

Salah satu fitur utama Laravel Sanctum adalah kemampuannya untuk membuat dan mengelola token API dengan mudah. Berikut adalah cara membuat token API:

  1. Login Pengguna: Pastikan pengguna telah berhasil login ke aplikasi Anda.

  2. Membuat Token: Setelah login, Anda dapat membuat token API untuk pengguna tersebut menggunakan metode createToken() dari trait HasApiTokens:

    $token = $user->createToken('nama-token')->plainTextToken;
    
    return ['token' => $token];

    nama-token adalah nama deskriptif untuk token tersebut. plainTextToken adalah token yang akan dikembalikan ke aplikasi klien. Simpan nama token ini di aplikasi Anda untuk penggunaan di masa mendatang.

  3. Kemampuan (Abilities/Scopes): Anda dapat menentukan kemampuan untuk token tersebut dengan memberikan array kemampuan sebagai argumen kedua ke metode createToken():

    $token = $user->createToken('nama-token', ['server:update'])->plainTextToken;

    Dalam contoh ini, token hanya memiliki kemampuan server:update. Anda dapat mendefinisikan kemampuan yang berbeda sesuai dengan kebutuhan aplikasi Anda.

  4. Mengambil Token: Untuk mengambil daftar token yang dimiliki oleh pengguna, Anda dapat menggunakan relasi tokens():

    $tokens = $user->tokens;
  5. Mencabut Token: Untuk mencabut token, Anda dapat menggunakan metode delete():

    $token->delete();

    Ini akan menghapus token dari database, sehingga tidak lagi valid. Pengguna juga dapat mencabut semua token mereka dengan menggunakan metode deleteTokens().

Dengan menggunakan kemampuan ini, Anda dapat mengontrol akses ke API Anda dengan sangat rinci, memastikan bahwa hanya pengguna dan aplikasi yang berwenang yang dapat mengakses data dan fungsi tertentu.

Otentikasi API menggunakan Laravel Sanctum: Contoh Implementasi

Mari kita lihat contoh implementasi otentikasi API menggunakan Laravel Sanctum dalam sebuah controller:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;

class AuthController extends Controller
{
    public function login(Request $request)
    {
        $credentials = $request->validate([
            'email' => 'required|email',
            'password' => 'required',
        ]);

        if (Auth::attempt($credentials)) {
            $user = Auth::user();
            $token = $user->createToken('auth-token')->plainTextToken;

            return response()->json([
                'token' => $token,
                'token_type' => 'Bearer',
            ]);
        }

        return response()->json([
            'message' => 'Invalid credentials'
        ], 401);
    }

    public function logout(Request $request)
    {
        $request->user()->currentAccessToken()->delete();

        return response()->json([
            'message' => 'Successfully logged out'
        ]);
    }

    public function user(Request $request)
    {
        return $request->user();
    }
}

Dalam contoh ini:

  • Metode login() menerima email dan password dari request. Jika autentikasi berhasil, token API dibuat dan dikembalikan ke klien.
  • Metode logout() mencabut token yang sedang digunakan.
  • Metode user() mengembalikan informasi pengguna yang terotentikasi.

Untuk melindungi rute API Anda, Anda dapat menggunakan middleware auth:sanctum:

Route::middleware('auth:sanctum')->get('/user', [AuthController::class, 'user']);

Ini memastikan bahwa hanya pengguna yang terotentikasi yang dapat mengakses rute /user.

Mengamankan SPA dengan Cookie-Based Authentication: Implementasi Terbaik

Laravel Sanctum sangat cocok untuk mengamankan SPA. Berikut adalah implementasi terbaik untuk cookie-based authentication:

  1. Konfigurasi CORS: Pastikan CORS dikonfigurasi dengan benar untuk mengizinkan permintaan dari domain SPA Anda. Anda dapat melakukannya dengan mengatur konfigurasi cors di file config/cors.php.

  2. Kirim Permintaan dari SPA: Ketika pengguna login, kirim permintaan POST ke rute login API Anda dengan kredensial pengguna.

  3. Sanctum Membuat Cookie: Jika autentikasi berhasil, Sanctum akan membuat cookie sesi yang berisi ID pengguna.

  4. Lindungi Rute API: Lindungi rute API Anda dengan middleware auth:sanctum.

  5. Gunakan axios dengan withCredentials: Di SPA Anda, gunakan library seperti axios untuk mengirim permintaan ke API Anda. Pastikan untuk mengatur opsi withCredentials ke true agar cookie disertakan dalam setiap permintaan:

    axios.defaults.withCredentials = true;
    
    axios.get('/api/user')
      .then(response => {
        // ...
      });

Dengan mengikuti langkah-langkah ini, Anda dapat mengamankan SPA Anda dengan cookie-based authentication yang disediakan oleh Laravel Sanctum.

Mengatasi Masalah Umum dalam Implementasi Laravel Sanctum: Tips dan Trik

Meskipun Laravel Sanctum mudah digunakan, Anda mungkin menghadapi beberapa masalah umum selama implementasi. Berikut adalah beberapa tips dan trik untuk mengatasi masalah tersebut:

  • Masalah CORS: Pastikan CORS dikonfigurasi dengan benar. Periksa konfigurasi cors Anda dan pastikan domain SPA Anda diizinkan.

  • Cookie Tidak Disertakan: Pastikan opsi withCredentials diatur ke true di SPA Anda. Juga, pastikan bahwa domain SPA Anda tercantum dalam variabel SANCTUM_STATEFUL_DOMAINS di file .env Anda.

  • Token Tidak Valid: Pastikan token API yang Anda gunakan valid dan belum dicabut. Periksa database personal_access_tokens Anda untuk memastikan token tersebut masih ada.

  • Middleware Tidak Terdaftar: Pastikan middleware EnsureFrontendRequestsAreStateful terdaftar di kernel HTTP Anda dan berada di urutan yang benar.

  • Cache: Bersihkan cache konfigurasi dan tampilan Anda dengan perintah php artisan config:cache dan php artisan view:clear.

Dengan mengikuti tips dan trik ini, Anda dapat mengatasi masalah umum yang mungkin Anda hadapi selama implementasi Laravel Sanctum.

Meningkatkan Keamanan Laravel Sanctum: Praktik Terbaik Tambahan

Selain fitur keamanan bawaan Laravel Sanctum, ada beberapa praktik terbaik tambahan yang dapat Anda terapkan untuk meningkatkan keamanan API Anda:

  • Rate Limiting: Implementasikan rate limiting untuk membatasi jumlah permintaan yang dapat dibuat oleh pengguna atau IP address tertentu dalam jangka waktu tertentu. Ini dapat membantu mencegah serangan brute-force dan DDoS. Laravel menyediakan fitur rate limiting bawaan yang mudah digunakan.

  • Input Validation: Selalu validasi input pengguna untuk mencegah serangan injeksi dan cross-site scripting (XSS). Laravel menyediakan sistem validasi yang kuat.

  • Output Encoding: Enkode output Anda untuk mencegah serangan XSS. Laravel secara otomatis mengenkode output Anda, tetapi pastikan Anda menggunakan sintaks Blade yang benar.

  • Regular Security Audits: Lakukan audit keamanan secara berkala untuk mengidentifikasi dan memperbaiki kerentanan keamanan. Pertimbangkan untuk menggunakan alat scanning keamanan otomatis.

  • Keep Laravel dan Sanctum Up-to-Date: Selalu gunakan versi terbaru Laravel dan Sanctum untuk memastikan Anda mendapatkan perbaikan keamanan terbaru.

Dengan menerapkan praktik terbaik ini, Anda dapat meningkatkan keamanan Laravel Sanctum dan melindungi API Anda dari berbagai serangan.

Laravel Sanctum vs. Laravel Passport: Kapan Menggunakan yang Mana?

Laravel menyediakan dua paket otentikasi API utama: Laravel Sanctum dan Laravel Passport. Kapan Anda harus menggunakan yang mana?

  • Laravel Sanctum: Ideal untuk:

    • SPAs yang berjalan di domain yang sama dengan API.
    • Aplikasi seluler atau sistem lain yang membutuhkan otentikasi stateless.
    • Aplikasi yang membutuhkan otentikasi API sederhana dan mudah dikonfigurasi.
  • Laravel Passport: Ideal untuk:

    • Aplikasi yang membutuhkan otentikasi OAuth2.
    • Aplikasi yang menyediakan API untuk pihak ketiga.
    • Aplikasi yang membutuhkan kontrol yang lebih rinci atas izin akses.

Singkatnya, jika Anda membutuhkan otentikasi API sederhana dan cepat untuk SPA atau aplikasi seluler Anda, Laravel Sanctum adalah pilihan yang tepat. Jika Anda membutuhkan otentikasi OAuth2 yang lebih canggih untuk API publik, Laravel Passport adalah pilihan yang lebih baik.

Kesimpulan: Keamanan Data Tingkat Tinggi dengan Laravel Sanctum

Laravel Sanctum untuk Otentikasi API: Keamanan Data Tingkat Tinggi adalah solusi yang ampuh dan elegan untuk mengamankan API Laravel Anda. Dengan kemudahan penggunaan, fleksibilitas, dan fitur keamanan bawaan, Sanctum adalah pilihan ideal untuk mengamankan SPA, aplikasi seluler, dan sistem lain yang berkomunikasi dengan API Anda. Dengan memahami konsep dasar, mengikuti langkah-langkah instalasi dan konfigurasi, serta menerapkan praktik terbaik tambahan, Anda dapat memastikan bahwa API Anda aman dan terlindungi. Mulailah menggunakan Laravel Sanctum hari ini dan tingkatkan keamanan data aplikasi Anda ke tingkat yang lebih tinggi!

Tags: API AuthenticationAPI SecurityData ProtectionLaravelLaravel SanctumMobile AppSanctumSecuritySingle Page ApplicationToken-Based Authentication
Seraphina Rivers

Seraphina Rivers

Related Posts

AI

Dokumentasi Laravel Bahasa Indonesia Terbaru: Referensi Lengkap untuk Developer

by Atticus Thorne
July 4, 2025
Database

Cara Menggunakan Eloquent ORM di Laravel: Database Jadi Lebih Mudah Dikelola

by venus
July 4, 2025
Development

Template Admin Dashboard Gratis untuk Laravel: Hemat Waktu dan Biaya!

by Luna Abernathy
July 4, 2025
Next Post

Aplikasi AI Terbaik untuk Membantu Bisnis Kecil di Indonesia: Otomatisasi dan Efisiensi

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recommended

Hosting Cloud Server Indonesia Terpercaya: Performa Tinggi & Skalabilitas

March 23, 2025

AI: Etika Penggunaan AI dalam Penulisan Konten: Panduan Lengkap

April 10, 2025

Cara Install Laravel di Windows dengan XAMPP: Panduan Lengkap Langkah Demi Langkah

March 16, 2025

Cara Menggunakan AI untuk Meningkatkan Produktivitas Kerja: Lebih Cerdas, Lebih Cepat

March 18, 2025

Kursus AI Online Bersertifikat untuk Pemula Indonesia: Kuasai Teknologi Masa Depan!

July 5, 2025

Tools AI untuk Riset Keyword Bahasa Indonesia: SEO Lebih Optimal dengan AI!

July 5, 2025

Website AI Gratis untuk Membuat Logo Bisnis: Logo Profesional dalam Hitungan Menit!

July 5, 2025

Cara Menggunakan AI untuk Membuat Konten Artikel Bahasa Indonesia: Hemat Waktu & Ide

July 5, 2025

Gameglimmer

Our media platform offers reliable news and insightful articles. Stay informed with our comprehensive coverage and in-depth analysis on various topics.
Read more »

Recent Posts

  • Kursus AI Online Bersertifikat untuk Pemula Indonesia: Kuasai Teknologi Masa Depan!
  • Tools AI untuk Riset Keyword Bahasa Indonesia: SEO Lebih Optimal dengan AI!
  • Website AI Gratis untuk Membuat Logo Bisnis: Logo Profesional dalam Hitungan Menit!

Categories

  • AI
  • Akurasi
  • Analisis
  • Android
  • Animasi
  • API
  • Aplikasi
  • Bahasa
  • Bandwidth
  • based on the article title "Cara Menggunakan AI untuk Meningkatkan Produktivitas Kerja: Lebih Cerdas
  • Based on the article title "Cara Mengintegrasikan Laravel dengan Database MySQL: Panduan Lengkap"
  • Biaya
  • Bisnis
  • Blog
  • Branding
  • Cerdas
  • Cloud
  • Community
  • CRM
  • CSS
  • Customer
  • Data
  • Database
  • Deployment
  • Desain
  • Development
  • Domain
  • Download
  • E-commerce
  • Editing
  • Efektif
  • Efisien
  • Efisiensi
  • Email
  • Error
  • Error generating categories
  • Estimasi
  • Fitur
  • Foto
  • Framework
  • Freelance
  • Garansi
  • Gratis
  • Harga
  • Hemat
  • Here are 5 categories
  • here are 5 categories: Laravel
  • Here's a categorization based on the article titles and provided keywords: **Development
  • Here's a categorization based on the article titles and provided keywords: **Online
  • Here's a categorization based on the article titles and provided keywords: **Panduan
  • Here's a categorization based on the article titles and provided keywords: **Penjualan
  • Here's a categorization based on the article titles and provided keywords: **Server
  • Here's a categorization based on the article titles and provided keywords: **Web Development
  • Here's a categorization based on the article titles and provided keywords: **Website
  • Here's a categorization based on the article titles and provided keywords: CRM
  • Here's a categorization based on the article titles and provided keywords: E-commerce
  • Here's a categorization based on the article titles and provided keywords: Hosting
  • Here's a categorization based on the article titles and provided keywords: Pendidikan
  • Here's a possible categorization based on the article titles and provided keywords: Laravel
  • Here's a possible categorization based on the article titles and provided keywords: Produktivitas
  • Hosting
  • Hukum
  • Ide
  • Indonesia
  • Inspirasi
  • Integrasi
  • iOS
  • Jakarta
  • JavaScript
  • Karir
  • Keamanan
  • Kecepatan
  • Kerja
  • Kesehatan
  • Kolaborasi
  • Konten
  • Laravel
  • Layanan
  • Lebih Cepat": AI
  • Library
  • Lokal
  • Machine Learning
  • Marketing
  • Mobile
  • Murah
  • MySQL
  • one word per category
  • Online
  • Optimasi
  • Otentikasi
  • Otomatisasi
  • Panduan
  • Pelanggan
  • Pelaporan
  • Pelatihan
  • Pemasaran
  • Pembayaran
  • Pemula
  • Pendidikan
  • Pengembangan
  • Penjualan
  • Perbandingan
  • Performance
  • Pertumbuhan
  • PHP
  • Pilihan
  • Portfolio
  • Prima
  • Privasi
  • Produktifitas
  • Produktivitas
  • Profesional
  • Python
  • Rekomendasi
  • Responsif
  • Review
  • SEO
  • Server
  • Sistem
  • Skalabilitas
  • Software
  • Solusi
  • SSL
  • Startup
  • Strategi
  • Streaming
  • Sukses
  • Support
  • Teknologi
  • Template
  • TensorFlow
  • Terbaik
  • Terpercaya
  • Tips
  • Tools
  • Transfer
  • Tutorial
  • UKM
  • UMKM
  • Unlimited
  • Uptime
  • VPS
  • Web Development
  • Website
  • Windows
  • WooCommerce
  • WordPress
  • XAMPP

Resource

  • About us
  • Contact Us
  • Privacy Policy

© 2024 Gameglimmer.

No Result
View All Result
  • AI
  • Produktivitas
  • Website
  • Hosting
  • Laravel
  • Database

© 2024 Gameglimmer.