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