19declare(strict_types=1);
33 private ILIAS\Http\Services
$http;
37 public function __construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output =
true)
43 $this->
logger = $DIC->logger()->auth();
45 $this->
ui = $DIC->ui()->factory();
46 $this->renderer =
$DIC->ui()->renderer();
47 $this->
http = $DIC->http();
49 $this->
lng->loadLanguageModule(
'registration');
50 $this->
lng->loadLanguageModule(
'auth');
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);
67 $this->tabs_gui->setTabActive(
'authentication_settings');
69 $this->tabs_gui->setSubTabActive(
"auth_settings");
71 $generalSettingsTpl =
new ilTemplate(
'tpl.auth_general.html',
true,
true,
'Services/Authentication');
73 $generalSettingsTpl->setVariable(
"FORMACTION", $this->
ctrl->getFormAction($this));
74 $generalSettingsTpl->setVariable(
"TXT_AUTH_TITLE", $this->
lng->txt(
"auth_select"));
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"));
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"));
85 $generalSettingsTpl->setVariable(
"TXT_CAS", $this->
lng->txt(
"auth_cas"));
87 $generalSettingsTpl->setVariable(
"TXT_SCRIPT", $this->
lng->txt(
"auth_script"));
89 $generalSettingsTpl->setVariable(
"TXT_APACHE", $this->
lng->txt(
"auth_apache"));
104 $icon_ok = $this->renderer->render(
107 $icon_not_ok = $this->renderer->render(
111 $this->
logger->debug(print_r($auth_modes,
true));
112 foreach ($auth_modes as $mode => $mode_name) {
117 $generalSettingsTpl->setCurrentBlock(
'auth_mode');
121 $generalSettingsTpl->setVariable(
"AUTH_NAME",
$server->getName());
122 $generalSettingsTpl->setVariable(
'AUTH_ACTIVE',
$server->isActive() ? $icon_ok : $icon_not_ok);
125 $generalSettingsTpl->setVariable(
'AUTH_NAME', $idp->getEntityId());
126 $generalSettingsTpl->setVariable(
'AUTH_ACTIVE', $idp->isActive() ? $icon_ok : $icon_not_ok);
128 $generalSettingsTpl->setVariable(
"AUTH_NAME", $this->
lng->txt(
"auth_" . $mode_name));
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);
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(
141 ((
int) $auth_cnt_mode + $auth_cnt_default) .
" (" . $this->
lng->txt(
"auth_per_default") .
142 ": " . $auth_cnt_default .
")"
145 $generalSettingsTpl->setVariable(
150 $generalSettingsTpl->setVariable(
"AUTH_ID", $mode_name);
151 $generalSettingsTpl->setVariable(
"AUTH_VAL", $mode);
152 $generalSettingsTpl->parseCurrentBlock();
155 $generalSettingsTpl->setVariable(
"TXT_CONFIGURE", $this->
lng->txt(
"auth_configure"));
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();
167 $generalSettingsTpl->setVariable(
'TABLE_AUTH_DETERMINATION', $this->
form->getHTML());
171 $generalSettingsTpl->setVariable(
173 $this->
ctrl->getFormAction($this)
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'));
188 foreach ($reg_roles as $role) {
189 foreach ($active_auth_modes as $auth_name => $auth_key) {
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") {
201 $generalSettingsTpl->setCurrentBlock(
"auth_mode_selection");
203 if ($auth_name ===
'default') {
210 $name = $idp->getEntityId();
212 $name = $this->
lng->txt(
'auth_' . $auth_name);
215 $generalSettingsTpl->setVariable(
"AUTH_MODE_NAME",
$name);
217 $generalSettingsTpl->setVariable(
"AUTH_MODE", $auth_name);
219 if ($role[
'auth_mode'] === $auth_name) {
220 $generalSettingsTpl->setVariable(
"SELECTED_AUTH_MODE",
"selected=\"selected\"");
223 $generalSettingsTpl->parseCurrentBlock();
226 $generalSettingsTpl->setCurrentBlock(
"roles");
227 $generalSettingsTpl->setVariable(
"ROLE", $role[
'title']);
229 $generalSettingsTpl->setVariable(
"ROLE_ID",
"r_" . $role[
'id']);
230 $generalSettingsTpl->parseCurrentBlock();
233 $this->tpl->setContent($generalSettingsTpl->get());
244 if (!$this->rbac_system->checkAccess(
"visible,read", $this->object->getRefId())) {
245 $this->
ilias->raiseError($this->
lng->txt(
"permission_denied"), $this->ilias->error_obj->MESSAGE);
248 $this->tabs_gui->setTabActive(
"authentication_settings");
250 $this->tabs_gui->setSubTabActive(
"auth_login_editor");
252 $this->
lng->loadLanguageModule(
"meta");
254 $this->tpl->addBlockFile(
257 "tpl.auth_login_messages.html",
258 "Services/Authentication"
260 $this->tpl->setVariable(
"FORMACTION", $this->
ctrl->getFormAction($this));
261 $this->tpl->setVariable(
"TXT_HEADLINE", $this->
lng->txt(
"login_information"));
262 $this->tpl->setVariable(
"TXT_DESCRIPTION", $this->
lng->txt(
"login_information_desc"));
263 $this->tpl->setVariable(
"TXT_SUBMIT", $this->
lng->txt(
"save"));
264 $this->tpl->setVariable(
'LOGIN_INFO', $this->
form->getHTML());
270 $this->
ctrl->redirect($this,
"authSettings");
275 if (!$this->rbac_system->checkAccess(
"write", $this->object->getRefId())) {
276 $this->
ilias->raiseError($this->
lng->txt(
"permission_denied"), $this->ilias->error_obj->MESSAGE);
278 $this->
logger->debug(
'auth mode available:' . $this->request_wrapper->has(
"auth_mode"));
280 if (!$this->
http->wrapper()->post()->has(
"auth_mode")) {
281 $this->
ilias->raiseError($this->
lng->txt(
"auth_err_no_mode_selected"), $this->ilias->error_obj->MESSAGE);
283 $new_auth_mode = $this->
http->wrapper()->post()->retrieve(
"auth_mode", $this->
refinery->to()->string());
284 $this->
logger->debug(
'auth mode:' . $new_auth_mode);
285 $current_auth_mode = $this->
settings->get(
'auth_mode',
'');
286 if ($new_auth_mode === $current_auth_mode) {
287 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"auth_mode") .
": " . $this->getAuthModeTitle() .
" " . $this->lng->txt(
"auth_mode_not_changed"),
true);
288 $this->
ctrl->redirect($this,
'authSettings');
291 switch ((
int) $new_auth_mode) {
308 if ($this->
object->checkAuthSHIB() !==
true) {
309 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"auth_shib_not_configured"),
true);
313 $this->
ctrl->getLinkTargetByClass(
314 ilAuthShibbolethSettingsGUI::class,
326 if ($this->
object->checkAuthScript() !==
true) {
327 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"auth_script_not_configured"),
true);
333 $this->
ilias->setSetting(
"auth_mode", $new_auth_mode);
335 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"auth_default_mode_changed_to") .
" " . $this->getAuthModeTitle(),
true);
336 $this->
ctrl->redirect($this,
'authSettings');
340 string $submit_action
343 $role_list = $this->rbac_review->getRolesByFilter(2, $this->
object->
getId());
346 foreach ($role_list as $role) {
347 $roles[$role[
'obj_id']] = $role[
'title'];
350 $active = $this->
ui->input()->field()
351 ->checkbox($this->
lng->txt(
"active"))
352 ->withValue((
bool) $this->
settings->get(
"soap_auth_active",
""));
354 $server = $this->
ui->input()->field()->text(
355 $this->
lng->txt(
"server"),
356 $this->lng->txt(
"auth_soap_server_desc")
357 )->withRequired(
true)
359 ->withValue($this->
settings->get(
"soap_auth_server",
""));
361 $port = $this->
ui->input()->field()->numeric(
362 $this->
lng->txt(
"port"),
363 $this->lng->txt(
"auth_soap_port_desc")
364 )->withAdditionalTransformation($this->
refinery->int()->isGreaterThan(0))
365 ->withAdditionalTransformation(
366 $this->
refinery->int()->isLessThan(65536)
367 )->withValue((
int) $this->
settings->get(
"soap_auth_port",
"0"));
369 $use_https = $this->
ui->input()->field()->checkbox($this->
lng->txt(
"auth_soap_use_https"))
370 ->withValue((
bool) $this->
settings->get(
"soap_auth_use_https",
""));
372 $uri = $this->
ui->input()->field()->text(
373 $this->
lng->txt(
"uri"),
374 $this->lng->txt(
"auth_soap_uri_desc")
375 )->withMaxLength(256)
376 ->withValue($this->
settings->get(
"soap_auth_uri",
""));
379 $this->
lng->txt(
"auth_soap_namespace"),
380 $this->lng->txt(
"auth_soap_namespace_desc")
381 )->withMaxLength(256)
382 ->withValue($this->
settings->get(
"soap_auth_namespace",
""));
384 $dotnet = $this->
ui->input()->field()->checkbox($this->
lng->txt(
"auth_soap_use_dotnet"))
385 ->withValue((
bool) $this->
settings->get(
"soap_auth_use_dotnet",
""));
387 $createuser = $this->
ui->input()->field()->checkbox(
388 $this->
lng->txt(
"auth_create_users"),
389 $this->lng->txt(
"auth_soap_create_users_desc")
390 )->withValue((
bool) $this->
settings->get(
"soap_auth_create_users",
""));
392 $sendmail = $this->
ui->input()->field()->checkbox(
393 $this->
lng->txt(
"user_send_new_account_mail"),
394 $this->lng->txt(
"auth_new_account_mail_desc")
395 )->withValue((
bool) $this->
settings->get(
"soap_auth_account_mail",
""));
397 $defaultrole = $this->
ui->input()->field()->select(
398 $this->
lng->txt(
"auth_user_default_role"),
400 $this->lng->txt(
"auth_soap_user_default_role_desc")
401 )->withValue($this->
settings->get(
"soap_auth_user_default_role",
"4"))
402 ->withAdditionalTransformation($this->
refinery->int()->isGreaterThan(0));
404 $allowlocal = $this->
ui->input()->field()->checkbox(
405 $this->
lng->txt(
"auth_allow_local"),
406 $this->lng->txt(
"auth_soap_allow_local_desc")
407 )->withValue((
bool) $this->
settings->get(
"soap_auth_user_default_role",
""));
409 $form = $this->
ui->input()->container()->form()->standard(
411 [
"active" => $active,
414 "use_https" => $use_https,
418 "createuser" => $createuser,
419 "sendmail" => $sendmail,
420 "defaultrole" => $defaultrole,
421 "allowlocal" => $allowlocal
428 string $submit_action
437 ->checkbox(
"new_user");
438 $form = $this->
ui->input()->container()->form()->standard(
444 )->withSubmitCaption(
"Send");
454 if (!$this->rbac_system->checkAccess(
"read", $this->object->getRefId())) {
455 $this->
ilias->raiseError($this->
lng->txt(
"permission_denied"), $this->ilias->error_obj->MESSAGE);
458 $soap_form = $this->buildSOAPForm($this->
ctrl->getFormAction($this,
"saveSOAP"));
459 $test_form = $this->buildSOAPTestForm($this->
ctrl->getFormAction($this,
"testSoapAuthConnection"));
461 $this->tabs_gui->setTabActive(
'auth_soap');
462 $panel = $this->
ui->panel()->standard(
"SOAP", [$soap_form, $test_form]);
463 $this->tpl->setContent($this->renderer->render(
$panel));
468 if (!$this->rbac_system->checkAccess(
"read", $this->object->getRefId())) {
469 $this->
ilias->raiseError($this->
lng->txt(
"permission_denied"), $this->ilias->error_obj->MESSAGE);
473 $soap_form = $this->buildSOAPForm($this->
ctrl->getFormAction($this,
"saveSOAP"));
474 $test_form = $this->buildSOAPTestForm($this->
ctrl->getFormAction($this,
"testSoapAuthConnection"));
475 $panel_content = [$soap_form, $test_form];
476 if ($this->request->getMethod() ==
"POST") {
477 $test_form = $test_form->withRequest($this->request);
478 $result = $test_form->getData();
479 if (!is_null($result)) {
480 $panel_content[] = $this->
ui->legacy(
485 $this->tabs_gui->setTabActive(
'auth_soap');
486 $panel = $this->
ui->panel()->standard(
"SOAP", $panel_content);
487 $this->tpl->setContent($this->renderer->render(
$panel));
495 if (!$this->rbac_system->checkAccess(
"write", $this->object->getRefId())) {
496 $this->
ilias->raiseError($this->
lng->txt(
"permission_denied"), $this->ilias->error_obj->MESSAGE);
499 $soap_form = $this->buildSOAPForm($this->
ctrl->getFormAction($this,
"saveSOAP"));
500 $test_form = $this->buildSOAPTestForm($this->
ctrl->getFormAction($this,
"testSoapAuthConnection"));
501 if ($this->request->getMethod() ===
"POST") {
502 $soap_form = $soap_form->withRequest($this->request);
503 $result = $soap_form->getData();
504 if (!is_null($result)) {
505 $this->
settings->set(
"soap_auth_active", (
string) $result[
"active"]);
506 $this->
settings->set(
"soap_auth_server", $result[
"server"]);
507 $this->
settings->set(
"soap_auth_port", (
string) $result[
"port"]);
508 $this->
settings->set(
"soap_auth_use_https", (
string) $result[
"use_https"]);
509 $this->
settings->set(
"soap_auth_uri", $result[
"uri"]);
510 $this->
settings->set(
"soap_auth_namespace", $result[
"namespace"]);
511 $this->
settings->set(
"soap_auth_use_dotnet", (
string) $result[
"dotnet"]);
512 $this->
settings->set(
"soap_auth_create_users", (
string) $result[
"createuser"]);
513 $this->
settings->set(
"soap_auth_account_mail", (
string) $result[
"sendmail"]);
514 $this->
settings->set(
"soap_auth_user_default_role", (
string) $result[
"defaultrole"]);
515 $this->
settings->set(
"soap_auth_allow_local", (
string) $result[
"allowlocal"]);
517 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"auth_soap_settings_saved"),
true);
518 $this->
logger->info(
"data" . print_r($result,
true));
519 $this->
ctrl->redirect($this,
'editSOAP');
523 $this->tabs_gui->setTabActive(
'auth_soap');
524 $panel = $this->
ui->panel()->standard(
"SOAP", [$soap_form, $test_form]);
525 $this->tpl->setContent($this->renderer->render(
$panel));
533 if (!$this->rbac_system->checkAccess(
"write", $this->object->getRefId())) {
534 $this->
ilias->raiseError($this->
lng->txt(
"permission_denied"), $this->ilias->error_obj->MESSAGE);
537 if ($_SESSION[
"error_post_vars"]) {
538 $this->tpl->setVariable(
"AUTH_SCRIPT_NAME", $_SESSION[
"error_post_vars"][
"auth_script"][
"name"]);
543 $this->tpl->setVariable(
"AUTH_SCRIPT_NAME",
$settings[
"auth_script_name"]);
546 $this->tabs_gui->setTabActive(
'auth_script');
548 $this->tpl->addBlockFile(
551 "tpl.auth_script.html",
552 "Services/Authentication"
555 $this->tpl->setVariable(
"FORMACTION", $this->
ctrl->getFormAction($this));
556 $this->tpl->setVariable(
"COLSPAN", 3);
557 $this->tpl->setVariable(
"TXT_AUTH_SCRIPT_TITLE", $this->
lng->txt(
"auth_script_configure"));
558 $this->tpl->setVariable(
"TXT_OPTIONS", $this->
lng->txt(
"options"));
559 $this->tpl->setVariable(
"TXT_AUTH_SCRIPT_NAME", $this->
lng->txt(
"auth_script_name"));
561 $this->tpl->setVariable(
"TXT_REQUIRED_FLD", $this->
lng->txt(
"required_field"));
562 $this->tpl->setVariable(
"TXT_CANCEL", $this->
lng->txt(
"cancel"));
563 $this->tpl->setVariable(
"TXT_SUBMIT", $this->
lng->txt(
"save"));
564 $this->tpl->setVariable(
"CMD_SUBMIT",
"saveScript");
573 if (!$_POST[
"auth_script"][
"name"]) {
574 $this->
ilias->raiseError($this->
lng->txt(
"fill_out_all_required_fields"), $this->ilias->error_obj->MESSAGE);
587 $this->
ilias->setSetting(
"auth_script_name", $_POST[
"auth_script"][
"name"]);
590 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"auth_mode_changed_to") .
" " . $this->getAuthModeTitle(),
true);
591 $this->
ctrl->redirect($this,
'editScript');
602 switch ($this->
ilias->getSetting(
"auth_mode")) {
604 return $this->
lng->txt(
"auth_local");
608 return $this->
lng->txt(
"auth_ldap");
612 return $this->
lng->txt(
"auth_shib");
616 return $this->
lng->txt(
"auth_saml");
621 return $this->
lng->txt(
"auth_script");
625 return $this->
lng->txt(
"auth_apache");
629 return $this->
lng->txt(
"unknown");
636 if (!$this->rbac_system->checkAccess(
"write", $this->object->getRefId())) {
637 $this->
ilias->raiseError($this->
lng->txt(
"permission_denied"), $this->ilias->error_obj->MESSAGE);
639 if (!$this->
http->wrapper()->post()->has(
"Fobject")) {
640 $this->
ilias->raiseError($this->
lng->txt(
"auth_err_no_mode_selected"), $this->ilias->error_obj->MESSAGE);
642 $f_object_unconverted = $this->
http->wrapper()->post()->retrieve(
644 $this->
refinery->to()->dictOf($this->refinery->to()->string())
648 foreach ($f_object_unconverted as $role_id => $auth_mode) {
649 $f_object[substr($role_id, 2)] = $auth_mode;
653 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"auth_mode_roles_changed"),
true);
654 $this->
ctrl->redirect($this,
'authSettings');
662 if (isset($this->
form) && is_object($this->
form)) {
667 $this->
form->setFormAction($this->
ctrl->getFormAction($this));
668 $this->
form->setTableWidth(
'100%');
669 $this->
form->setTitle($this->
lng->txt(
'auth_auth_settings'));
671 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
672 $this->
form->addCommandButton(
'updateAuthModeDetermination', $this->
lng->txt(
'save'));
676 if ($det->getCountActiveAuthModes() <= 1) {
681 $header->setTitle($this->
lng->txt(
'auth_auth_mode_determination'));
682 $this->
form->addItem($header);
685 $kind->setInfo($this->
lng->txt(
'auth_mode_determination_info'));
686 $kind->setValue((
string) $det->getKind());
687 $kind->setRequired(
true);
690 $kind->addOption($option_user);
692 $option_determination =
new ilRadioOption($this->
lng->txt(
'auth_automatic'),
"1");
694 $auth_sequenced = $det->getAuthModeSequence();
697 foreach ($auth_sequenced as $auth_mode) {
698 switch ($auth_mode) {
705 $text = $this->
lng->txt(
'auth_local');
708 $text = $this->
lng->txt(
'auth_soap');
711 $text = $this->
lng->txt(
'auth_apache');
715 $option = $pl->getMultipleAuthModeOptions($auth_mode);
716 $text = $option[$auth_mode][
'txt'];
721 $pos =
new ilTextInputGUI($text,
'position[m' . $auth_mode .
']');
722 $pos->setValue($counter++);
724 $pos->setMaxLength(1);
725 $option_determination->addSubItem($pos);
727 $kind->addOption($option_determination);
728 $this->
form->addItem($kind);
737 if (!$this->rbac_system->checkAccess(
"write", $this->object->getRefId())) {
738 $this->
ilias->raiseError($this->
lng->txt(
"permission_denied"), $this->ilias->error_obj->MESSAGE);
741 if (!$this->
http->wrapper()->post()->has(
"kind")) {
742 $this->
ilias->raiseError($this->
lng->txt(
"auth_err_no_mode_selected"), $this->ilias->error_obj->MESSAGE);
744 $kind = $this->
http->wrapper()->post()->retrieve(
"kind", $this->
refinery->kindlyTo()->int());
746 $this->
ilias->raiseError($this->
lng->txt(
"auth_err_no_mode_selected"), $this->ilias->error_obj->MESSAGE);
751 $det->setKind($kind);
753 $pos = $this->
http->wrapper()->post()->retrieve(
755 $this->
refinery->to()->dictOf($this->refinery->kindlyTo()->int())
757 $this->
logger->debug(
'pos mode:' . print_r($pos,
true));
758 asort($pos, SORT_NUMERIC);
759 $this->
logger->debug(
'pos mode:' . print_r($pos,
true));
762 foreach (array_keys($pos) as $auth_mode) {
763 $position[$counter++] = substr($auth_mode, 1);
765 $this->
logger->debug(
'position mode:' . print_r($position,
true));
766 $det->setAuthModeSequence($position);
770 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'));
771 $this->
ctrl->redirect($this,
'authSettings');
779 $next_class = $this->
ctrl->getNextClass($this);
780 $cmd = $this->
ctrl->getCmd();
781 $this->prepareOutput();
783 if (!$this->rbac_system->checkAccess(
"visible,read", $this->object->getRefId())) {
784 $this->
error->raiseError($this->
lng->txt(
'msg_no_perm_read'), $this->error->WARNING);
787 switch ($next_class) {
788 case 'ilopenidconnectsettingsgui':
790 $this->tabs_gui->activateTab(
'auth_oidconnect');
793 $this->
ctrl->forwardCommand($oid);
796 case 'ilsamlsettingsgui':
797 $this->tabs_gui->setTabActive(
'auth_saml');
800 $this->
ctrl->forwardCommand($os);
803 case 'ilregistrationsettingsgui':
806 $this->tabs_gui->setTabActive(
'registration_settings');
808 $this->
ctrl->forwardCommand($registration_gui);
811 case 'ilpermissiongui':
814 $this->tabs_gui->setTabActive(
'perm_settings');
817 $this->
ctrl->forwardCommand($perm_gui);
820 case 'illdapsettingsgui':
823 $this->tabs_gui->setTabActive(
'auth_ldap');
826 $this->
ctrl->forwardCommand($ldap_settings_gui);
829 case 'ilauthshibbolethsettingsgui':
831 $this->tabs_gui->setTabActive(
'auth_shib');
833 $this->
ctrl->forwardCommand($shib_settings_gui);
836 case 'ilcassettingsgui':
838 $this->tabs_gui->setTabActive(
'auth_cas');
840 $this->
ctrl->forwardCommand($cas_settings);
843 case 'ilauthloginpageeditorgui':
845 $this->setSubTabs(
"authSettings");
846 $this->tabs_gui->setTabActive(
'authentication_settings');
847 $this->tabs_gui->setSubTabActive(
"auth_login_editor");
850 $this->
ctrl->forwardCommand($lpe);
855 $cmd =
"authSettings";
874 $this->
ctrl->setParameter($this,
"ref_id", $this->
object->getRefId());
876 if ($this->rbac_system->checkAccess(
"visible,read", $this->object->getRefId())) {
877 $this->tabs_gui->addTarget(
878 "authentication_settings",
879 $this->
ctrl->getLinkTarget($this,
"authSettings"),
885 $this->tabs_gui->addTarget(
886 'registration_settings',
887 $this->
ctrl->getLinkTargetByClass(
'ilregistrationsettingsgui',
'view')
890 $this->tabs_gui->addTarget(
892 $this->
ctrl->getLinkTargetByClass(
'illdapsettingsgui',
'serverList'),
899 #$this->tabs_gui->addTarget("auth_ldap", $this->ctrl->getLinkTarget($this, "editLDAP"),
902 $this->tabs_gui->addTarget(
'auth_shib', $this->
ctrl->getLinkTargetByClass(
'ilauthshibbolethsettingsgui',
'settings'));
904 $this->tabs_gui->addTarget(
906 $this->
ctrl->getLinkTargetByClass(
'ilcassettingsgui',
'settings')
909 $this->tabs_gui->addTarget(
911 $this->
ctrl->getLinkTarget($this,
"editSOAP"),
917 $this->tabs_gui->addTarget(
918 "apache_auth_settings",
919 $this->
ctrl->getLinkTarget($this,
'apacheAuthSettings'),
925 $this->tabs_gui->addTarget(
933 $this->tabs_gui->addTab(
935 $this->
lng->txt(
'auth_oidconnect'),
936 $this->ctrl->getLinkTargetByClass(
'ilopenidconnectsettingsgui')
940 if ($this->rbac_system->checkAccess(
'edit_permission', $this->object->getRefId())) {
941 $this->tabs_gui->addTarget(
943 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilpermissiongui'),
"perm"),
944 array(
"perm",
"info",
"owner"),
955 $this->
lng->loadLanguageModule(
'auth');
957 if ($a_tab ===
'authSettings') {
958 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
959 $this->tabs_gui->addSubTabTarget(
961 $this->
ctrl->getLinkTarget($this,
'authSettings'),
965 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
966 $this->tabs_gui->addSubTabTarget(
968 $this->
ctrl->getLinkTargetByClass(
'ilauthloginpageeditorgui',
''),
978 $this->tabs_gui->setTabActive(
"apache_auth_settings");
980 if (
null === $form) {
981 $form = $this->getApacheAuthSettingsForm();
987 if (file_exists(
$path) && is_readable(
$path)) {
988 $settingsMap[
'apache_auth_domains'] = file_get_contents(
$path);
993 $this->tpl->setVariable(
'ADM_CONTENT', $form->getHtml());
998 $form = $this->getApacheAuthSettingsForm();
1003 'apache_auth_indicator_name',
'apache_auth_indicator_value',
1004 'apache_enable_auth',
'apache_enable_local',
'apache_local_autocreate',
1005 'apache_enable_ldap',
'apache_auth_username_config_type',
1006 'apache_auth_username_direct_mapping_fieldname',
1007 'apache_default_role',
'apache_auth_target_override_login_page',
1008 'apache_auth_enable_override_login_page',
1009 'apache_auth_authenticate_on_login_page',
1013 foreach ($fields as $field) {
1017 if ($form->
getInput(
'apache_enable_auth')) {
1018 $this->
ilias->setSetting(
'apache_active',
'1');
1020 $this->
ilias->setSetting(
'apache_active',
'0');
1029 $allowedDomains = $this->validateApacheAuthAllowedDomains((
string) $form->
getInput(
'apache_auth_domains'));
1032 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'apache_settings_changed_success'),
true);
1033 $this->
ctrl->redirect($this,
'apacheAuthSettings');
1035 $this->apacheAuthSettingsObject($form);
1043 $form->
setTitle($this->
lng->txt(
'apache_settings'));
1046 $chb_enabled->setValue(
'1');
1049 $chb_local_create_account =
new ilCheckboxInputGUI($this->
lng->txt(
'apache_autocreate'),
'apache_local_autocreate');
1050 $chb_local_create_account->setValue(
'1');
1051 $chb_enabled->addSubitem($chb_local_create_account);
1053 $roles = $this->rbac_review->getGlobalRolesArray();
1054 $select =
new ilSelectInputGUI($this->
lng->txt(
'apache_default_role'),
'apache_default_role');
1056 foreach ($roles as $role) {
1059 $select->setOptions($roleOptions);
1060 $select->setValue(4);
1062 $chb_local_create_account->addSubitem($select);
1065 $chb_local->setValue(
'1');
1069 $chb_local->setValue(
'1');
1071 $chb_ldap->setInfo($this->
lng->txt(
'apache_ldap_hint_ldap_must_be_configured'));
1073 $this->
lng->loadLanguageModule(
'auth');
1076 if (count($servers)) {
1077 $ldap_server_select =
new ilSelectInputGUI($this->
lng->txt(
'auth_ldap_server_ds'),
'apache_ldap_sid');
1078 $options[0] = $this->
lng->txt(
'select_one');
1079 foreach ($servers as $server_id) {
1081 $options[$server_id] = $ldap_server->getName();
1083 $ldap_server_select->setOptions($options);
1084 $ldap_server_select->setRequired(
true);
1087 $ldap_server_select->setValue($ds);
1089 $chb_ldap->addSubItem($ldap_server_select);
1093 $txt =
new ilTextInputGUI($this->
lng->txt(
'apache_auth_indicator_name'),
'apache_auth_indicator_name');
1094 $txt->setRequired(
true);
1097 $txt =
new ilTextInputGUI($this->
lng->txt(
'apache_auth_indicator_value'),
'apache_auth_indicator_value');
1098 $txt->setRequired(
true);
1101 $chb =
new ilCheckboxInputGUI($this->
lng->txt(
'apache_auth_enable_override_login'),
'apache_auth_enable_override_login_page');
1102 $chb->setValue(
'1');
1105 $txt =
new ilTextInputGUI($this->
lng->txt(
'apache_auth_target_override_login'),
'apache_auth_target_override_login_page');
1106 $txt->setRequired(
true);
1107 $chb->addSubItem(
$txt);
1109 $chb =
new ilCheckboxInputGUI($this->
lng->txt(
'apache_auth_authenticate_on_login_page'),
'apache_auth_authenticate_on_login_page');
1110 $chb->setValue(
'1');
1114 $sec->setTitle($this->
lng->txt(
'apache_auth_username_config'));
1117 $rag =
new ilRadioGroupInputGUI($this->
lng->txt(
'apache_auth_username_config_type'),
'apache_auth_username_config_type');
1120 $rao =
new ilRadioOption($this->
lng->txt(
'apache_auth_username_direct_mapping'),
"1");
1121 $rag->addOption($rao);
1123 $txt =
new ilTextInputGUI($this->
lng->txt(
'apache_auth_username_direct_mapping_fieldname'),
'apache_auth_username_direct_mapping_fieldname');
1125 $rao->addSubItem(
$txt);
1127 $rao =
new ilRadioOption($this->
lng->txt(
'apache_auth_username_extended_mapping'),
"2");
1128 $rao->setDisabled(
true);
1129 $rag->addOption($rao);
1131 $rao =
new ilRadioOption($this->
lng->txt(
'apache_auth_username_by_function'),
"3");
1132 $rag->addOption($rao);
1135 $sec->setTitle($this->
lng->txt(
'apache_auth_security'));
1139 $txt->setInfo($this->
lng->txt(
'apache_auth_domains_description'));
1143 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1153 return implode(
"\n", preg_split(
"/[\r\n]+/", $text));
1159 $this->
ctrl->redirect($registration_gui);
Login page editor settings GUI ILIAS page editor or richtext editor.
static _getInstance()
Get instance.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getActiveAuthModes()
const AUTH_OPENID_CONNECT
static getAuthPlugins()
Get active enabled auth plugins.
static _getAllAuthModes()
static _getAuthModeName($a_auth_key)
static getInstanceByServerId(int $a_server_id)
Get instance by server id.
static getDataSource(int $a_auth_mode)
static getServerIdByAuthMode(string $a_auth_mode)
Get auth id by auth mode.
static isAuthModeLDAP(string $a_auth_mode)
Check if user auth mode is LDAP.
static getServerIds()
Get all server ids.
Component logger with individual log levels by component id.
ILIAS Http Services $http
getAdminTabs()
administration tabs show only permissions and trash folder
__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output=true)
apacheAuthSettingsObject(?ilPropertyFormGUI $form=null)
validateApacheAuthAllowedDomains(string $text)
saveScriptObject()
validates all input data, save them to database if correct and active chosen auth mode
getApacheAuthSettingsForm()
updateAuthModeDeterminationObject()
update auth mode determination
loginInfoObject()
displays login information of all installed languages
buildSOAPTestForm(string $submit_action)
registrationSettingsObject()
executeCommand()
Execute command.
ILIAS UI Renderer $renderer
getAuthModeTitle()
get the title of auth mode
saveApacheSettingsObject()
editSOAPObject()
Configure soap settings.
cancelObject()
cancel action and go back to previous page
authSettingsObject()
display settings menu
viewObject()
viewObject container presentation for "administration -> repository, trash, permissions"
testSoapAuthConnectionObject()
initAuthModeDetermination()
init auth mode determinitation form
saveSOAPObject()
validates all input data, save them to database if correct and active chosen auth mode
setSubTabs(string $a_tab)
set sub tabs
buildSOAPForm(string $submit_action)
editScriptObject()
Configure Custom settings.
static _updateAuthMode(array $a_roles)
static _lookupRegisterAllowed()
get all roles that are activated in user registration
static _getNumberOfUsersPerAuthMode()
get number of users per auth mode
Class ilObjectGUI Basic methods of all Output classes.
getReturnLocation(string $cmd, string $default_location="")
Get return location for command (command is method name without "Object", e.g.
static _lookupTitle(int $obj_id)
Class ilOpenIdConnectSettingsGUI.
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilRegistrationSettingsGUI.
static testConnection(string $a_ext_uid, string $a_soap_pw, bool $a_new_user)
static getIdpIdByAuthMode(string $a_auth_mode)
static isAuthModeSaml(string $a_auth_mode)
static getInstanceByIdpId(int $a_idp_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
special template class to simplify handling of ITX/PEAR
This class represents a text area property in a property form.
This class represents a text property in a property form.
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
static redirect(string $a_script)
if($err=$client->getError()) $namespace
if(isset($_FILES['img_file']) &&is_array($_FILES['img_file'])) $panel
This is how the factory for UI elements looks.
An entity that renders components to a string output.
static http()
Fetches the global http state from ILIAS.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
form( $class_path, string $cmd)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ChatMainBarProvider \MainMenu\Provider.
header include for all ilias files.