PHP code example of yowedjamal / bjpass-backend-sdk

1. Go to this page and download the library: Download yowedjamal/bjpass-backend-sdk library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

yowedjamal / bjpass-backend-sdk example snippets


use BjPass\Facades\BjPass;

// Créer une URL d'autorisation
$authData = BjPass::createAuthorizationUrl();

// Échanger un code contre des tokens
$result = BjPass::exchangeCode($code, $state);

// Vérifier l'authentification
if (BjPass::isAuthenticated()) {
    $user = BjPass::getUserInfo();
}

// Déconnexion
BjPass::logout();

use BjPass\BjPass;

class AuthController extends Controller
{
    public function __construct(private BjPass $bjpass) {}

    public function login()
    {
        $authData = $this->bjpass->createAuthorizationUrl();
        return redirect()->away($authData['authorization_url']);
    }

    public function callback(Request $request)
    {
        $result = $this->bjpass->exchangeCode(
            $request->query('code'),
            $request->query('state')
        );
        
        return response()->json($result);
    }
}

Route::middleware(['bjpass.auth'])->group(function () {
    Route::get('/dashboard', function () {
        $user = request('bjpass_user');
        return view('dashboard', compact('user'));
    });
});

[
    'authorization_url' => 'https://...',
    'state' => 'generated_state',
    'nonce' => 'generated_nonce',
    'code_verifier' => 'generated_code_verifier'
]

[
    'user' => [
        'sub' => 'user_id',
        'name' => 'User Name',
        'email' => '[email protected]'
    ],
    'tokens' => [
        'access_token' => '...',
        'refresh_token' => '...',
        'expires_in' => 3600,
        'token_type' => 'Bearer'
    ]
]

use BjPass\Exceptions\BjPassException;
use BjPass\Exceptions\InvalidTokenException;
use BjPass\Exceptions\AuthenticationException;

try {
    $result = BjPass::exchangeCode($code, $state);
} catch (InvalidTokenException $e) {
    // Token invalide ou expiré
    Log::error('Token invalide: ' . $e->getMessage());
} catch (AuthenticationException $e) {
    // Erreur d'authentification
    Log::error('Erreur auth: ' . $e->getMessage());
} catch (BjPassException $e) {
    // Erreur générale
    Log::error('Erreur BjPass: ' . $e->getMessage());
}

// Dans config/bjpass.php
'custom_error_messages' => [
    'authentication_failed' => 'Votre authentification a échoué. Veuillez réessayer.',
    'invalid_token' => 'Votre session a expiré. Veuillez vous reconnecter.',
],

'log_level' => 'debug',
'debug' => true,

// Créer un middleware personnalisé
class CustomBjPassMiddleware
{
    public function handle($request, Closure $next)
    {
        if (!BjPass::isAuthenticated()) {
            // Logique personnalisée
            return redirect('/custom-login');
        }
        
        return $next($request);
    }
}
bash
php artisan vendor:publish --provider="BjPass\Providers\BjPassServiceProvider" --tag=bjpass-config
bash
php artisan vendor:publish --provider="BjPass\Providers\BjPassServiceProvider" --tag=bjpass-routes
bash
composer analyse

src/
├── BjPass.php                    # Classe principale
├── Exceptions/                   # Exceptions personnalisées
├── Facades/                      # Facade Laravel
├── Http/                         # Contrôleurs et middleware
│   ├── Controllers/
│   └── Middleware/
├── Providers/                    # ServiceProvider
└── Services/                     # Services métier
    ├── AuthService.php
    ├── JwksService.php
    └── TokenService.php

config/
└── bjpass.php                   # Configuration

routes/
└── bjpass.php                   # Routes intégrées

resources/
└── views/                       # Vues Blade
    ├── success.blade.php
    └── error.blade.php