Pembuatan Login dengan Laravel Socialite

Hai kreatif readers, kali ini saya akan membahas mengenai laravel socialite yang digunakan pada proses login.

Apa itu Laravel Socialite?

Laravel socialite adalah package laravel yang memudahkan penerapan SSO dengan melakukan integrasi autentikasi menggunakan berbagai sosial media. Dengan penggunaan package ini memudahkan pengguna ketika login ke dalam aplikasi dengan salah satu akun sosial media yang telah dimilikinya, sehingga pengguna tidak perlu mengingat banyak akun (username dan password).

Fitur pada Laravel Socialite

  • OAuth Authentication, memanfaatkan protokol OAuth yang aman untuk otentikasi pengguna. Komunikasi antara aplikasi dan platform sosial media dienkripsi untuk melindungi kredensial pengguna dan tidak memaparkannya ke aplikasi. Dengan alur otentikasi ini, memastikan keamanan data pengguna terlindungi.
  • Simple Integration, Laravel Socialite menyediakan API yang mudah diimplementasi pada proses login. Antarmuka sederhana memudahkan tim pengembang untuk melakukan konfigurasi proses autentikasi tanpa harus menulis kode yang rumit.
  • Multiple Provides, Laravel Socialite mendukung berbagai sosial media dan penyedia OAuth, seperti Facebook, Twitter, Google, GitHub, LinkedIn, Yahoo, dan lain sebagainya. Untuk itu aplikasi dapat menyediakan beberapa pilihan login dengan sosial media.

Langkah-langkah Penggunaan Laravel Socialite

Berikut ini akan dijelaskan beberapa langkah penggunaan Laravel Socialite dan metode-metode yang ada pada Laravel Socialite:

A. Installasi dan Konfigurasi

1. Pertama-tama, tentukan penyedia OAuth yang akan digunakan. Selanjutnya dapatkan kredensial dari penyedia, untuk nantinya disimpan pada konfigurasi Laravel Socialite.

2. Install package laravel socialite melalui composer:

composer require laravel/socialite

3. Lanjut pada bagian konfigurasi, pafa file ‘config/services.php’ tambahkan konfigurasi kredensial menggunakan key yang telah didapatkan dari penyedia, seperti berikut ini:

'github' => [
 'client_id' => env('GITHUB_CLIENT_ID'),
 'client_secret' => env('GITHUB_CLIENT_SECRET'),
 'redirect' => 'http://example.com/callback-url',
],

4. Lanjut pada bagian konfigurasi, pafa file ‘config/services.php’ tambahkan konfigurasi kredensial menggunakan key yang telah didapatkan dari penyedia, seperti berikut ini:

'github' => [
 'client_id' => env('GITHUB_CLIENT_ID'),
 'client_secret' => env('GITHUB_CLIENT_SECRET'),
 'redirect' => 'http://example.com/callback-url',
],

B. Autentikasi

1. Lakukan 2 kali routing yaitu untuk redirecting user ke OAuth provider, dan untuk receiving callback dari provider setelah proses autentikasi. Berikut contoh routes authentication:

use Laravel\Socialite\Facades\Socialite;
 
Route::get('/auth/redirect', function () {
 return Socialite::driver('github')->redirect();
});
 
Route::get('/auth/callback', function () {
 $user = Socialite::driver('github')->user();
 
 // $user->token
});

2. Setelah data pengguna diambil dari OAuth provider, tentukan apakah pengguna tersebut ada di database aplikasi lalu otentikasi pengguna tersebut.

use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Laravel\Socialite\Facades\Socialite;
 
Route::get('/auth/callback', function () {
 $githubUser = Socialite::driver('github')->user();
 
 $user = User::updateOrCreate([
 'github_id' => $githubUser->id,
 ], [
 'name' => $githubUser->name,
 'email' => $githubUser->email,
 'github_token' => $githubUser->token,
 'github_refresh_token' => $githubUser->refreshToken,
 ]);
 
 Auth::login($user);
 
 return redirect('/dashboard');
});

3. Atur scopes untuk menentukan hak akses pengguna menggunakan scopes metode seperti berikut:

use Laravel\Socialite\Facades\Socialite;
 
return Socialite::driver('github')
 ->scopes(['read:user', 'public_repo'])
 ->redirect();

C. Retrieving User Details

Setelah pengguna dialihkan kembali ke autentikasi  pada aplikasi, maka data detail pengguna yang dibawa dapat dialmbil menggunakan metode user. Objek yang dikembalikan dengan metode user tersebut terdiri dari berbagai property dan method  mengenai informasi detail data pengguna, yang dapat disimpan pada database aplikasi. Berikut contoh detail data pengguna yang dikembalikan ke aplikasi dari penyedia OAuth:

use Laravel\Socialite\Facades\Socialite;
 
Route::get('/auth/callback', function () {
 $user = Socialite::driver('github')->user();
 
 // OAuth 2.0 providers...
 $token = $user->token;
 $refreshToken = $user->refreshToken;
 $expiresIn = $user->expiresIn;
 
 // OAuth 1.0 providers...
 $token = $user->token;
 $tokenSecret = $user->tokenSecret;
 
 // All providers...
 $user->getId();
 $user->getNickname();
 $user->getName();
 $user->getEmail();
 $user->getAvatar();
});

Kesimpulan

Penggunaan Laravel Socialite ini bermanfaat untuk digunakan pada aplikasi yang menargetkan banyak pengguna dengan kriteria pengguna umum, terutama untuk para pengguna yang tidak ingin membuat akun baru. Pengguna dapat masuk ke aplikasi  dengan akun media sosial yang telah dimiliki. Hal ini tentunya bisa mempersingkat proses login ataupun registrasi pengguna, dan dapat meningkatkan pengalaman bagi pengguna. Namun, penting untuk mempertimbangkan penggunaan package ini sesuai kebutuhan spesifikasi aplikasi yang sedang dibangun.

Referensi:
Upadhyay, Mayur. Laravel Socialite for Social Media Authentication: A Comprehensive Guide. 2024. WPWEB IFOTECH.
Laravel.com

Penjadwalan Task Otomatis Menggunakan Laravel Scheduler

Hallo, Kreatif Readers! Sebagai strategi dalam menghemat waktu dan tenaga, fitur Laravel Scheduler merupakan salah satu tools yang efektif dalam otomatisasi proses development. Fitur ini biasa digunakan untuk pembersihan cache serta melakukan backup website secara berkala. Selain itu, beberapa fungsi lain seperti sinkronisasi data eksternal serta pengiriman email berkala juga memungkinkan dilakukan menggunakan Laravel Scheduler.

Apa itu Laravel Scheduler?

Mengutip dari situs resmi Laravel, Task Scheduler merupakan salah satu fitur dari framework Laravel yang memungkinkan untuk menjalankan tugas secara otomatis pada waktu tertentu. Umumnya fitur ini diterapkan task yang harus dijalankan secara rutin dan berulang, sehingga tidak perlu lagi dijalankan secara manual.

Mengapa harus Laravel Scheduler?

Beberapa manfaat utama menggunakan Laravel Scheduler adalah:

  1. Pengaturan yang mudah: Anda dapat mendefinisikan task terjadwal hanya dengan beberapa baris code.
  2. Pembuatan Task yang Lebih Mudah: Laravel menyediakan berbagai metode untuk menjadwalkan tugas seperti menjalankan artisan command, menjalankan closure, atau bahkan menjalankan system command
  3. Pengaturan Frekuensi yang Fleksibel: Anda dapat dengan mudah mengatur frekuensi tugas seperti setiap menit, setiap jam, harian, mingguan, dan seterusnya.
  4. Logging dan Monitoring: Laravel Scheduler memungkinkan logging dan monitoring dari tugas yang dijalankan, sehingga Anda dapat memastikan semua tugas berjalan sesuai rencana.

Contoh penggunaan Laravel Scheduler

Berikut merupakan contoh penggunaan Laravel Scheduler untuk melakukan backup database setiap minggu/weekly.

1. Buat command untuk Backup

php artisan make:command BackupDatabase

2. Mendifinisikan logic Backup di command

Buka file BackupDatabase.php dan edit metode handle:

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;

class BackupDatabase extends Command
{
 protected $signature = 'backup:database';
 protected $description = 'Backup the database';

 public function __construct()
 {
 parent::__construct();
 }

 public function handle()
 {
 $filename = "backup-" . now()->format('Y-m-d-H-i-s') . ".sql";
 $command = "mysqldump --user=" . env('DB_USERNAME') .
 " --password=" . env('DB_PASSWORD') .
 " --host=" . env('DB_HOST') .
 " " . env('DB_DATABASE') . " > " . storage_path('app/' . $filename);

 $returnVar = NULL;
 $output = NULL;

 exec($command, $output, $returnVar);

 if ($returnVar != 0) {
 $this->error('Database backup failed');
 } else {
 $this->info('Database backup was successful');
 }
 }
}

3. Definisikan jadwal Backup

Setelah membuat command, Anda perlu menjadwalkannya di app/Console/Kernel.php. Tambahkan tugas ini ke metode schedule untuk menjalankannya setiap minggu.

protected function schedule(Schedule $schedule)
{
 $schedule->command('backup:database')->weekly();
}

Selain itu, Anda juga dapat menentukan waktu tertentu untuk menjalankan backup, contohnya setiap hari Senin pukul 02.00

protected function schedule(Schedule $schedule)
{
 $schedule->command('backup:database')->weeklyOn(1, '02:00'); // Setiap Senin jam 02:00
}

Anda dapat melakukan test untuk menjalankan scheduler menggunakan perintah berikut

php artisan schedule:work

4. Jalankan Laravel Scheduler pada server

Untuk menjalankan scheduler, Anda hanya perlu menambahkan cron configuration pada server untuk menjalankan perintah the schedule:run pada waktu yang ditentukan. Berikut adalah syntax yang dibutuhkan

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

5. Verifikasi Laravel Scheduler dengan melakukan Logging dan Monitoring

Berikut adalah perintah untuk melihat daftar semua tugas yang telah dijadwalkan di Laravel Scheduler

php artisan schedule:list

Tedapat beberapa variable yang akan ditampilkan, antara lain:

  • Expression: Menunjukkan ekspresi cron untuk tugas tersebut.
  • Command: Perintah yang dijalankan.
  • Next Due: Waktu berikutnya tugas dijadwalkan untuk dijalankan.
  • Previous: Waktu sebelumnya tugas dijalankan.
  • Description: Deskripsi singkat tentang tugas.

Selain perintah di atas, Laravel Scheduler juga memungkinkan Anda untuk memonitor dan log setiap tugas yang dijalankan. Anda dapat menggunakan metode ->sendOutputTo untuk mengarahkan output ke file log menggunakan perintah berikut:

$schedule->command('backup:run')->daily()->sendOutputTo(storage_path('logs/backup.log'));

Kesimpulan

Laravel Scheduler adalah alat yang sangat berguna untuk mengotomatisasi berbagai tugas dalam aplikasi web Anda. Dengan menggunakan Laravel Scheduler, Anda dapat mengelola tugas terjadwal dengan cara yang lebih terstruktur dan mudah dipahami, meningkatkan produktivitas dan efisiensi pengembangan aplikasi Anda. Mengingat kemudahan pengaturannya, fleksibilitas, dan fitur logging yang disediakan, Scheduler menjadi salah satu fitur esensial yang layak dipelajari dan digunakan dalam proyek Laravel.

Reference:
[1] https://laravel.com/docs/11.x/scheduling
[2] Cara Menjalankan Laravel Scheduler untuk Otomatisasi Cron Job (idwebhost.com)

Meningkatkan kinerja aplikasi dengan laravel octane

Hallo, Kreatif Readers!! Artikel kali ini akan membahas tentang kinerja aplikasi

Kinerja aplikasi adalah aspek yang sangat penting dalam pengembangan aplikasi. Kinerja yang baik memastikan aplikasi berjalan cepat, responsif dan meningkatkan kepuasan pengguna dan efisiensi operasional

Laravel Octane adalah salah satu terobosan terbaru dalam dunia pengembangan aplikasi web menggunakan framework Laravel. Laravel octame dirangcang untuk meningkatkan kinerja aplikasi, menjadikannya lebih cepat, lebih efisien dan lebih responsif daripada sebelumnya.

Bagaimana cara menggunakan Laravel Octane?

Menggunakan Laravel Octane memerlukan beberapa langkah konfigurasi awal. Berikut adalah langkah – langkah umum untuk mengaktifkan Laravel Octane dalam projek yang sedang dikerjakan:

1. Instalasi Laravel Octane

Instal Laravel Octane dengan menggunakan Composer

composer require laravel/octane

2. Konfigurasi Octane

Setelah instal Laravel Octane, langkah berikutnya adalah melakukan konfigurasi.

php artisan octane:install

ini akan membuat berkas octane.php di directory config

3. Konfigurasi server dan worker

Dalam berkas octane.php, anda dapat melakukan konfigurasi server yang akan digunakan oleh Laravel Octane ( Misalnya, Swoole atau RoadRunner) dan jumlah worker yang akan dijalankan.

'server' => env('OCTANE_SERVER', 'swoole'), 'workers' => env('OCTANE_WORKERS', 4),

4. Aktifkan Mode Octane

Setelah melakukan konfigurasi Laravel Octane, berikutnya aktifkan dengan menjalankan perintah berikut

php artisan octane:start

Setelah melakukan tahapan di atas aplikasi Laravel akan berjalan dalam mode Octane

5. Uji Kinerja Aplikasi

Setelah mengaktifkan Laravel Octane, sangat penting untuk menguji kinerja aplikasi untuk memastikan bahwa perubahan tersebut memberikan hasil yang diharapkan

Manfaat Menggunakan Laravel Octane

  • Pengurangan waktu respons, dengan menjaga aplikasi tetap berada di memori dan mengelola resource secara lebih efisien, Ocatne dapat mengurangi latency dan meningkatkan kecepatan respons aplikasi
  • Penghapusan overhead reinisialisasi, overhead yang biasanya terjadi karena reinisialisasi framework laravel pada setiap request dapat dihilangkan, mengurangi beban CPU dan mempercepat waktu eksekusi
  • Konfigurasi yang mudah, octane dirancang untuk itegrasi yang dengan aplikasi Laravel, dengan konfigurasi yang mudah melalui file konfigurasi config / octane.php

Kinerja aplikasi adalah salah satu faktor penting yang dapat mempengaruhi banyak aspek teknis. Dengan memperhatikan optimasi kinerja, pegembang dapat memastikan aplikasi tidak hanya cepat dan responsif, tetapi juga efisien, stabil dan mampu memenuhi ekspektasi pengguna dalam berbagai kondisi. Menggunakan Laravel Octane untuk aplikasi adalah langkah yang tepat untuk meningkatkan kinerja aplikasi yang optimal

 

Referensi : Laravel octane

 

Penggunaan CRUD Generator pada Laravel

Hallo kreatif readers..
Deadline yang singkat merupakan tantangan yang besar bagi para penyedia jasa pembuatan aplikasi sehingga banyak masalah yang dapat timbul, dimulai dari aplikasi yang tidak dapat selesai sempurna dan keterlambatan selesainya project. Untuk mengatasi masalah tersebut, kita perlu tahu mengenai Laravel package untuk mendesain dan generate aplikasi siap pakai.

Salah satu package itu adalah CRUD generator menggunakan Laravel yang dapat memudahkan programmer dalam membuat operasi CRUD secara otomatis. Berikut ini beberapa manfaat menggunakan CRUD generator:

  1. Waktu pengembangan yang lebih singkat, membutuhkan waktu kurang lebih 1-2 menit untuk membuat CRUD apps.
  2. Coding yang dihasilkan konsisten dan terstruktur, sehingga memudahkan pada saat pemeliharaan dan kolaborasi tim pengembang.
  3. CRUD generator biasanya sudah diuji dan dioptimalkan, sehingga mengurangi kemungkinan adanya bug atau kesalahan.

Beberapa contoh alat CRUD generator:
– Laravel Artisan untuk PHP Laravel.
– Rails Scaffold untuk Ruby on Rails.
– Django Admin untuk Python Django.

Langkah-langkah penggunaan CRUD generator di Laravel
generator-builder

  1. Pertama, pastikan Laravel sudah terinstal. Selanjutnya install paket CRUD generator, seperti InfyOm Laravel Generator.
    composer create-project --prefer-dist laravel/laravel myapp
    cd myapp
    composer require infyomlabs/laravel-generator
    composer require laravel/ui
    php artisan ui vue --auth
  2. Publikasikan file vendor untuk konfigurasi CRUD generator.
    php artisan vendor:publish --provider="InfyOm\Generator\InfyOmGeneratorServiceProvider"
    php artisan vendor:publish --provider="InfyOm\AdminLTETemplates\AdminLTETemplatesServiceProvider"
  3. Pastikan konfigurasi database di .env sudah sesuai dengan database yang akan digunakan.
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=my_database
    DB_USERNAME=root
    DB_PASSWORD=
  4. Membuat CRUD dengan Generator. Misalnya: membuat CRUD untuk Post. Buat model dan migrasi menggunakan generator.

    php artisan infyom:scaffold Post --fromTable --tableName=posts
    
  5. Jalankan migrasi untuk membuat tabel posts di database.
    php artisan migrate
    
  6. Selanjutnya generator akan membuat semua file yang diperlukan (model, controller, views, dan route). Kemudian programmer dapat mengakses fitur CRUD di browser dengan menuju URL yang sesuai, misalnya:
    http://localhost:8000/posts
  7. Kemudian sesuaikan dan tambahkan logika spesifik sesuai kebutuhan aplikasi. Ini bisa mencakup validasi tambahan, otentikasi, otorisasi, atau fitur lain yang diperlukan.
  8. Lakukan pengujian semua operasi CRUD untuk memastikan bahwa semua fungsi bekerja dengan baik dan tidak ada bug.

Kesimpulan
Penggunaan CRUD generator sangat bermanfaat dalam pengembangan aplikasi berbasis basis data. Tidak hanya meningkatkan produktivitas dan efisiensi tim pengembang, tetapi juga memastikan kualitas kode yang lebih konsisten dan terstruktur. Dengan otomatisasi pembuatan kode dasar, pengembang dapat lebih fokus pada pengembangan fitur-fitur yang lebih kompleks pada aplikasi.

Referensi:
[1] Suryo Atmojo, Ruli Utami, Suzana Dewi, Nurwahyudi Widhiyanta, Nur Ali Sholikin, “Pengembangan Generator Aplikasi Web CRUD Builder Menggunakan Laravel”, Teknik Informatika, Universitas Wijaya Putra.
[2] CRUDGenerator-backpackforlaravel