Skip to content

Latest commit

 

History

History
96 lines (81 loc) · 2.87 KB

README.md

File metadata and controls

96 lines (81 loc) · 2.87 KB

SSO PNJ Demo (PHP, Laravel)

Repositori ini merupakan contoh implementasi penggunaan service Single Sign-On Politeknik Negeri Jakarta untuk aplikasi web berbasis PHP.

Requirement

  • Laravel Socialite
  • PHP Versi 7.3 atau diatasnya
  • Gunakan endpoint client_secret_post pada saat mendaftarkan client anda di SSO PNJ

Instalasi Package

Package tersedia di repo packagist, install dengan menggunakan :

composer require laravel/socialite
composer require chillrend/pnj-socialite-provider

Quick Start

Jika Anda telah menambahkan Laravel\Socialite\SocialiteServiceProvider didalam file config/app.php silahkan hapus kode tersebut yang berada di dalam array providers[]

Lalu tambahkan \SocialiteProviders\Manager\ServiceProvider::class kedalam array providers[]

'providers' => [
    // Provider lain
    // hapus 'Laravel\Socialite\SocialiteServiceProvider', jika ada
    \SocialiteProviders\Manager\ServiceProvider::class,
];

Tambahkan event listener didalam file app/Providers/EventServiceProvide

protected $listen = [
    \SocialiteProviders\Manager\SocialiteWasCalled::class => [
        // ... listener untuk provider lain ...
        'SocialiteProviders\\PNJ\\PNJExtendSocialite@handle',
    ],
];

Lalu tambahkan konfigurasi didalam config/services.php

'pnj' => [    
  'client_id' => env('CLIENT_ID'),  
  'client_secret' => env('CLIENT_SECRET'),  
  'redirect' => env('REDIRECT_URI') 
],

dan masukkan client id, secret, dan redirect uri Anda didalam .env

CLIENT_ID=<ClientIDAnda>
CLIENT_SECRET=<ClientSecretAnda>
REDIRECT_URI=https://your-service.com/cb

Setelah itu Anda dapat menggunakan socialite seperti biasa.

Untuk meredirect user kedalam SSO PNJ gunakan :

public function redirectToSSOPNJ(){
    return Socialite::driver('pnj')->redirect();
}

Untuk menangani callback redirect yang dikirim oleh SSO PNJ gunakan :

public function callback(){
    // Anda akan mendapatkan token sekaligus user object disini.
    $user = Socialite::driver('pnj')->user();
}

Lalu Anda dapat membuat route seperti berikut :

Route::get('/auth/pnj', [SSOController::class, 'redirectToSSOPNJ']);
Route::get('/cb', [SSOController::class, 'callback']);

Untuk meredirect user, gunakan route tersebut untuk atribut href pada link Anda :

<a href="/auth/pnj">Login dengan SSO PNJ</a>

Untuk informasi implementasi lebih lanjut silahkan membaca dokumentasi laravel socialite dan repository dari provider. https://laravel.com/docs/8.x/socialite https://github.com/Chillrend/PNJSocialiteProvider

Menjalankan project demo ini

  1. composer install
  2. copy file .env.example dan ubah nama menjadi .env
  3. php artisan key:generate
  4. php artisan serve
  5. Kunjungi http://localhost:8000/

Report SSO PNJ Bug

email developer di [email protected] atau submit issues didalam repositori ini.