1. Go to this page and download the library: Download ua/okta-oidc 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/ */
use Ua\LaravelOktaOidc\Resolvers\EmailPrincipalResolver;
'principal_resolver' => EmailPrincipalResolver::class,
namespace App\Auth;
use Illuminate\Http\Request;
use Ua\LaravelOktaOidc\Contracts\PrincipalResolver;
use Ua\LaravelOktaOidc\Exceptions\OidcAuthenticationException;
class CwidPrincipalResolver implements PrincipalResolver
{
/**
* @param \Laravel\Socialite\Two\User $oidcUser
*/
public function resolve(object $oidcUser, Request $request): string
{
$cwid = data_get($oidcUser->getRaw(), 'cwid');
if (! filled($cwid)) {
throw new OidcAuthenticationException('OIDC user does not have a CWID claim.');
}
return $cwid;
}
}
namespace App\Auth;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Ua\LaravelOktaOidc\Contracts\UserBootstrapper;
class MyUserBootstrapper implements UserBootstrapper
{
/**
* @param \Laravel\Socialite\Two\User $oidcUser
*/
public function bootstrap(Request $request, string $principal, object $oidcUser): void
{
// Store custom session data
$request->session()->put('department', data_get($oidcUser->getRaw(), 'department'));
// Find or create a local user with custom logic
$user = User::firstOrCreate(
['cwid' => data_get($oidcUser->getRaw(), 'cwid')],
[
'name' => $oidcUser->getName(),
'email' => $oidcUser->getEmail(),
],
);
Auth::login($user);
}
}
namespace App\Auth;
use Illuminate\Http\Request;
use Ua\LaravelOktaOidc\Resolvers\SessionUserBootstrapper;
class MyUserBootstrapper extends SessionUserBootstrapper
{
public function bootstrap(Request $request, string $principal, object $oidcUser): void
{
parent::bootstrap($request, $principal, $oidcUser);
// Your additional setup here...
}
}