0% menganggap dokumen ini bermanfaat (0 suara)
6 tayangan

Modul Laravel Auth

Diunggah oleh

prdozrp
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
6 tayangan

Modul Laravel Auth

Diunggah oleh

prdozrp
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 11

Modul Authentication Laravel

1.1. Tujuan
Setelah mengikuti modul ini mahasiswa diharapkan dapat:
1. Memahami konsep autentikasi dan otorisasi dalam pengembangan REST API.
2. Mengimplementasikan sistem autentikasi berbasis token menggunakan Laravel
Sanctum.
3. Mengamankan endpoint API berdasarkan peran (role) atau kepemilikan data
(ownership).
4. Menguji endpoint menggunakan postman.
1.2. Alat dan Bahan
1. XAMPP / Laravel Sail / Laragon / Valet
2. Composer
3. Laravel 12
4. Postman
5. MySQL / MariaDB
6. Laravel Sanctum

1.3. Tugas Pendahuluan


1. Apa perbedaan antara autentikasi dan otorisasi dalam konteks REST API?
2. Apa keuntungan menggunakan Laravel Sanctum dibandingkan metode autentikasi
lainnya di Laravel?
3. Jelaskan apa yang dimaksud dengan Policy di Laravel dan dalam kasus apa kita
menggunakannya.
4. Mengapa perlu membatasi akses API berdasarkan peran atau kepemilikan data?

1.4. Dasar Teori

1.4.1. Authentikasi (Authentication)

Autentikasi adalah proses memverifikasi identitas pengguna sebelum memberikan akses ke


sistem. Dalam konteks Laravel REST API, autentikasi sering dilakukan menggunakan token
untuk memastikan setiap request berasal dari pengguna yang sah. Laravel Sanctum
menyediakan sistem autentikasi berbasis token ringan dan aman, ideal untuk SPA (Single Page
Application) dan Mobile Application.
Sanctum memungkinkan pengguna login dan menerima token yang harus dikirim dalam
header setiap permintaan API berikutnya.

1.4.2. Otorisasi (Authorization)


Otorisasi adalah proses menentukan apakah pengguna yang telah terautentikasi diizinkan
melakukan aksi tertentu pada resource tertentu. Misalnya, hanya pemilik data yang bisa
mengedit atau menghapus datanya, atau hanya admin yang boleh mengakses data pengguna
lain. Di Laravel, otorisasi dapat diatur menggunakan Policy atau Gate, dengan Policy lebih
direkomendasikan untuk REST API berbasis resource.
1.4.3. Laravel Sanctum
Laravel Sanctum adalah package resmi Laravel yang menyediakan sistem autentikasi token
sederhana. Sanctum sangat cocok untuk REST API karena fleksibel dan mudah dikonfigurasi.
Setiap pengguna yang berhasil login akan diberikan token yang dapat digunakan untuk
mengakses endpoint yang dilindungi.

Sanctum bekerja dengan cara menyimpan token di database (personal_access_tokens) dan


memverifikasi token yang dikirim melalui header Authorization.

1.4.4. Policy
Policy adalah class di Laravel yang berisi aturan otorisasi untuk model tertentu. Setiap aksi
seperti view, create, update, dan delete bisa dibatasi dengan kondisi tertentu, seperti apakah
user adalah pemilik data atau memiliki role tertentu.

Policy dihubungkan dengan model tertentu dan dipanggil menggunakan


$this->authorize('aksi', $model) di dalam controller.

1.5. Jurnal
Dalam modul ini, mahasiswa akan mengembangkan API berbasis Laravel Sanctum untuk
manajemen postingan. Fitur yang akan dibangun meliputi:
• Register, Login, Logout menggunakan Laravel Sanctum
• Melihat daftar postingan
• Menambahkan, mengubah, dan menghapus postingan
• Hanya user pemilik postingan yang dapat mengubah postingannya
• Admin dapat menghapus semua postingan
1.5.1. Clone Project Github
Pertama-tama clone project yang telah tersedia di github, kemudian masuk ke proyek.

1.5.2. Install Dependency


Instalasi dependency untuk Laravel dengan composer

1.5.3. Konfigurasi file environment variable


Copy .env.example dengan file baru bernama .env.
Kemudian generate key APP_KEY di file .env

Selanjutnya ubah konfigurasi database seperti berikut:

1.5.4. Buat database api_auth_praktikum di MySQL/phpMyAdmin

1.5.5. Menginstall Laravel Sanctum dan melakukan setup API

Perintah ini akan:


 Install Sanctum.
 Mengatur API routes dan middleware.
 Publish konfigurasi Sanctum.

1.5.6. Migrasi dan seeding database


Lakukan migrate untuk membuat tabel yang dibutuhkan oleh Sanctum:

Selanjutnya seeding untuk mendaftarkan admin

*(untuk keamanan dan best practice, sebaiknya akun admin dibuat langsung melalui seeder
atau manual lewat database, bukan melalui endpoint publik seperti register)
1.5.7. Memperbarui model User
Import HasApiTokens:

Gunakan HasApiTokens sebagai Traits di User model, dan update fillable dengan kolom role:

1.5.8. Membuat API AuthController


Buat AuthController dengan perintah:

Import package yang diperlukan:


Buat method register:
Buat method login:

Buat method logout:


1.5.9. Memperbarui api routes
Isi api.php di folder routes:

1.5.10. Testing API dengan Postman


Buat Collection baru dengan nama: PRAKTIKUM_AUTH
Kemudian uji endpoint seperti di bawah ini.
Screenshot hasil setiap request.
a. Register
 Method : POST
 URL : /api/register
 Body (x-www-form-urlencoded):
o name: nama praktikan
o email: email praktikan
o password: 123456
o password_confirmation: 123456
b. Login
 Method : POST
 URL : /api/login
 Body (x-www-form-urlencoded):
o isikan email dan password yang digunakan untuk mendaftar
 Copy token dari response/hasil request. Misal:
1|ZjAe8tJFJC5MmZ0584cGGBkhV6mplaCdNFibJqnyf957efc5
c. Logout
 Method : POST
 URL : /api/logout
 Authorization:
o Type: Bearer Token
o Isi Token yang telah di copy dari response saat login
1.6. Tugas Akhir
1.6.1. Buat controller API PostController

Kemudian isi:
1.6.2. Menambahkan resource Post dengan middleware pada API routes

1.6.3. Tes Menggunakan Postman


Buat Collection baru dengan nama: PRAKTIKUM_AUTH
Kemudian uji endpoint seperti di bawah ini.
Screenshot hasil setiap request.
a. Mengakses endpoint yang diproteksi oleh sanctum
 Method : GET
 URL : /api/posts

(User yang tidak login atau tidak memiliki token tidak bisa melihat post)

b. Login sebagai user biasa


 Method : POST
 URL : /api/login
 Body (x-www-form-urlencoded):
o isikan email dan password yang digunakan untuk mendaftar
 Copy token dari response/hasil request. Misal:
1|ZjAe8tJFJC5MmZ0584cGGBkhV6mplaCdNFibJqnyf957efc5
c. Buat post baru (user dapat membuat post)
 Method : POST
 URL : /api/posts
 Authorization:
o Type: Bearer Token
o Isi Token yang telah di copy dari response saat login user
 Body (x-www-form-urlencoded):
o title: “Post Authorization”
o content: “Authorization sederhana”
d. Logout
 Method : POST
 URL : /api/logout
 Authorization:
o Type: Bearer Token
o Isi Token yang telah di copy dari response saat login
e. Register user lain
 Method : POST
 URL : /api/register
 Body (x-www-form-urlencoded):
o name: new user
o email: [email protected]
o password: 123456
o password_confirmation: 123456
f. Login sebagai user baru
 Method : POST
 URL : /api/login
 Body (x-www-form-urlencoded):
o email: [email protected]
o password: 123456
 Copy token dari response/hasil request. Misal:
1|ZjAe8tJFJC5MmZ0584cGGBkhV6mplaCdNFibJqnyf957efc5

g. User baru mengupdate post user lain


 Method : PUT
 URL : /api/posts/1
 Authorization:
o Type: Bearer Token
o Isi Token yang telah di copy dari response saat login user baru
 Body (x-www-form-urlencoded):
o title: "Saya mau ubah post orang"
o Content: “Coba ubah post”

(User tidak berhak mengubah post orang lain.)

h. User baru menghapus post user lain


 Method : DELETE
 URL : /api/posts/1
 Authorization:
o Type: Bearer Token
o Isi Token yang telah di copy dari response saat login user baru

(User tidak berhak menghapus post orang lain.)

i. Logout
 Method : POST
 URL : /api/logout
 Authorization:
o Type: Bearer Token
o Isi Token yang telah di copy dari response saat login

j. Login admin
 Method : POST
 URL : /api/login
 Body (x-www-form-urlencoded):
o email: [email protected]
o password: admin123
 Copy token dari response/hasil request. Misal:
1|ZjAe8tJFJC5MmZ0584cGGBkhV6mplaCdNFibJqnyf957efc5
k. Admin menghapus post
 Method : DELETE
 URL : /api/posts/1
 Authorization:
o Type: Bearer Token
o Isi Token yang telah di copy dari response saat login admin

(Admin berhak menghapus post.)

Anda mungkin juga menyukai