dolibarr 21.0.0-alpha
openid_connect.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2023 Maximilien Rozniecki <mrozniecki@easya.solutions>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
24// Load Dolibarr environment
25require '../main.inc.php';
26require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
27require_once DOL_DOCUMENT_ROOT.'/core/lib/openid_connect.lib.php';
28require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
29dol_include_once('/core/lib/openid_connect.lib.php');
30
31$langs->load("admin");
32$langs->load("openidconnect");
33
34if (!$user->admin) accessforbidden();
35
36$action = GETPOST('action', 'alpha');
37
38
39/*
40 * Actions
41 */
42
43$errors = [];
44$error = 0;
45
46if ($action == 'set') {
47 $client_id = GETPOST('MAIN_AUTHENTICATION_OIDC_LOGIN_CLAIM', 'alpha');
48 $res = dolibarr_set_const($db, 'MAIN_AUTHENTICATION_OIDC_LOGIN_CLAIM', $client_id, 'chaine', 0, '', 0);
49 if (!$res > 0) {
50 $errors[] = $db->lasterror();
51 $error++;
52 }
53
54 $client_id = GETPOST('MAIN_AUTHENTICATION_OIDC_CLIENT_ID', 'alpha');
55 $res = dolibarr_set_const($db, 'MAIN_AUTHENTICATION_OIDC_CLIENT_ID', $client_id, 'chaine', 0, '', 0);
56 if (!$res > 0) {
57 $errors[] = $db->lasterror();
58 $error++;
59 }
60
61 $client_secret = GETPOST('MAIN_AUTHENTICATION_OIDC_CLIENT_SECRET', 'alpha');
62 $res = dolibarr_set_const($db, 'MAIN_AUTHENTICATION_OIDC_CLIENT_SECRET', $client_secret, 'chaine', 0, '', 0);
63 if (!$res > 0) {
64 $errors[] = $db->lasterror();
65 $error++;
66 }
67
68 $scopes = GETPOST('MAIN_AUTHENTICATION_OIDC_SCOPES', 'alpha');
69 $res = dolibarr_set_const($db, 'MAIN_AUTHENTICATION_OIDC_SCOPES', $scopes, 'chaine', 0, '', 0);
70 if (!$res > 0) {
71 $errors[] = $db->lasterror();
72 $error++;
73 }
74
75 $authorize_url = GETPOST('MAIN_AUTHENTICATION_OIDC_AUTHORIZE_URL', 'alpha');
76 $res = dolibarr_set_const($db, 'MAIN_AUTHENTICATION_OIDC_AUTHORIZE_URL', $authorize_url, 'chaine', 0, '', 0);
77 if (!$res > 0) {
78 $errors[] = $db->lasterror();
79 $error++;
80 }
81
82 $value = GETPOST('MAIN_AUTHENTICATION_OIDC_TOKEN_URL', 'alpha');
83 $res = dolibarr_set_const($db, 'MAIN_AUTHENTICATION_OIDC_TOKEN_URL', $value, 'chaine', 0, '', 0);
84 if (!$res > 0) {
85 $errors[] = $db->lasterror();
86 $error++;
87 }
88
89 $value = GETPOST('MAIN_AUTHENTICATION_OIDC_USERINFO_URL', 'alpha');
90 $res = dolibarr_set_const($db, 'MAIN_AUTHENTICATION_OIDC_USERINFO_URL', $value, 'chaine', 0, '', 0);
91 if (!$res > 0) {
92 $errors[] = $db->lasterror();
93 $error++;
94 }
95
96 $logout_url = GETPOST('MAIN_AUTHENTICATION_OIDC_LOGOUT_URL', 'alpha');
97 $res = dolibarr_set_const($db, 'MAIN_AUTHENTICATION_OIDC_LOGOUT_URL', $logout_url, 'chaine', 0, '', 0);
98 if (!$res > 0) {
99 $errors[] = $db->lasterror();
100 $error++;
101 }
102}
103
104if ($action != '') {
105 if (!$error) {
106 setEventMessage($langs->trans("SetupSaved"));
107 header("Location: " . $_SERVER["PHP_SELF"]);
108 exit;
109 } else {
110 setEventMessages('', $errors, 'errors');
111 }
112}
113
114
115/*
116 * View
117 */
118
119$form = new Form($db);
120
121llxHeader();
122
123$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
124print load_fiche_titre($langs->trans("OpenIDconnectSetup"), $linkback, 'title_setup');
125print "<br>\n";
126
127$head = openid_connect_prepare_head();
128
129print dol_get_fiche_head($head, 'settings', $langs->trans("Parameters"), 0, 'action');
130
131
132print '<br>';
133print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
134print '<input type="hidden" name="token" value="'.newToken().'">';
135print '<input type="hidden" name="action" value="set">';
136
137$var=true;
138
139print '<table class="noborder" width="100%">';
140print '<tr class="liste_titre">';
141print '<td>'.$langs->trans("Parameters").'</td>'."\n";
142print '<td align="center">&nbsp;</td>'."\n";
143print '<td align="right">'.$langs->trans("Value").'</td>'."\n";
144print "</tr>\n";
145
146// MAIN_AUTHENTICATION_OIDC_LOGIN_CLAIM
147$var = !$var;
148print '<tr ' . $bc[$var] . '>' . "\n";
149print '<td>'.$langs->trans("MainAuthenticationOidcLoginClaimName").'</td>'."\n";
150print '<td>'.$langs->trans("MainAuthenticationOidcLoginClaimDesc").'</td>'."\n";
151print '<td align="right">' . "\n";
152print '<input name="MAIN_AUTHENTICATION_OIDC_LOGIN_CLAIM" id="MAIN_AUTHENTICATION_OIDC_LOGIN_CLAIM" class="minwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('MAIN_AUTHENTICATION_OIDC_LOGIN_CLAIM') ? GETPOST('MAIN_AUTHENTICATION_OIDC_LOGIN_CLAIM', 'nohtml') : (!empty($conf->global->MAIN_AUTHENTICATION_OIDC_LOGIN_CLAIM) ? getDolGlobalString("MAIN_AUTHENTICATION_OIDC_LOGIN_CLAIM") : ''))).'"></td></tr>';
153print '</td></tr>' . "\n";
154
155// MAIN_AUTHENTICATION_OIDC_CLIENT_ID
156$var = !$var;
157print '<tr ' . $bc[$var] . '>' . "\n";
158print '<td>'.$langs->trans("MainAuthenticationOidcClientIdName").'</td>'."\n";
159print '<td>'.$langs->trans("MainAuthenticationOidcClientIdDesc").'</td>'."\n";
160print '<td align="right">' . "\n";
161print '<input name="MAIN_AUTHENTICATION_OIDC_CLIENT_ID" id="MAIN_AUTHENTICATION_OIDC_CLIENT_ID" class="minwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('MAIN_AUTHENTICATION_OIDC_CLIENT_ID') ? GETPOST('MAIN_AUTHENTICATION_OIDC_CLIENT_ID', 'nohtml') : (!empty($conf->global->MAIN_AUTHENTICATION_OIDC_CLIENT_ID) ? getDolGlobalString("MAIN_AUTHENTICATION_OIDC_CLIENT_ID") : ''))).'"></td></tr>';
162print '</td></tr>' . "\n";
163
164// MAIN_AUTHENTICATION_OIDC_CLIENT_SECRET
165$var = !$var;
166print '<tr ' . $bc[$var] . '>' . "\n";
167print '<td>'.$langs->trans("MainAuthenticationOidcClientSecretName").'</td>'."\n";
168print '<td>'.$langs->trans("MainAuthenticationOidcClientSecretDesc").'</td>'."\n";
169print '<td align="right">' . "\n";
170print '<input type="password" name="MAIN_AUTHENTICATION_OIDC_CLIENT_SECRET" id="MAIN_AUTHENTICATION_OIDC_CLIENT_SECRET" class="minwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('MAIN_AUTHENTICATION_OIDC_CLIENT_SECRET') ? GETPOST('MAIN_AUTHENTICATION_OIDC_CLIENT_SECRET', 'nohtml') : (!empty($conf->global->MAIN_AUTHENTICATION_OIDC_CLIENT_SECRET) ? getDolGlobalString("MAIN_AUTHENTICATION_OIDC_CLIENT_SECRET") : ''))).'"></td></tr>';
171print '</td></tr>' . "\n";
172
173// MAIN_AUTHENTICATION_OIDC_SCOPES
174$var = !$var;
175print '<tr ' . $bc[$var] . '>' . "\n";
176print '<td>'.$langs->trans("MainAuthenticationOidcScopesName").'</td>'."\n";
177print '<td>'.$langs->trans("MainAuthenticationOidcScopesDesc").'</td>'."\n";
178print '<td align="right">' . "\n";
179print '<input name="MAIN_AUTHENTICATION_OIDC_SCOPES" id="MAIN_AUTHENTICATION_OIDC_SCOPES" class="minwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('MAIN_AUTHENTICATION_OIDC_SCOPES') ? GETPOST('MAIN_AUTHENTICATION_OIDC_SCOPES', 'nohtml') : (!empty($conf->global->MAIN_AUTHENTICATION_OIDC_SCOPES) ? getDolGlobalString("MAIN_AUTHENTICATION_OIDC_SCOPES") : ''))).'"></td></tr>';
180print '</td></tr>' . "\n";
181
182// MAIN_AUTHENTICATION_OIDC_AUTHORIZE_URL
183$var = !$var;
184print '<tr ' . $bc[$var] . '>' . "\n";
185print '<td>'.$langs->trans("MainAuthenticationOidcAuthorizeUrlName").'</td>'."\n";
186print '<td>'.$langs->trans("MainAuthenticationOidcAuthorizeUrlDesc").'</td>'."\n";
187print '<td align="right">' . "\n";
188print '<input name="MAIN_AUTHENTICATION_OIDC_AUTHORIZE_URL" id="MAIN_AUTHENTICATION_OIDC_AUTHORIZE_URL" class="minwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('MAIN_AUTHENTICATION_OIDC_AUTHORIZE_URL') ? GETPOST('MAIN_AUTHENTICATION_OIDC_AUTHORIZE_URL', 'nohtml') : (!empty($conf->global->MAIN_AUTHENTICATION_OIDC_AUTHORIZE_URL) ? getDolGlobalString("MAIN_AUTHENTICATION_OIDC_AUTHORIZE_URL") : ''))).'"></td></tr>';
189print '</td></tr>' . "\n";
190
191// MAIN_AUTHENTICATION_OIDC_TOKEN_URL
192$var = !$var;
193print '<tr ' . $bc[$var] . '>' . "\n";
194print '<td>'.$langs->trans("MainAuthenticationOidcTokenUrlName").'</td>'."\n";
195print '<td>'.$langs->trans("MainAuthenticationOidcTokenUrlDesc").'</td>'."\n";
196print '<td align="right">' . "\n";
197print '<input name="MAIN_AUTHENTICATION_OIDC_TOKEN_URL" id="MAIN_AUTHENTICATION_OIDC_TOKEN_URL" class="minwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('MAIN_AUTHENTICATION_OIDC_TOKEN_URL') ? GETPOST('MAIN_AUTHENTICATION_OIDC_TOKEN_URL', 'nohtml') : (!empty($conf->global->MAIN_AUTHENTICATION_OIDC_TOKEN_URL) ? getDolGlobalString("MAIN_AUTHENTICATION_OIDC_TOKEN_URL") : ''))).'"></td></tr>';
198print '</td></tr>' . "\n";
199
200// MAIN_AUTHENTICATION_OIDC_USERINFO_URL
201$var = !$var;
202print '<tr ' . $bc[$var] . '>' . "\n";
203print '<td>'.$langs->trans("MainAuthenticationOidcUserinfoUrlName").'</td>'."\n";
204print '<td>'.$langs->trans("MainAuthenticationOidcUserinfoUrlDesc").'</td>'."\n";
205print '<td align="right">' . "\n";
206print '<input name="MAIN_AUTHENTICATION_OIDC_USERINFO_URL" id="MAIN_AUTHENTICATION_OIDC_USERINFO_URL" class="minwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('MAIN_AUTHENTICATION_OIDC_USERINFO_URL') ? GETPOST('MAIN_AUTHENTICATION_OIDC_USERINFO_URL', 'nohtml') : (!empty($conf->global->MAIN_AUTHENTICATION_OIDC_USERINFO_URL) ? getDolGlobalString("MAIN_AUTHENTICATION_OIDC_USERINFO_URL") : ''))).'"></td></tr>';
207print '</td></tr>' . "\n";
208
209// MAIN_AUTHENTICATION_OIDC_LOGOUT_URL
210$var = !$var;
211print '<tr ' . $bc[$var] . '>' . "\n";
212print '<td>'.$langs->trans("MainAuthenticationOidcLogoutUrlName").'</td>'."\n";
213print '<td>'.$langs->trans("MainAuthenticationOidcLogoutUrlDesc").'</td>'."\n";
214print '<td align="right">' . "\n";
215print '<input name="MAIN_AUTHENTICATION_OIDC_LOGOUT_URL" id="MAIN_AUTHENTICATION_OIDC_LOGOUT_URL" class="minwidth300" value="'.dol_escape_htmltag((GETPOSTISSET('MAIN_AUTHENTICATION_OIDC_LOGOUT_URL') ? GETPOST('MAIN_AUTHENTICATION_OIDC_LOGOUT_URL', 'nohtml') : (!empty($conf->global->MAIN_AUTHENTICATION_OIDC_LOGOUT_URL) ? getDolGlobalString("MAIN_AUTHENTICATION_OIDC_LOGOUT_URL") : ''))).'"></td></tr>';
216print '</td></tr>' . "\n";
217
218// REDIRECT_URL
219$var = !$var;
220print '<tr ' . $bc[$var] . '>' . "\n";
221print '<td>'.$langs->trans("MainAuthenticationOidcRedirectUrlName").'</td>'."\n";
222print '<td>'.$langs->trans("MainAuthenticationOidcRedirectUrlDesc").'</td>'."\n";
223print '<td align="right">' . "\n";
224print '<input class="minwidth300" value="'.dol_escape_htmltag(openid_connect_get_redirect_url()).'" disabled></td></tr>';
225print '</td></tr>' . "\n";
226
227// LOGOUT_URL
228$var = !$var;
229print '<tr ' . $bc[$var] . '>' . "\n";
230print '<td>'.$langs->trans("MainAuthenticationOidcLogoutRedirectUrlName").'</td>'."\n";
231print '<td>'.$langs->trans("MainAuthenticationOidcLogoutRedirectUrlDesc").'</td>'."\n";
232print '<td align="right">' . "\n";
233print '<input class="minwidth300" value="'.dol_escape_htmltag(getDolGlobalString('MAIN_LOGOUT_GOTO_URL', DOL_MAIN_URL_ROOT . "/index.php")).'" disabled></td></tr>';
234print '</td></tr>' . "\n";
235
236print '</table>'."\n";
237
238print '<br>';
239print '<div align="center">';
240print '<input type="submit" class="button" value="'.$langs->trans("Save").'">';
241print '</div>';
242
243print '</form>';
244
245print '<br>';
246
247print dol_get_fiche_end();
248
249llxFooter();
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader($head='', $title='', $help_url='', $target='', $disablejs=0, $disablehead=0, $arrayofjs='', $arrayofcss='', $morequerystring='', $morecssonbody='', $replacemainareaby='', $disablenofollow=0, $disablenoindex=0)
Empty header.
Definition wrapper.php:70
Class to manage generation of HTML components Only common components must be here.
llxFooter()
Footer empty.
Definition document.php:107
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0)
Set event message in dol_events session object.
if(!function_exists( 'dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.