ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
class.ilObjAuthSettingsGUI.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
29 {
30  private ilLogger $logger;
33  private ILIAS\Http\Services $http;
34 
36 
37  public function __construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output = true)
38  {
39  $this->type = "auth";
40  parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
41 
42  global $DIC;
43  $this->logger = $DIC->logger()->auth();
44 
45  $this->ui = $DIC->ui()->factory();
46  $this->renderer = $DIC->ui()->renderer();
47  $this->http = $DIC->http();
48 
49  $this->lng->loadLanguageModule('registration');
50  $this->lng->loadLanguageModule('auth');
51  }
52 
53  public function viewObject(): void
54  {
55  $this->authSettingsObject();
56  }
57 
61  public function authSettingsObject(): void
62  {
63  if (!$this->rbac_system->checkAccess("visible,read", $this->object->getRefId())) {
64  $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
65  }
66 
67  $this->tabs_gui->setTabActive('authentication_settings');
68  $this->setSubTabs('authSettings');
69  $this->tabs_gui->setSubTabActive("auth_settings");
70 
71  $generalSettingsTpl = new ilTemplate('tpl.auth_general.html', true, true, 'Services/Authentication');
72 
73  $generalSettingsTpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
74  $generalSettingsTpl->setVariable("TXT_AUTH_TITLE", $this->lng->txt("auth_select"));
75 
76  $generalSettingsTpl->setVariable("TXT_AUTH_MODE", $this->lng->txt("auth_mode"));
77  $generalSettingsTpl->setVariable("TXT_AUTH_DEFAULT", $this->lng->txt("default"));
78  $generalSettingsTpl->setVariable("TXT_AUTH_ACTIVE", $this->lng->txt("active"));
79  $generalSettingsTpl->setVariable("TXT_AUTH_NUM_USERS", $this->lng->txt("num_users"));
80 
81  $generalSettingsTpl->setVariable("TXT_LOCAL", $this->lng->txt("auth_local"));
82  $generalSettingsTpl->setVariable("TXT_LDAP", $this->lng->txt("auth_ldap"));
83  $generalSettingsTpl->setVariable("TXT_SHIB", $this->lng->txt("auth_shib"));
84 
85  $generalSettingsTpl->setVariable("TXT_CAS", $this->lng->txt("auth_cas"));
86 
87  $generalSettingsTpl->setVariable("TXT_SCRIPT", $this->lng->txt("auth_script"));
88 
89  $generalSettingsTpl->setVariable("TXT_APACHE", $this->lng->txt("auth_apache"));
90 
92  $auth_modes = ilAuthUtils::_getAllAuthModes();
93  $valid_modes = [
101  ];
102  // icon handlers
103 
104  $icon_ok = $this->renderer->render(
105  $this->ui->symbol()->icon()->custom(ilUtil::getImagePath("standard/icon_ok.svg"), $this->lng->txt("enabled"))
106  );
107  $icon_not_ok = $this->renderer->render(
108  $this->ui->symbol()->icon()->custom(ilUtil::getImagePath("standard/icon_not_ok.svg"), $this->lng->txt("disabled"))
109  );
110 
111  $this->logger->debug(print_r($auth_modes, true));
112  foreach ($auth_modes as $mode => $mode_name) {
113  if (!in_array($mode, $valid_modes, true) && !ilLDAPServer::isAuthModeLDAP((string) $mode) && !ilSamlIdp::isAuthModeSaml((string) $mode)) {
114  continue;
115  }
116 
117  $generalSettingsTpl->setCurrentBlock('auth_mode');
118 
119  if (ilLDAPServer::isAuthModeLDAP((string) $mode)) {
121  $generalSettingsTpl->setVariable("AUTH_NAME", $server->getName());
122  $generalSettingsTpl->setVariable('AUTH_ACTIVE', $server->isActive() ? $icon_ok : $icon_not_ok);
123  } elseif (ilSamlIdp::isAuthModeSaml((string) $mode)) {
125  $generalSettingsTpl->setVariable('AUTH_NAME', $idp->getEntityId());
126  $generalSettingsTpl->setVariable('AUTH_ACTIVE', $idp->isActive() ? $icon_ok : $icon_not_ok);
127  } elseif ($mode === ilAuthUtils::AUTH_OPENID_CONNECT) {
128  $generalSettingsTpl->setVariable("AUTH_NAME", $this->lng->txt("auth_" . $mode_name));
129  $generalSettingsTpl->setVariable('AUTH_ACTIVE', ilOpenIdConnectSettings::getInstance()->getActive() ? $icon_ok : $icon_not_ok);
130  } else {
131  $generalSettingsTpl->setVariable("AUTH_NAME", $this->lng->txt("auth_" . $mode_name));
132  $generalSettingsTpl->setVariable('AUTH_ACTIVE', $this->ilias->getSetting($mode_name . '_active') || (int) $mode === ilAuthUtils::AUTH_LOCAL ? $icon_ok : $icon_not_ok);
133  }
134 
135  $auth_cnt_mode = $auth_cnt[$mode_name] ?? 0;
136  if ($this->settings->get('auth_mode') === (string) $mode) {
137  $generalSettingsTpl->setVariable("AUTH_CHECKED", "checked=\"checked\"");
138  $auth_cnt_default = $auth_cnt["default"] ?? 0;
139  $generalSettingsTpl->setVariable(
140  "AUTH_USER_NUM",
141  ((int) $auth_cnt_mode + $auth_cnt_default) . " (" . $this->lng->txt("auth_per_default") .
142  ": " . $auth_cnt_default . ")"
143  );
144  } else {
145  $generalSettingsTpl->setVariable(
146  "AUTH_USER_NUM",
147  (int) $auth_cnt_mode
148  );
149  }
150  $generalSettingsTpl->setVariable("AUTH_ID", $mode_name);
151  $generalSettingsTpl->setVariable("AUTH_VAL", $mode);
152  $generalSettingsTpl->parseCurrentBlock();
153  }
154 
155  $generalSettingsTpl->setVariable("TXT_CONFIGURE", $this->lng->txt("auth_configure"));
156 
157  if ($this->rbac_system->checkAccess("write", $this->object->getRefId())) {
158  $generalSettingsTpl->setVariable("TXT_AUTH_REMARK", $this->lng->txt("auth_remark_non_local_auth"));
159  $generalSettingsTpl->setCurrentBlock('auth_mode_submit');
160  $generalSettingsTpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
161  $generalSettingsTpl->setVariable("CMD_SUBMIT", "setAuthMode");
162  $generalSettingsTpl->parseCurrentBlock();
163  }
164 
165  // auth mode determinitation
166  if ($this->initAuthModeDetermination()) {
167  $generalSettingsTpl->setVariable('TABLE_AUTH_DETERMINATION', $this->form->getHTML());
168  }
169 
170  // roles table
171  $generalSettingsTpl->setVariable(
172  "FORMACTION_ROLES",
173  $this->ctrl->getFormAction($this)
174  );
175  $generalSettingsTpl->setVariable("TXT_AUTH_ROLES", $this->lng->txt("auth_active_roles"));
176  $generalSettingsTpl->setVariable("TXT_ROLE", $this->lng->txt("obj_role"));
177  $generalSettingsTpl->setVariable("TXT_ROLE_AUTH_MODE", $this->lng->txt("auth_role_auth_mode"));
178  if ($this->rbac_system->checkAccess("write", $this->object->getRefId())) {
179  $generalSettingsTpl->setVariable("CMD_SUBMIT_ROLES", "updateAuthRoles");
180  $generalSettingsTpl->setVariable('BTN_SUBMIT_ROLES', $this->lng->txt('save'));
181  }
182 
183  $reg_roles = ilObjRole::_lookupRegisterAllowed();
184 
185  // auth mode selection
186  $active_auth_modes = ilAuthUtils::_getActiveAuthModes();
187 
188  foreach ($reg_roles as $role) {
189  foreach ($active_auth_modes as $auth_name => $auth_key) {
190  // do not list auth modes with external login screen
191  // even not default, because it can easily be set to
192  // a non-working auth mode
193  if ($auth_name === "default" || $auth_name === "cas"
194  || $auth_name === 'saml'
195  || $auth_name === "shibboleth" || $auth_name === 'ldap'
196  || $auth_name === 'apache' || $auth_name === "ecs"
197  || $auth_name === "openid") {
198  continue;
199  }
200 
201  $generalSettingsTpl->setCurrentBlock("auth_mode_selection");
202 
203  if ($auth_name === 'default') {
204  $name = $this->lng->txt('auth_' . $auth_name) . " (" . $this->lng->txt('auth_' . ilAuthUtils::_getAuthModeName($auth_key)) . ")";
205  } elseif ($id = ilLDAPServer::getServerIdByAuthMode((string) $auth_key)) {
207  $name = $server->getName();
208  } elseif ($id = ilSamlIdp::getIdpIdByAuthMode((string) $auth_key)) {
210  $name = $idp->getEntityId();
211  } else {
212  $name = $this->lng->txt('auth_' . $auth_name);
213  }
214 
215  $generalSettingsTpl->setVariable("AUTH_MODE_NAME", $name);
216 
217  $generalSettingsTpl->setVariable("AUTH_MODE", $auth_name);
218 
219  if ($role['auth_mode'] === $auth_name) {
220  $generalSettingsTpl->setVariable("SELECTED_AUTH_MODE", "selected=\"selected\"");
221  }
222 
223  $generalSettingsTpl->parseCurrentBlock();
224  }
225 
226  $generalSettingsTpl->setCurrentBlock("roles");
227  $generalSettingsTpl->setVariable("ROLE", $role['title']);
228  // r_ is add to the role id only for the dictOf transformation used later to parse the input
229  $generalSettingsTpl->setVariable("ROLE_ID", "r_" . $role['id']);
230  $generalSettingsTpl->parseCurrentBlock();
231  }
232 
233  $default_auth_info = $this->ui_factory->messageBox()->info(
234  $this->lng->txt('auth_mode_default_change_info')
235  );
236 
237  $this->tpl->setContent($this->ui_renderer->render($default_auth_info) . $generalSettingsTpl->get());
238  }
239 
240 
246  public function loginInfoObject(): void
247  {
248  if (!$this->rbac_system->checkAccess("visible,read", $this->object->getRefId())) {
249  $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
250  }
251 
252  $this->tabs_gui->setTabActive("authentication_settings");
253  $this->setSubTabs("authSettings");
254  $this->tabs_gui->setSubTabActive("auth_login_editor");
255 
256  $this->lng->loadLanguageModule("meta");
257 
258  $this->tpl->addBlockFile(
259  "ADM_CONTENT",
260  "adm_content",
261  "tpl.auth_login_messages.html",
262  "Services/Authentication"
263  );
264  $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
265  $this->tpl->setVariable("TXT_HEADLINE", $this->lng->txt("login_information"));
266  $this->tpl->setVariable("TXT_DESCRIPTION", $this->lng->txt("login_information_desc"));
267  $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
268  $this->tpl->setVariable('LOGIN_INFO', $this->form->getHTML());
269  }
270 
271 
272  public function cancelObject(): void
273  {
274  $this->ctrl->redirect($this, "authSettings");
275  }
276 
277  public function setAuthModeObject(): void
278  {
279  if (!$this->rbac_system->checkAccess("write", $this->object->getRefId())) {
280  $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
281  }
282  $this->logger->debug('auth mode available:' . $this->request_wrapper->has("auth_mode"));
283 
284  if (!$this->http->wrapper()->post()->has("auth_mode")) {
285  $this->ilias->raiseError($this->lng->txt("auth_err_no_mode_selected"), $this->ilias->error_obj->MESSAGE);
286  }
287  $new_auth_mode = $this->http->wrapper()->post()->retrieve("auth_mode", $this->refinery->to()->string());
288  $this->logger->debug('auth mode:' . $new_auth_mode);
289  $current_auth_mode = $this->settings->get('auth_mode', '');
290  if ($new_auth_mode === $current_auth_mode) {
291  $this->tpl->setOnScreenMessage('info', $this->lng->txt("auth_mode") . ": " . $this->getAuthModeTitle() . " " . $this->lng->txt("auth_mode_not_changed"), true);
292  $this->ctrl->redirect($this, 'authSettings');
293  }
294 
295  switch ((int) $new_auth_mode) {
297  break;
298 
300 
301  /*
302  if ($this->object->checkAuthLDAP() !== true)
303  {
304  ilUtil::sendInfo($this->lng->txt("auth_ldap_not_configured"),true);
305  ilUtil::redirect($this->getReturnLocation("authSettings",$this->ctrl->getLinkTarget($this,"editLDAP", "", false, false)));
306  }
307  */
308  break;
309 
310  // @fix changed from AUTH_SHIB > is not defined
312  if ($this->object->checkAuthSHIB() !== true) {
313  $this->tpl->setOnScreenMessage('failure', $this->lng->txt("auth_shib_not_configured"), true);
315  $this->getReturnLocation(
316  'authSettings',
317  $this->ctrl->getLinkTargetByClass(
318  ilAuthShibbolethSettingsGUI::class,
319  'settings',
320  '',
321  false,
322  false
323  )
324  )
325  );
326  }
327  break;
328 
330  if ($this->object->checkAuthScript() !== true) {
331  $this->tpl->setOnScreenMessage('failure', $this->lng->txt("auth_script_not_configured"), true);
332  ilUtil::redirect($this->getReturnLocation("authSettings", $this->ctrl->getLinkTarget($this, "editScript", "", false, false)));
333  }
334  break;
335  }
336 
337  $this->ilias->setSetting("auth_mode", $new_auth_mode);
338 
339  $this->tpl->setOnScreenMessage('success', $this->lng->txt("auth_default_mode_changed_to") . " " . $this->getAuthModeTitle(), true);
340  $this->ctrl->redirect($this, 'authSettings');
341  }
342 
343  private function buildSOAPForm(
344  string $submit_action
345  ): \ILIAS\UI\Component\Input\Container\Form\Form {
346  // compose role list
347  $role_list = $this->rbac_review->getRolesByFilter(2, $this->object->getId());
348  $roles = [];
349 
350  foreach ($role_list as $role) {
351  $roles[$role['obj_id']] = $role['title'];
352  }
353 
354  $active = $this->ui->input()->field()
355  ->checkbox($this->lng->txt("active"))
356  ->withValue((bool) $this->settings->get("soap_auth_active", ""));
357 
358  $server = $this->ui->input()->field()->text(
359  $this->lng->txt("server"),
360  $this->lng->txt("auth_soap_server_desc")
361  )->withRequired(true)
362  ->withMaxLength(256)
363  ->withValue($this->settings->get("soap_auth_server", ""));
364 
365  $port = $this->ui->input()->field()->numeric(
366  $this->lng->txt("port"),
367  $this->lng->txt("auth_soap_port_desc")
368  )->withAdditionalTransformation($this->refinery->int()->isGreaterThan(0))
370  $this->refinery->int()->isLessThan(65536)
371  )->withValue((int) $this->settings->get("soap_auth_port", "0"));
372 
373  $use_https = $this->ui->input()->field()->checkbox($this->lng->txt("auth_soap_use_https"))
374  ->withValue((bool) $this->settings->get("soap_auth_use_https", ""));
375 
376  $uri = $this->ui->input()->field()->text(
377  $this->lng->txt("uri"),
378  $this->lng->txt("auth_soap_uri_desc")
379  )->withMaxLength(256)
380  ->withValue($this->settings->get("soap_auth_uri", ""));
381 
382  $namespace = $this->ui->input()->field()->text(
383  $this->lng->txt("auth_soap_namespace"),
384  $this->lng->txt("auth_soap_namespace_desc")
385  )->withMaxLength(256)
386  ->withValue($this->settings->get("soap_auth_namespace", ""));
387 
388  $dotnet = $this->ui->input()->field()->checkbox($this->lng->txt("auth_soap_use_dotnet"))
389  ->withValue((bool) $this->settings->get("soap_auth_use_dotnet", ""));
390 
391  $createuser = $this->ui->input()->field()->checkbox(
392  $this->lng->txt("auth_create_users"),
393  $this->lng->txt("auth_soap_create_users_desc")
394  )->withValue((bool) $this->settings->get("soap_auth_create_users", ""));
395 
396  $sendmail = $this->ui->input()->field()->checkbox(
397  $this->lng->txt("user_send_new_account_mail"),
398  $this->lng->txt("auth_new_account_mail_desc")
399  )->withValue((bool) $this->settings->get("soap_auth_account_mail", ""));
400 
401  $defaultrole = $this->ui->input()->field()->select(
402  $this->lng->txt("auth_user_default_role"),
403  $roles,
404  $this->lng->txt("auth_soap_user_default_role_desc")
405  )->withValue($this->settings->get("soap_auth_user_default_role", "4"))
406  ->withAdditionalTransformation($this->refinery->int()->isGreaterThan(0));
407 
408  $allowlocal = $this->ui->input()->field()->checkbox(
409  $this->lng->txt("auth_allow_local"),
410  $this->lng->txt("auth_soap_allow_local_desc")
411  )->withValue((bool) $this->settings->get("soap_auth_user_default_role", ""));
412 
413  $form = $this->ui->input()->container()->form()->standard(
414  $submit_action,
415  [ "active" => $active,
416  "server" => $server,
417  "port" => $port,
418  "use_https" => $use_https,
419  "uri" => $uri,
420  "namespace" => $namespace,
421  "dotnet" => $dotnet,
422  "createuser" => $createuser,
423  "sendmail" => $sendmail,
424  "defaultrole" => $defaultrole,
425  "allowlocal" => $allowlocal
426  ]
427  );
428  return $form;
429  }
430 
431  private function buildSOAPTestForm(
432  string $submit_action
433  ): \ILIAS\UI\Component\Input\Container\Form\Form {
434  $ext_uid = $this->ui->input()->field()->text(
435  "ext_uid"
436  );
437  $soap_pw = $this->ui->input()->field()->text(
438  "soap_pw"
439  );
440  $new_user = $this->ui->input()->field()
441  ->checkbox("new_user");
442  $form = $this->ui->input()->container()->form()->standard(
443  $submit_action,
444  [ "ext_uid" => $ext_uid,
445  "soap_pw" => $soap_pw,
446  "new_user" => $new_user
447  ]
448  )->withSubmitLabel("Send");
449  return $form;
450  }
451 
452 
456  public function editSOAPObject(): void
457  {
458  if (!$this->rbac_system->checkAccess("read", $this->object->getRefId())) {
459  $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
460  }
461 
462  $soap_form = $this->buildSOAPForm($this->ctrl->getFormAction($this, "saveSOAP"));
463  $test_form = $this->buildSOAPTestForm($this->ctrl->getFormAction($this, "testSoapAuthConnection"));
464 
465  $this->tabs_gui->setTabActive('auth_soap');
466  $panel = $this->ui->panel()->standard("SOAP", [$soap_form, $test_form]);
467  $this->tpl->setContent($this->renderer->render($panel));
468  }
469 
470  public function testSoapAuthConnectionObject(): void
471  {
472  if (!$this->rbac_system->checkAccess("read", $this->object->getRefId())) {
473  $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
474  }
475 
476 
477  $soap_form = $this->buildSOAPForm($this->ctrl->getFormAction($this, "saveSOAP"));
478  $test_form = $this->buildSOAPTestForm($this->ctrl->getFormAction($this, "testSoapAuthConnection"));
479  $panel_content = [$soap_form, $test_form];
480  if ($this->request->getMethod() == "POST") {
481  $test_form = $test_form->withRequest($this->request);
482  $result = $test_form->getData();
483  if (!is_null($result)) {
484  $panel_content[] = $this->ui->legacy(
485  ilSOAPAuth::testConnection($result["ext_uid"], $result["soap_pw"], $result["new_user"])
486  );
487  }
488  }
489  $this->tabs_gui->setTabActive('auth_soap');
490  $panel = $this->ui->panel()->standard("SOAP", $panel_content);
491  $this->tpl->setContent($this->renderer->render($panel));
492  }
493 
497  public function saveSOAPObject(): void
498  {
499  if (!$this->rbac_system->checkAccess("write", $this->object->getRefId())) {
500  $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
501  }
502 
503  $soap_form = $this->buildSOAPForm($this->ctrl->getFormAction($this, "saveSOAP"));
504  $test_form = $this->buildSOAPTestForm($this->ctrl->getFormAction($this, "testSoapAuthConnection"));
505  if ($this->request->getMethod() === "POST") {
506  $soap_form = $soap_form->withRequest($this->request);
507  $result = $soap_form->getData();
508  if (!is_null($result)) {
509  $this->settings->set("soap_auth_active", (string) $result["active"]);
510  $this->settings->set("soap_auth_server", $result["server"]);
511  $this->settings->set("soap_auth_port", (string) $result["port"]);
512  $this->settings->set("soap_auth_use_https", (string) $result["use_https"]);
513  $this->settings->set("soap_auth_uri", $result["uri"]);
514  $this->settings->set("soap_auth_namespace", $result["namespace"]);
515  $this->settings->set("soap_auth_use_dotnet", (string) $result["dotnet"]);
516  $this->settings->set("soap_auth_create_users", (string) $result["createuser"]);
517  $this->settings->set("soap_auth_account_mail", (string) $result["sendmail"]);
518  $this->settings->set("soap_auth_user_default_role", (string) $result["defaultrole"]);
519  $this->settings->set("soap_auth_allow_local", (string) $result["allowlocal"]);
520 
521  $this->tpl->setOnScreenMessage('success', $this->lng->txt("auth_soap_settings_saved"), true);
522  $this->logger->info("data" . print_r($result, true));
523  $this->ctrl->redirect($this, 'editSOAP');
524  }
525  }
526 
527  $this->tabs_gui->setTabActive('auth_soap');
528  $panel = $this->ui->panel()->standard("SOAP", [$soap_form, $test_form]);
529  $this->tpl->setContent($this->renderer->render($panel));
530  }
531 
535  public function editScriptObject(): void
536  {
537  if (!$this->rbac_system->checkAccess("write", $this->object->getRefId())) {
538  $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
539  }
540 
541  if ($_SESSION["error_post_vars"]) {
542  $this->tpl->setVariable("AUTH_SCRIPT_NAME", $_SESSION["error_post_vars"]["auth_script"]["name"]);
543  } else {
544  // set already saved data
545  $settings = $this->ilias->getAllSettings();
546 
547  $this->tpl->setVariable("AUTH_SCRIPT_NAME", $settings["auth_script_name"]);
548  }
549 
550  $this->tabs_gui->setTabActive('auth_script');
551 
552  $this->tpl->addBlockFile(
553  "ADM_CONTENT",
554  "adm_content",
555  "tpl.auth_script.html",
556  "Services/Authentication"
557  );
558 
559  $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
560  $this->tpl->setVariable("COLSPAN", 3);
561  $this->tpl->setVariable("TXT_AUTH_SCRIPT_TITLE", $this->lng->txt("auth_script_configure"));
562  $this->tpl->setVariable("TXT_OPTIONS", $this->lng->txt("options"));
563  $this->tpl->setVariable("TXT_AUTH_SCRIPT_NAME", $this->lng->txt("auth_script_name"));
564 
565  $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
566  $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
567  $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
568  $this->tpl->setVariable("CMD_SUBMIT", "saveScript");
569  }
570 
574  public function saveScriptObject(): void
575  {
576  // validate required data
577  if (!$_POST["auth_script"]["name"]) {
578  $this->ilias->raiseError($this->lng->txt("fill_out_all_required_fields"), $this->ilias->error_obj->MESSAGE);
579  }
580 
581  // validate script url
582  /*
583  if (( TODO ,$_POST["ldap"]["server"])) == false)
584  {
585  $this->ilias->raiseError($this->lng->txt("err_invalid_server"),$this->ilias->error_obj->MESSAGE);
586  }*/
587 
588  // TODO: check connection to server
589 
590  // all ok. save settings and activate auth by external script
591  $this->ilias->setSetting("auth_script_name", $_POST["auth_script"]["name"]);
592  $this->ilias->setSetting("auth_mode", (string) ilAuthUtils::AUTH_SCRIPT);
593 
594  $this->tpl->setOnScreenMessage('success', $this->lng->txt("auth_mode_changed_to") . " " . $this->getAuthModeTitle(), true);
595  $this->ctrl->redirect($this, 'editScript');
596  }
597 
598 
604  public function getAuthModeTitle(): string
605  {
606  switch ($this->ilias->getSetting("auth_mode")) {
608  return $this->lng->txt("auth_local");
609  break;
610 
612  return $this->lng->txt("auth_ldap");
613  break;
614 
616  return $this->lng->txt("auth_shib");
617  break;
618 
620  return $this->lng->txt("auth_saml");
621  break;
622 
623 
625  return $this->lng->txt("auth_script");
626  break;
627 
629  return $this->lng->txt("auth_apache");
630  break;
631 
632  default:
633  return $this->lng->txt("unknown");
634  break;
635  }
636  }
637 
638  public function updateAuthRolesObject(): void
639  {
640  if (!$this->rbac_system->checkAccess("write", $this->object->getRefId())) {
641  $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
642  }
643  if (!$this->http->wrapper()->post()->has("Fobject")) {
644  $this->ilias->raiseError($this->lng->txt("auth_err_no_mode_selected"), $this->ilias->error_obj->MESSAGE);
645  }
646  $f_object_unconverted = $this->http->wrapper()->post()->retrieve(
647  "Fobject",
648  $this->refinery->to()->dictOf($this->refinery->to()->string())
649  );
650  // remove the r_ from the role id. It is only added for the dictOf transformation
651  $f_object = [];
652  foreach ($f_object_unconverted as $role_id => $auth_mode) {
653  $f_object[substr($role_id, 2)] = $auth_mode;
654  }
655  ilObjRole::_updateAuthMode($f_object);
656 
657  $this->tpl->setOnScreenMessage('success', $this->lng->txt("auth_mode_roles_changed"), true);
658  $this->ctrl->redirect($this, 'authSettings');
659  }
660 
664  protected function initAuthModeDetermination(): bool
665  {
666  if (isset($this->form) && is_object($this->form)) {
667  return true;
668  }
669 
670  $this->form = new ilPropertyFormGUI();
671  $this->form->setFormAction($this->ctrl->getFormAction($this));
672  $this->form->setTableWidth('100%');
673  $this->form->setTitle($this->lng->txt('auth_auth_settings'));
674 
675  if ($this->access->checkAccess('write', '', $this->object->getRefId())) {
676  $this->form->addCommandButton('updateAuthModeDetermination', $this->lng->txt('save'));
677  }
678 
680  if ($det->getCountActiveAuthModes() <= 1) {
681  return false;
682  }
683 
684  $header = new ilFormSectionHeaderGUI();
685  $header->setTitle($this->lng->txt('auth_auth_mode_determination'));
686  $this->form->addItem($header);
687 
688  $kind = new ilRadioGroupInputGUI($this->lng->txt('auth_kind_determination'), 'kind');
689  $kind->setInfo($this->lng->txt('auth_mode_determination_info'));
690  $kind->setValue((string) $det->getKind());
691  $kind->setRequired(true);
692 
693  $option_user = new ilRadioOption($this->lng->txt('auth_by_user'), "0");
694  $kind->addOption($option_user);
695 
696  $option_determination = new ilRadioOption($this->lng->txt('auth_automatic'), "1");
697 
698  $auth_sequenced = $det->getAuthModeSequence();
699  $counter = 1;
700  $text = "";
701  foreach ($auth_sequenced as $auth_mode) {
702  switch ($auth_mode) {
703  case ilLDAPServer::isAuthModeLDAP((string) $auth_mode):
704  $auth_id = ilLDAPServer::getServerIdByAuthMode($auth_mode);
706  $text = $server->getName();
707  break;
709  $text = $this->lng->txt('auth_local');
710  break;
712  $text = $this->lng->txt('auth_soap');
713  break;
715  $text = $this->lng->txt('auth_apache');
716  break;
717  default:
718  foreach (ilAuthUtils::getAuthPlugins() as $pl) {
719  $option = $pl->getMultipleAuthModeOptions($auth_mode);
720  $text = $option[$auth_mode]['txt'];
721  }
722  break;
723  }
724 
725  $pos = new ilTextInputGUI($text, 'position[m' . $auth_mode . ']');
726  $pos->setValue($counter++);
727  $pos->setSize(1);
728  $pos->setMaxLength(1);
729  $option_determination->addSubItem($pos);
730  }
731  $kind->addOption($option_determination);
732  $this->form->addItem($kind);
733  return true;
734  }
735 
739  public function updateAuthModeDeterminationObject(): void
740  {
741  if (!$this->rbac_system->checkAccess("write", $this->object->getRefId())) {
742  $this->ilias->raiseError($this->lng->txt("permission_denied"), $this->ilias->error_obj->MESSAGE);
743  }
744 
745  if (!$this->http->wrapper()->post()->has("kind")) {
746  $this->ilias->raiseError($this->lng->txt("auth_err_no_mode_selected"), $this->ilias->error_obj->MESSAGE);
747  }
748  $kind = $this->http->wrapper()->post()->retrieve("kind", $this->refinery->kindlyTo()->int());
749  if ($kind === ilAuthModeDetermination::TYPE_AUTOMATIC && !$this->http->wrapper()->post()->has("position")) {
750  $this->ilias->raiseError($this->lng->txt("auth_err_no_mode_selected"), $this->ilias->error_obj->MESSAGE);
751  }
752 
754 
755  $det->setKind($kind);
757  $pos = $this->http->wrapper()->post()->retrieve(
758  "position",
759  $this->refinery->to()->dictOf($this->refinery->kindlyTo()->int())
760  );
761  $this->logger->debug('pos mode:' . print_r($pos, true));
762  asort($pos, SORT_NUMERIC);
763  $this->logger->debug('pos mode:' . print_r($pos, true));
764  $counter = 0;
765  $position = [];
766  foreach (array_keys($pos) as $auth_mode) {
767  $position[$counter++] = substr($auth_mode, 1);
768  }
769  $this->logger->debug('position mode:' . print_r($position, true));
770  $det->setAuthModeSequence($position);
771  }
772  $det->save();
773 
774  $this->tpl->setOnScreenMessage('success', $this->lng->txt('settings_saved'));
775  $this->ctrl->redirect($this, 'authSettings');
776  }
777 
781  public function executeCommand(): void
782  {
783  $next_class = $this->ctrl->getNextClass($this);
784  $cmd = $this->ctrl->getCmd();
785  $this->prepareOutput();
786 
787  if (!$this->rbac_system->checkAccess("visible,read", $this->object->getRefId())) {
788  $this->error->raiseError($this->lng->txt('msg_no_perm_read'), $this->error->WARNING);
789  }
790 
791  switch ($next_class) {
792  case 'ilopenidconnectsettingsgui':
793 
794  $this->tabs_gui->activateTab('auth_oidconnect');
795 
796  $oid = new ilOpenIdConnectSettingsGUI($this->object->getRefId());
797  $this->ctrl->forwardCommand($oid);
798  break;
799 
800  case 'ilsamlsettingsgui':
801  $this->tabs_gui->setTabActive('auth_saml');
802 
803  $os = new ilSamlSettingsGUI($this->object->getRefId());
804  $this->ctrl->forwardCommand($os);
805  break;
806 
807  case 'ilregistrationsettingsgui':
808 
809  // Enable tabs
810  $this->tabs_gui->setTabActive('registration_settings');
811  $registration_gui = new ilRegistrationSettingsGUI();
812  $this->ctrl->forwardCommand($registration_gui);
813  break;
814 
815  case 'ilpermissiongui':
816 
817  // Enable tabs
818  $this->tabs_gui->setTabActive('perm_settings');
819 
820  $perm_gui = new ilPermissionGUI($this);
821  $this->ctrl->forwardCommand($perm_gui);
822  break;
823 
824  case 'illdapsettingsgui':
825 
826  // Enable Tabs
827  $this->tabs_gui->setTabActive('auth_ldap');
828 
829  $ldap_settings_gui = new ilLDAPSettingsGUI($this->object->getRefId());
830  $this->ctrl->forwardCommand($ldap_settings_gui);
831  break;
832 
833  case 'ilauthshibbolethsettingsgui':
834 
835  $this->tabs_gui->setTabActive('auth_shib');
836  $shib_settings_gui = new ilAuthShibbolethSettingsGUI($this->object->getRefId());
837  $this->ctrl->forwardCommand($shib_settings_gui);
838  break;
839 
840  case 'ilcassettingsgui':
841 
842  $this->tabs_gui->setTabActive('auth_cas');
843  $cas_settings = new ilCASSettingsGUI($this->object->getRefId());
844  $this->ctrl->forwardCommand($cas_settings);
845  break;
846 
847  case 'ilauthloginpageeditorgui':
848 
849  $this->setSubTabs("authSettings");
850  $this->tabs_gui->setTabActive('authentication_settings');
851  $this->tabs_gui->setSubTabActive("auth_login_editor");
852 
853  $lpe = new ilAuthLoginPageEditorGUI($this->object->getRefId());
854  $this->ctrl->forwardCommand($lpe);
855  break;
856 
857  default:
858  if (!$cmd) {
859  $cmd = "authSettings";
860  }
861  $cmd .= "Object";
862  $this->$cmd();
863 
864  break;
865  }
866  }
867 
868  public function getAdminTabs(): void
869  {
870  $this->getTabs();
871  }
872 
876  protected function getTabs(): void
877  {
878  $this->ctrl->setParameter($this, "ref_id", $this->object->getRefId());
879 
880  if ($this->rbac_system->checkAccess("visible,read", $this->object->getRefId())) {
881  $this->tabs_gui->addTarget(
882  "authentication_settings",
883  $this->ctrl->getLinkTarget($this, "authSettings"),
884  "",
885  "",
886  ""
887  );
888 
889  $this->tabs_gui->addTarget(
890  'registration_settings',
891  $this->ctrl->getLinkTargetByClass('ilregistrationsettingsgui', 'view')
892  );
893 
894  $this->tabs_gui->addTarget(
895  "auth_ldap",
896  $this->ctrl->getLinkTargetByClass('illdapsettingsgui', 'serverList'),
897  "",
898  "",
899  ""
900  );
901 
902 
903  #$this->tabs_gui->addTarget("auth_ldap", $this->ctrl->getLinkTarget($this, "editLDAP"),
904  # "", "", "");
905 
906  $this->tabs_gui->addTarget('auth_shib', $this->ctrl->getLinkTargetByClass('ilauthshibbolethsettingsgui', 'settings'));
907 
908  $this->tabs_gui->addTarget(
909  'auth_cas',
910  $this->ctrl->getLinkTargetByClass('ilcassettingsgui', 'settings')
911  );
912 
913  $this->tabs_gui->addTarget(
914  "auth_soap",
915  $this->ctrl->getLinkTarget($this, "editSOAP"),
916  "",
917  "",
918  ""
919  );
920 
921  $this->tabs_gui->addTarget(
922  "apache_auth_settings",
923  $this->ctrl->getLinkTarget($this, 'apacheAuthSettings'),
924  "",
925  "",
926  ""
927  );
928 
929  $this->tabs_gui->addTarget(
930  'auth_saml',
931  $this->ctrl->getLinkTargetByClass('ilsamlsettingsgui', ilSamlSettingsGUI::DEFAULT_CMD),
932  '',
933  '',
934  ''
935  );
936 
937  $this->tabs_gui->addTab(
938  'auth_oidconnect',
939  $this->lng->txt('auth_oidconnect'),
940  $this->ctrl->getLinkTargetByClass('ilopenidconnectsettingsgui')
941  );
942  }
943 
944  if ($this->rbac_system->checkAccess('edit_permission', $this->object->getRefId())) {
945  $this->tabs_gui->addTarget(
946  "perm_settings",
947  $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"),
948  array("perm","info","owner"),
949  'ilpermissiongui'
950  );
951  }
952  }
953 
957  public function setSubTabs(string $a_tab): void
958  {
959  $this->lng->loadLanguageModule('auth');
960 
961  if ($a_tab === 'authSettings') {
962  if ($this->access->checkAccess('write', '', $this->object->getRefId())) {
963  $this->tabs_gui->addSubTabTarget(
964  "auth_settings",
965  $this->ctrl->getLinkTarget($this, 'authSettings'),
966  ""
967  );
968  }
969  if ($this->access->checkAccess('write', '', $this->object->getRefId())) {
970  $this->tabs_gui->addSubTabTarget(
971  'auth_login_editor',
972  $this->ctrl->getLinkTargetByClass('ilauthloginpageeditorgui', ''),
973  ''
974  );
975  }
976  }
977  }
978 
979 
980  public function apacheAuthSettingsObject(?ilPropertyFormGUI $form = null): void
981  {
982  $this->tabs_gui->setTabActive("apache_auth_settings");
983 
984  if (null === $form) {
985  $form = $this->getApacheAuthSettingsForm();
986 
987  $settings = new ilSetting('apache_auth');
988  $settingsMap = $settings->getAll();
989 
990  $path = ILIAS_DATA_DIR . '/' . CLIENT_ID . '/apache_auth_allowed_domains.txt';
991  if (file_exists($path) && is_readable($path)) {
992  $settingsMap['apache_auth_domains'] = file_get_contents($path);
993  }
994 
995  $form->setValuesByArray($settingsMap);
996  }
997  $this->tpl->setVariable('ADM_CONTENT', $form->getHtml());
998  }
999 
1000  public function saveApacheSettingsObject(): void
1001  {
1002  $form = $this->getApacheAuthSettingsForm();
1003  $form->setValuesByPost();
1004  if ($form->checkInput()) {
1005  $settings = new ilSetting('apache_auth');
1006  $fields = [
1007  'apache_auth_indicator_name', 'apache_auth_indicator_value',
1008  'apache_enable_auth', 'apache_enable_local', 'apache_local_autocreate',
1009  'apache_enable_ldap', 'apache_auth_username_config_type',
1010  'apache_auth_username_direct_mapping_fieldname',
1011  'apache_default_role', 'apache_auth_target_override_login_page',
1012  'apache_auth_enable_override_login_page',
1013  'apache_auth_authenticate_on_login_page',
1014  'apache_ldap_sid'
1015  ];
1016 
1017  foreach ($fields as $field) {
1018  $settings->set($field, (string) $form->getInput($field));
1019  }
1020 
1021  if ($form->getInput('apache_enable_auth')) {
1022  $this->ilias->setSetting('apache_active', '1');
1023  } else {
1024  $this->ilias->setSetting('apache_active', '0');
1025  global $DIC;
1026 
1027  $ilSetting = $DIC['ilSetting'];
1028  if ((int) $ilSetting->get("auth_mode", '0') === ilAuthUtils::AUTH_APACHE) {
1029  $ilSetting->set("auth_mode", (string) ilAuthUtils::AUTH_LOCAL);
1030  }
1031  }
1032 
1033  $allowedDomains = $this->validateApacheAuthAllowedDomains((string) $form->getInput('apache_auth_domains'));
1034  file_put_contents(ILIAS_DATA_DIR . '/' . CLIENT_ID . '/apache_auth_allowed_domains.txt', $allowedDomains);
1035 
1036  $this->tpl->setOnScreenMessage('success', $this->lng->txt('apache_settings_changed_success'), true);
1037  $this->ctrl->redirect($this, 'apacheAuthSettings');
1038  } else {
1039  $this->apacheAuthSettingsObject($form);
1040  }
1041  }
1042 
1044  {
1045  $form = new ilPropertyFormGUI();
1046  $form->setFormAction($this->ctrl->getFormAction($this));
1047  $form->setTitle($this->lng->txt('apache_settings'));
1048 
1049  $chb_enabled = new ilCheckboxInputGUI($this->lng->txt('apache_enable_auth'), 'apache_enable_auth');
1050  $chb_enabled->setValue('1');
1051  $form->addItem($chb_enabled);
1052 
1053  $chb_local_create_account = new ilCheckboxInputGUI($this->lng->txt('apache_autocreate'), 'apache_local_autocreate');
1054  $chb_local_create_account->setValue('1');
1055  $chb_enabled->addSubitem($chb_local_create_account);
1056 
1057  $roles = $this->rbac_review->getGlobalRolesArray();
1058  $select = new ilSelectInputGUI($this->lng->txt('apache_default_role'), 'apache_default_role');
1059  $roleOptions = [];
1060  foreach ($roles as $role) {
1061  $roleOptions[$role['obj_id']] = ilObject::_lookupTitle($role['obj_id']);
1062  }
1063  $select->setOptions($roleOptions);
1064  $select->setValue(4);
1065 
1066  $chb_local_create_account->addSubitem($select);
1067 
1068  $chb_local = new ilCheckboxInputGUI($this->lng->txt('apache_enable_local'), 'apache_enable_local');
1069  $chb_local->setValue('1');
1070  $form->addItem($chb_local);
1071 
1072  $chb_ldap = new ilCheckboxInputGUI($this->lng->txt('apache_enable_ldap'), 'apache_enable_ldap');
1073  $chb_local->setValue('1');
1074 
1075  $chb_ldap->setInfo($this->lng->txt('apache_ldap_hint_ldap_must_be_configured'));
1076 
1077  $this->lng->loadLanguageModule('auth');
1078 
1079  $servers = ilLDAPServer::getServerIds();
1080  if (count($servers)) {
1081  $ldap_server_select = new ilSelectInputGUI($this->lng->txt('auth_ldap_server_ds'), 'apache_ldap_sid');
1082  $options[0] = $this->lng->txt('select_one');
1083  foreach ($servers as $server_id) {
1084  $ldap_server = new ilLDAPServer($server_id);
1085  $options[$server_id] = $ldap_server->getName();
1086  }
1087  $ldap_server_select->setOptions($options);
1088  $ldap_server_select->setRequired(true);
1089 
1091  $ldap_server_select->setValue($ds);
1092 
1093  $chb_ldap->addSubItem($ldap_server_select);
1094  }
1095  $form->addItem($chb_ldap);
1096 
1097  $txt = new ilTextInputGUI($this->lng->txt('apache_auth_indicator_name'), 'apache_auth_indicator_name');
1098  $txt->setRequired(true);
1099  $form->addItem($txt);
1100 
1101  $txt = new ilTextInputGUI($this->lng->txt('apache_auth_indicator_value'), 'apache_auth_indicator_value');
1102  $txt->setRequired(true);
1103  $form->addItem($txt);
1104 
1105  $chb = new ilCheckboxInputGUI($this->lng->txt('apache_auth_enable_override_login'), 'apache_auth_enable_override_login_page');
1106  $chb->setValue('1');
1107  $form->addItem($chb);
1108 
1109  $txt = new ilTextInputGUI($this->lng->txt('apache_auth_target_override_login'), 'apache_auth_target_override_login_page');
1110  $txt->setRequired(true);
1111  $chb->addSubItem($txt);
1112 
1113  $chb = new ilCheckboxInputGUI($this->lng->txt('apache_auth_authenticate_on_login_page'), 'apache_auth_authenticate_on_login_page');
1114  $chb->setValue('1');
1115  $form->addItem($chb);
1116 
1117  $sec = new ilFormSectionHeaderGUI();
1118  $sec->setTitle($this->lng->txt('apache_auth_username_config'));
1119  $form->addItem($sec);
1120 
1121  $rag = new ilRadioGroupInputGUI($this->lng->txt('apache_auth_username_config_type'), 'apache_auth_username_config_type');
1122  $form->addItem($rag);
1123 
1124  $rao = new ilRadioOption($this->lng->txt('apache_auth_username_direct_mapping'), "1");
1125  $rag->addOption($rao);
1126 
1127  $txt = new ilTextInputGUI($this->lng->txt('apache_auth_username_direct_mapping_fieldname'), 'apache_auth_username_direct_mapping_fieldname');
1128  //$txt->setRequired(true);
1129  $rao->addSubItem($txt);
1130 
1131  $rao = new ilRadioOption($this->lng->txt('apache_auth_username_extended_mapping'), "2");
1132  $rao->setDisabled(true);
1133  $rag->addOption($rao);
1134 
1135  $rao = new ilRadioOption($this->lng->txt('apache_auth_username_by_function'), "3");
1136  $rag->addOption($rao);
1137 
1138  $sec = new ilFormSectionHeaderGUI();
1139  $sec->setTitle($this->lng->txt('apache_auth_security'));
1140  $form->addItem($sec);
1141 
1142  $txt = new ilTextAreaInputGUI($this->lng->txt('apache_auth_domains'), 'apache_auth_domains');
1143  $txt->setInfo($this->lng->txt('apache_auth_domains_description'));
1144 
1145  $form->addItem($txt);
1146 
1147  if ($this->access->checkAccess('write', '', $this->ref_id)) {
1148  $form->addCommandButton('saveApacheSettings', $this->lng->txt('save'));
1149  }
1150  $form->addCommandButton('cancel', $this->lng->txt('cancel'));
1151 
1152  return $form;
1153  }
1154 
1155  private function validateApacheAuthAllowedDomains(string $text): string
1156  {
1157  return implode("\n", preg_split("/[\r\n]+/", $text));
1158  }
1159 
1160  public function registrationSettingsObject(): void
1161  {
1162  $registration_gui = new ilRegistrationSettingsGUI();
1163  $this->ctrl->redirect($registration_gui);
1164  }
1165 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
if($err=$client->getError()) $namespace
const AUTH_OPENID_CONNECT
editScriptObject()
Configure Custom settings.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static isAuthModeSaml(string $a_auth_mode)
static getDataSource(int $a_auth_mode)
Class ilOpenIdConnectSettingsGUI.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a selection list property in a property form.
getAuthModeTitle()
get the title of auth mode
static _lookupRegisterAllowed()
get all roles that are activated in user registration
setDisabled(bool $a_disabled)
static getInstanceByServerId(int $a_server_id)
Get instance by server id.
prepareOutput(bool $show_sub_objects=true)
Class ChatMainBarProvider .
set(string $a_key, string $a_val)
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
$ext_uid
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
loginInfoObject()
displays login information of all installed languages
setOptions(array $a_options)
static _getActiveAuthModes()
buildSOAPTestForm(string $submit_action)
static getInstanceByIdpId(int $a_idp_id)
static getIdpIdByAuthMode(string $a_auth_mode)
static _getAuthModeName($a_auth_key)
getInput(string $a_post_var, bool $ensureValidation=true)
Returns the input of an item, if item provides getInput method and as fallback the value of the HTTP-...
$path
Definition: ltiservices.php:32
buildSOAPForm(string $submit_action)
global $DIC
Definition: feed.php:28
static getServerIdByAuthMode(string $a_auth_mode)
Get auth id by auth mode.
static getAuthPlugins()
Get active enabled auth plugins.
initAuthModeDetermination()
init auth mode determinitation form
editSOAPObject()
Configure soap settings.
saveScriptObject()
validates all input data, save them to database if correct and active chosen auth mode ...
static http()
Fetches the global http state from ILIAS.
This class represents a property in a property form.
__construct(VocabulariesInterface $vocabularies)
static getServerIds()
Get all server ids.
static _lookupTitle(int $obj_id)
apacheAuthSettingsObject(?ilPropertyFormGUI $form=null)
setFormAction(string $a_formaction)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getNumberOfUsersPerAuthMode()
get number of users per auth mode
Class ilObjectGUI Basic methods of all Output classes.
$soap_pw
const CLIENT_ID
Definition: constants.php:41
Class ilRegistrationSettingsGUI.
header include for all ilias files.
setValuesByArray(array $a_values, bool $a_restrict_to_value_keys=false)
$txt
Definition: error.php:14
authSettingsObject()
display settings menu
withValue($value)
Get an input like this with another value displayed on the client side.
Definition: Group.php:58
addCommandButton(string $a_cmd, string $a_text, string $a_id="")
const ILIAS_DATA_DIR
Definition: constants.php:44
static redirect(string $a_script)
$new_user
$server
form( $class_path, string $cmd, string $submit_caption="")
static testConnection(string $a_ext_uid, string $a_soap_pw, bool $a_new_user)
static _getAllAuthModes()
Class ilSamlSettingsGUI.
updateAuthModeDeterminationObject()
update auth mode determination
global $ilSetting
Definition: privfeed.php:18
static _updateAuthMode(array $a_roles)
getReturnLocation(string $cmd, string $default_location="")
Get return location for command (command is method name without "Object", e.g.
This class represents a text area property in a property form.
static isAuthModeLDAP(string $a_auth_mode)
Check if user auth mode is LDAP.
__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output=true)
saveSOAPObject()
validates all input data, save them to database if correct and active chosen auth mode ...
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
ilSetting $settings
setSubTabs(string $a_tab)
set sub tabs