Hi guys my app is working nice but now I need to read auth0 credentials from db instead of config/auth0.php file?
To provide more details:
Im buildding a multitenant application.
Tenant should use different auth0 credentials.
Tenant is identified based on requested url.
Does the sdk natively support this feature ?
I tryed modfing the auth0.php file to read values directly from database but laravel throws an exception informing that db connection is not ready at this time.
Any ideas ?
Hi there!
We don’t have any built-in support for doing that for you. I would suggest handling pulling the configuration details you need from your database within your own application logic, and updating the SDK’s configuration dynamically as needed.
// Specific changes:
app('auth0')->getConfiguration()->setCustomDomain('an.example.com');
// Overwriting the configuration completely:
$yourConfiguration = new \Auth0\SDK\Configuration\SdkConfiguration([
'your' => 'settings'
]);
app('auth0')->setConfiguration($yourConfiguration);
You can reference the SdkConfiguration
options available from the underlying PHP SDK.
1 Like
Thanks !!!
I understand that basically I will need to find out where is the sdk initialized to bring the config array from db.
Leandro.
Ok this is what i didi:
in the class definition at (vendor/auth0/login/src/Auth0.php)
I modified the get sdk method like:
public function getSdk(): \Auth0\SDK\Auth0
{
if ($this->sdk === null) {
$this->sdk = new \Auth0\SDK\Auth0([
'strategy' => env('AUTH0_STRATEGY', 'webapp'),
'customDomain' => env('AUTH0_CUSTOM_DOMAIN'),
'domain' => \App\Helpers\ClassAuth0Creds::get_AUTH0_KEY('AUTH0_DOMAIN'),
'clientId' => \App\Helpers\ClassAuth0Creds::get_AUTH0_KEY('AUTH0_CLIENT_ID'),
'redirectUri' => \App\Helpers\ClassAuth0Creds::get_AUTH0_KEY('AUTH0_REDIRECT_URI'),
'clientSecret' => \App\Helpers\ClassAuth0Creds::get_AUTH0_KEY('AUTH0_CLIENT_SECRET'),
'audience' => \Auth0\Laravel\Configuration::stringToArrayOrNull(env('AUTH0_AUDIENCE')),
'scope' => \Auth0\Laravel\Configuration::stringToArrayOrNull(env('AUTH0_SCOPE')),
'organization' => \Auth0\Laravel\Configuration::stringToArrayOrNull(env('AUTH0_ORGANIZATION')),
'cookieSecret' => env('AUTH0_COOKIE_SECRET', env('APP_KEY')),
'cookieExpires' => env('COOKIE_EXPIRES', 0),
'cookieDomain' => env('AUTH0_COOKIE_DOMAIN'),
'cookiePath' => env('AUTH0_COOKIE_PATH'),
'cookieSecure' => \Auth0\Laravel\Configuration::stringToBoolOrNull(env('AUTH0_COOKIE_SECURE'), false),
'routes' => [
'home' => env('AUTH0_ROUTE_HOME', '/'),
'login' => env('AUTH0_ROUTE_LOGIN', 'login')
]
]);
$this->setSdkTelemetry();
}
return $this->sdk;
}
then , the:
\App\Helpers\ClassAuth0Creds
Is where I read the credentials on the db.
Perhaps it is not the most elegant solution but it works.
Any suggestion is wellcome.
thanks.
1 Like