1. Go to this page and download the library: Download bbs-lab/nova-okta 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/ */
// config/nova-okta.php
return [
// Replace Nova's GET login screen with the package's (carries the Okta button).
'override_nova_login' => env('NOVA_OKTA_OVERRIDE_LOGIN', true),
// Register the route('two-factor.login') bridge to Nova's 2FA challenge.
'two_factor_challenge_route' => env('NOVA_OKTA_TWO_FACTOR_CHALLENGE', true),
// Also render the Fortify email/password form next to the Okta button.
'password_login' => env('NOVA_OKTA_PASSWORD_LOGIN', true),
];
// config/okta.php
return [
// Route paths, relative to the Nova path. Change these to move the endpoints
// (update the Sign-in/Sign-out redirect URIs in Okta accordingly); the route
// names never change.
'paths' => [
'login' => env('OKTA_LOGIN_PATH', 'authorization-code/redirect'),
'callback' => env('OKTA_CALLBACK_PATH', 'authorization-code/callback'),
'logout' => env('OKTA_LOGOUT_PATH', 'authorization-code/logout/redirect'),
'callback_logout' => env('OKTA_CALLBACK_LOGOUT_PATH', 'authorization-code/logout'),
],
'sso_logout' => env('OKTA_SSO_LOGOUT', true),
'
use BBSLab\LaravelOkta\Facades\Okta;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Log;
public function boot(): void
{
parent::boot();
// Refuse the Okta sign-in itself unless the user is allowed
// (they are never authenticated when a callback returns false).
Okta::authorizeUserToLogin(fn ($user): bool => $user->is_active && $user->is_staff);
// Optional: audit a refused login.
Okta::onLoginDenied(fn ($user, $oktaUser) => Log::warning('Okta login denied', [
'email' => $oktaUser->getEmail(),
]));
}
// Nova's native panel gate — defence in depth, checked on every Nova request.
protected function gate(): void
{
Gate::define('viewNova', fn ($user): bool => $user->is_active && $user->is_staff);
}
use Laravel\Nova\Menu\MenuItem;
Nova::userMenu(fn ($request, $menu) => $menu->prepend(
MenuItem::externalLink(__('Logout'), route('nova-okta.logout'))
));