Skip to content

Instantly share code, notes, and snippets.

@zar3bski
Last active April 3, 2025 21:30
Show Gist options
  • Save zar3bski/ba1224ab0352c05dfe1e7703db09e94d to your computer and use it in GitHub Desktop.
Save zar3bski/ba1224ab0352c05dfe1e7703db09e94d to your computer and use it in GitHub Desktop.
Set OIDC parameters programmatically for Dolibarr v.17.0.4 official docker image
/*
If it is possible to set `openid_connect` as one of the authentication options in `/var/www/html/conf/conf.php`
```php
<?php
...
$dolibarr_main_authentication = 'openid_connect,dolibarr';
...
```
providing the variables in the interface is a pain in the a**, especially in docker environments
where you dump the volumes to iterate faster.
After some unsuccessful attempts, I give you my receipe: let's just populate llx_const
In the official docker image (tested on dolibarr/dolibarr:21.0.0), this script has to be mounted inside
/var/www/scripts/docker-init.d for the magic to occur
*/
/* create or update MAIN_AUTHENTICATION_OIDC_CLIENT_ID */
SELECT MAX(rowid) AS max into @maxRowId FROM llx_const;
SET @KEY = 'MAIN_AUTHENTICATION_OIDC_CLIENT_ID';
SET @VALUE = 'My-Super-Awesome-Client-ID-1234';
UPDATE llx_const SET value=@VALUE
WHERE name=@KEY;
INSERT INTO llx_const (rowid, name, value)
SELECT @maxRowId+1, @KEY, @VALUE
WHERE NOT EXISTS (SELECT 1 FROM llx_const WHERE name=@KEY);
/* create or update MAIN_AUTHENTICATION_OIDC_CLIENT_SECRET */
SELECT MAX(rowid) AS max into @maxRowId FROM llx_const;
SET @KEY = 'MAIN_AUTHENTICATION_OIDC_CLIENT_SECRET';
SET @VALUE = 'A406Aw5zO0YcUHaxRLJ4N36gNoeFr6bG';
UPDATE llx_const SET value=@VALUE
WHERE name=@KEY;
INSERT INTO llx_const (rowid, name, value)
SELECT @maxRowId+1, @KEY, @VALUE
WHERE NOT EXISTS (SELECT 1 FROM llx_const WHERE name=@KEY);
/* create or update MAIN_AUTHENTICATION_OIDC_AUTHORIZE_URL */
SELECT MAX(rowid) AS max into @maxRowId FROM llx_const;
SET @KEY = 'MAIN_AUTHENTICATION_OIDC_AUTHORIZE_URL';
SET @VALUE = 'https://identity.company.com/realms/pyramiid/protocol/openid-connect/auth';
UPDATE llx_const SET value=@VALUE
WHERE name=@KEY;
INSERT INTO llx_const (rowid, name, value)
SELECT @maxRowId+1, @KEY, @VALUE
WHERE NOT EXISTS (SELECT 1 FROM llx_const WHERE name=@KEY);
/* create or update MAIN_AUTHENTICATION_OIDC_TOKEN_URL */
SELECT MAX(rowid) AS max into @maxRowId FROM llx_const;
SET @KEY = 'MAIN_AUTHENTICATION_OIDC_TOKEN_URL';
SET @VALUE = 'https://identity.company.com/realms/pyramiid/protocol/openid-connect/token';
UPDATE llx_const SET value=@VALUE
WHERE name=@KEY;
INSERT INTO llx_const (rowid, name, value)
SELECT @maxRowId+1, @KEY, @VALUE
WHERE NOT EXISTS (SELECT 1 FROM llx_const WHERE name=@KEY);
/* create or update MAIN_AUTHENTICATION_OIDC_USERINFO_URL */
SELECT MAX(rowid) AS max into @maxRowId FROM llx_const;
SET @KEY = 'MAIN_AUTHENTICATION_OIDC_USERINFO_URL';
SET @VALUE = 'https://identity.company.com/realms/pyramiid/protocol/openid-connect/userinfo';
UPDATE llx_const SET value=@VALUE
WHERE name=@KEY;
INSERT INTO llx_const (rowid, name, value)
SELECT @maxRowId+1, @KEY, @VALUE
WHERE NOT EXISTS (SELECT 1 FROM llx_const WHERE name=@KEY);
/* create or update MAIN_AUTHENTICATION_OIDC_LOGOUT_URL */
SELECT MAX(rowid) AS max into @maxRowId FROM llx_const;
SET @KEY = 'MAIN_AUTHENTICATION_OIDC_LOGOUT_URL';
SET @VALUE = 'https://identity.company.com/realms/pyramiid/protocol/openid-connect/logout';
UPDATE llx_const SET value=@VALUE
WHERE name=@KEY;
INSERT INTO llx_const (rowid, name, value)
SELECT @maxRowId+1, @KEY, @VALUE
WHERE NOT EXISTS (SELECT 1 FROM llx_const WHERE name=@KEY);
/* create or update MAIN_AUTHENTICATION_OIDC_SCOPES */
SELECT MAX(rowid) AS max into @maxRowId FROM llx_const;
SET @KEY = 'MAIN_AUTHENTICATION_OIDC_SCOPES';
SET @VALUE = 'openid email profile';
UPDATE llx_const SET value=@VALUE
WHERE name=@KEY;
INSERT INTO llx_const (rowid, name, value)
SELECT @maxRowId+1, @KEY, @VALUE
WHERE NOT EXISTS (SELECT 1 FROM llx_const WHERE name=@KEY);
/* create or update MAIN_AUTHENTICATION_OIDC_REDIRECT_URL */
SELECT MAX(rowid) AS max into @maxRowId FROM llx_const;
SET @KEY = 'MAIN_AUTHENTICATION_OIDC_REDIRECT_URL';
SET @VALUE = 'https://erp.company.com/?openid_mode=true';
UPDATE llx_const SET value=@VALUE
WHERE name=@KEY;
INSERT INTO llx_const (rowid, name, value)
SELECT @maxRowId+1, @KEY, @VALUE
WHERE NOT EXISTS (SELECT 1 FROM llx_const WHERE name=@KEY);
/* create or update MAIN_AUTHENTICATION_OIDC_REDIRECT_URL */
SELECT MAX(rowid) AS max into @maxRowId FROM llx_const;
SET @KEY = 'MAIN_AUTHENTICATION_OIDC_REDIRECT_URL';
SET @VALUE = 'https://erp.pyramiid.com/?openid_mode=true';
UPDATE llx_const SET value=@VALUE
WHERE name=@KEY;
INSERT INTO llx_const (rowid, name, value)
SELECT @maxRowId+1, @KEY, @VALUE
WHERE NOT EXISTS (SELECT 1 FROM llx_const WHERE name=@KEY);
/* create or update MAIN_AUTHENTICATION_OIDC_LOGIN_CLAIM */
SELECT MAX(rowid) AS max into @maxRowId FROM llx_const;
SET @KEY = 'MAIN_AUTHENTICATION_OIDC_LOGIN_CLAIM';
SET @VALUE = 'email profile';
UPDATE llx_const SET value=@VALUE
WHERE name=@KEY;
INSERT INTO llx_const (rowid, name, value)
SELECT @maxRowId+1, @KEY, @VALUE
WHERE NOT EXISTS (SELECT 1 FROM llx_const WHERE name=@KEY);
/* create or update MAIN_LOGOUT_GOTO_URL */
SELECT MAX(rowid) AS max into @maxRowId FROM llx_const;
SET @KEY = 'MAIN_LOGOUT_GOTO_URL';
SET @VALUE = 'https://identity.company.com/realms/pyramiid/protocol/openid-connect/logout?client_id=My-Super-Awesome-Client-ID-1234&returnTo=https://erp.company.com';
UPDATE llx_const SET value=@VALUE
WHERE name=@KEY;
INSERT INTO llx_const (rowid, name, value)
SELECT @maxRowId+1, @KEY, @VALUE
WHERE NOT EXISTS (SELECT 1 FROM llx_const WHERE name=@KEY);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment