19declare(strict_types=1);
44 public function __construct($a_data,
int $a_id,
bool $a_call_by_reference,
bool $a_prepare_output =
true)
50 $this->
logger = $DIC->logger()->auth();
52 $this->
lng->loadLanguageModule(
'administration');
53 $this->
lng->loadLanguageModule(
'registration');
54 $this->
lng->loadLanguageModule(
'auth');
55 $this->
lng->loadLanguageModule(
'content');
56 $this->content_style_gui =
$DIC->contentStyle()->gui();
65 ?
ILIAS\UI\
Component\Input\Container\Form\Form $auth_mode_determination_form =
null,
66 ?
ILIAS\UI\
Component\Input\Container\Form\Form $registration_role_mapping_form =
null
69 $this->
ilias->raiseError($this->
lng->txt(
'permission_denied'), $this->ilias->error_obj->MESSAGE);
72 $this->tabs_gui->setTabActive(
'authentication_settings');
74 $this->tabs_gui->setSubTabActive(
'auth_settings');
76 $generalSettingsTpl =
new ilTemplate(
'tpl.auth_general.html',
true,
true,
'components/ILIAS/Authentication');
78 $generalSettingsTpl->setVariable(
'FORMACTION', $this->
ctrl->getFormAction($this));
80 $generalSettingsTpl->setVariable(
'TXT_AUTH_MODE', $this->
lng->txt(
'auth_mode'));
81 $generalSettingsTpl->setVariable(
'TXT_AUTH_DEFAULT', $this->
lng->txt(
'default'));
82 $generalSettingsTpl->setVariable(
'TXT_AUTH_ACTIVE', $this->
lng->txt(
'active'));
83 $generalSettingsTpl->setVariable(
'TXT_AUTH_NUM_USERS', $this->
lng->txt(
'num_users'));
85 $generalSettingsTpl->setVariable(
'TXT_LOCAL', $this->
lng->txt(
'auth_local'));
86 $generalSettingsTpl->setVariable(
'TXT_LDAP', $this->
lng->txt(
'auth_ldap'));
87 $generalSettingsTpl->setVariable(
'TXT_SHIB', $this->
lng->txt(
'auth_shib'));
89 $generalSettingsTpl->setVariable(
'TXT_SCRIPT', $this->
lng->txt(
'auth_script'));
91 $generalSettingsTpl->setVariable(
'TXT_APACHE', $this->
lng->txt(
'auth_apache'));
104 $icon_ok = $this->ui_renderer->render(
105 $this->ui_factory->symbol()->icon()->custom(
107 $this->lng->txt(
'enabled')
110 $icon_not_ok = $this->ui_renderer->render(
111 $this->ui_factory->symbol()->icon()->custom(
113 $this->lng->txt(
'disabled')
117 $this->
logger->debug(print_r($auth_modes,
true));
118 foreach ($auth_modes as $mode => $mode_name) {
125 $generalSettingsTpl->setCurrentBlock(
'auth_mode');
129 $generalSettingsTpl->setVariable(
'AUTH_NAME',
$server->getName());
130 $generalSettingsTpl->setVariable(
'AUTH_ACTIVE',
$server->isActive() ? $icon_ok : $icon_not_ok);
133 $generalSettingsTpl->setVariable(
'AUTH_NAME', $idp->getEntityId());
134 $generalSettingsTpl->setVariable(
'AUTH_ACTIVE', $idp->isActive() ? $icon_ok : $icon_not_ok);
136 $generalSettingsTpl->setVariable(
'AUTH_NAME', $this->
lng->txt(
'auth_' . $mode_name));
137 $generalSettingsTpl->setVariable(
142 $generalSettingsTpl->setVariable(
'AUTH_NAME', $this->
lng->txt(
'auth_' . $mode_name));
143 $generalSettingsTpl->setVariable(
145 $this->
ilias->getSetting(
146 $mode_name .
'_active'
151 $auth_cnt_mode = $auth_cnt[$mode_name] ?? 0;
152 if ($this->
settings->get(
'auth_mode') === (
string) $mode) {
153 $generalSettingsTpl->setVariable(
'AUTH_CHECKED',
'checked="checked"');
154 $auth_cnt_default = $auth_cnt[
'default'] ?? 0;
155 $generalSettingsTpl->setVariable(
157 ((
int) $auth_cnt_mode + $auth_cnt_default) .
' (' . $this->
lng->txt(
'auth_per_default') .
158 ': ' . $auth_cnt_default .
')'
161 $generalSettingsTpl->setVariable(
166 $generalSettingsTpl->setVariable(
'AUTH_ID', $mode_name);
167 $generalSettingsTpl->setVariable(
'AUTH_VAL', $mode);
168 $generalSettingsTpl->parseCurrentBlock();
171 $generalSettingsTpl->setVariable(
'TXT_CONFIGURE', $this->
lng->txt(
'auth_configure'));
173 if ($this->rbac_system->checkAccess(
'write', $this->object->getRefId())) {
174 $generalSettingsTpl->setVariable(
'TXT_AUTH_REMARK', $this->
lng->txt(
'auth_remark_non_local_auth'));
175 $generalSettingsTpl->setCurrentBlock(
'auth_mode_submit');
176 $generalSettingsTpl->setVariable(
'TXT_SUBMIT', $this->
lng->txt(
'save'));
177 $generalSettingsTpl->setVariable(
'CMD_SUBMIT',
'setAuthMode');
178 $generalSettingsTpl->parseCurrentBlock();
182 $this->ui_factory->panel()->standard(
183 $this->
lng->txt(
'auth_select'),
184 $this->ui_factory->legacy()->content(implode(
'', [
185 $this->ui_renderer->render($this->ui_factory->messageBox()->info(
186 $this->lng->txt(
'auth_mode_default_change_info')
188 $generalSettingsTpl->get()
194 if ($auth_mode_determination_form !==
null) {
195 $page_content[] = $this->ui_factory->panel()->standard(
196 $this->
lng->txt(
'auth_auth_mode_determination'),
197 $auth_mode_determination_form
201 $page_content[] = $this->ui_factory->panel()->standard(
202 $this->
lng->txt(
'auth_active_roles'),
203 $registration_role_mapping_form ?? $this->buildRegistrationRoleMappingForm()
206 $this->tpl->setContent(
207 $this->ui_renderer->render($page_content)
213 $disabled_fields = !$this->rbac_system->checkAccess(
'write', $this->
object->getRefId());
218 $excluded_auth_names = [
'default',
'saml',
'shibboleth',
'ldap',
'lti',
'apache',
'ecs',
'oidc'];
222 $active_auth_modes = array_filter(
224 static function (
string $auth_name) use ($excluded_auth_names):
bool {
225 foreach ($excluded_auth_names as $excluded_auth_name) {
226 if ($auth_name === $excluded_auth_name) {
230 if (str_starts_with($auth_name, $excluded_auth_name)) {
239 foreach ($reg_roles as $role) {
242 foreach ($active_auth_modes as $auth_name => $auth_key) {
243 if ($auth_name ===
'default') {
244 $name = $this->
lng->txt(
'auth_' . $auth_name) .
' (' . $this->
lng->txt(
248 $name = $this->
lng->txt(
'auth_' . $auth_name);
253 if ($role[
'auth_mode'] === $auth_name) {
264 $fields[
'r_' . $role[
'id']] = $this->ui_factory
270 $this->
lng->txt(
'auth_role_auth_mode')
274 ->withDedicatedName(
'r_' . $role[
'id'])
275 ->withDisabled($disabled_fields);
278 return $this->ui_factory
282 ->standard($this->
ctrl->getFormAction($this,
'updateRegistrationRoleMapping'), $fields)
283 ->withDedicatedName(
'registration_role_mapping');
288 if (!$this->rbac_system->checkAccess(
'write', $this->object->getRefId())) {
289 $this->
ilias->raiseError($this->
lng->txt(
'permission_denied'), $this->ilias->error_obj->MESSAGE);
292 $form = $this->buildRegistrationRoleMappingForm();
295 if ($this->
http->request()->getMethod() ===
'POST') {
296 $form = $form->withRequest($this->
http->request());
297 $form_data = $form->getData();
298 $form_valid = $form_data !==
null;
302 $this->tpl->setOnScreenMessage(
303 $this->tpl::MESSAGE_TYPE_FAILURE,
304 $this->
lng->txt(
'err_wrong_login')
306 $this->authSettingsObject(
null, $form);
311 foreach ($form_data as $role_id => $auth_mode) {
312 $f_object[substr($role_id, 2)] = $auth_mode;
316 $this->tpl->setOnScreenMessage(
317 $this->tpl::MESSAGE_TYPE_SUCCESS,
318 $this->
lng->txt(
'auth_mode_roles_changed'),
321 $this->
ctrl->redirect($this,
'authSettings');
327 if ($det->getCountActiveAuthModes() <= 1) {
331 $disabled_fields = !$this->rbac_system->checkAccess(
'write', $this->
object->getRefId());
333 $automatic_options = [];
335 $auth_sequenced = $det->getAuthModeSequence();
336 foreach ($auth_sequenced as $auth_mode) {
338 switch ($auth_mode) {
345 $text = $this->
lng->txt(
'auth_local');
348 $text = $this->
lng->txt(
'auth_soap');
351 $text = $this->
lng->txt(
'auth_apache');
355 $option = $pl->getMultipleAuthModeOptions($auth_mode);
356 $text = $option[$auth_mode][
'txt'];
361 $automatic_options[
'm' . $auth_mode] = $this->ui_factory
365 ->withDedicatedName(
'm' . $auth_mode)
367 ->withDisabled($disabled_fields);
376 $this->
lng->txt(
'auth_by_user')
379 ->withDisabled($disabled_fields),
385 $this->
lng->txt(
'auth_automatic')
388 ->withDisabled($disabled_fields)
392 self::PROP_AUTH_MODE_KIND => $this->ui_factory
397 $this->
lng->txt(
'auth_kind_determination'),
398 $this->
lng->txt(
'auth_mode_determination_info')
400 ->withDedicatedName(self::PROP_AUTH_MODE_KIND)
401 ->withValue((
string) $det->getKind())
402 ->withDisabled($disabled_fields)
406 return $this->ui_factory
410 ->standard($this->
ctrl->getFormAction($this,
'updateAuthModeDetermination'), $sections)
411 ->withDedicatedName(
'auth_mode_determination')
412 ->withAdditionalTransformation(
413 $this->
refinery->custom()->transformation(
function ($value): array {
417 $sequence = (array) ($value[self::PROP_AUTH_MODE_KIND][1] ?? []);
420 $merged_values = array_merge(
422 self::PROP_AUTH_MODE_KIND => $auth_mode_kind,
425 self::PROP_AUTH_MODE_SEQUENCE => $sequence
429 return $merged_values;
436 if (!$this->rbac_system->checkAccess(
'write', $this->object->getRefId())) {
437 $this->
ilias->raiseError($this->
lng->txt(
'permission_denied'), $this->ilias->error_obj->MESSAGE);
440 $form = $this->buildAuthModeDeterminationForm();
441 if ($form ===
null) {
442 $this->authSettingsObject();
448 if ($this->
http->request()->getMethod() ===
'POST') {
449 $form = $form->withRequest($this->
http->request());
450 $form_data = $form->getData();
451 $form_valid = $form_data !==
null;
455 $this->tpl->setOnScreenMessage(
456 $this->tpl::MESSAGE_TYPE_FAILURE,
457 $this->
lng->txt(
'err_wrong_login')
459 $this->authSettingsObject($form);
464 $kind = (
int) $form_data[self::PROP_AUTH_MODE_KIND];
465 $det->setKind($kind);
467 $sequence = $form_data[self::PROP_AUTH_MODE_SEQUENCE];
468 $this->
logger->debug(
'pos mode:' . print_r($sequence,
true));
469 asort($sequence, SORT_NUMERIC);
470 $this->
logger->debug(
'pos mode:' . print_r($sequence,
true));
473 foreach (array_keys($sequence) as $auth_mode) {
474 $position[
$counter++] = substr($auth_mode, 1);
476 $this->
logger->debug(
'position mode:' . print_r($position,
true));
477 $det->setAuthModeSequence($position);
481 $this->tpl->setOnScreenMessage(
482 $this->tpl::MESSAGE_TYPE_SUCCESS,
483 $this->
lng->txt(
'settings_saved'),
486 $this->
ctrl->redirect($this,
'authSettings');
491 $this->
ctrl->redirect($this,
'authSettings');
496 if (!$this->rbac_system->checkAccess(
'write', $this->object->getRefId())) {
497 $this->
ilias->raiseError($this->
lng->txt(
'permission_denied'), $this->ilias->error_obj->MESSAGE);
499 $this->
logger->debug(
'auth mode available:' . $this->request_wrapper->has(
'auth_mode'));
501 if (!$this->
http->wrapper()->post()->has(
'auth_mode')) {
502 $this->
ilias->raiseError($this->
lng->txt(
'auth_err_no_mode_selected'), $this->ilias->error_obj->MESSAGE);
504 $new_auth_mode = $this->
http->wrapper()->post()->retrieve(
'auth_mode', $this->
refinery->to()->string());
505 $this->
logger->debug(
'auth mode:' . $new_auth_mode);
506 $current_auth_mode = $this->
settings->get(
'auth_mode',
'');
507 if ($new_auth_mode === $current_auth_mode) {
508 $this->tpl->setOnScreenMessage(
510 $this->
lng->txt(
'auth_mode') .
': ' . $this->getAuthModeTitle() .
' ' . $this->lng->txt(
511 'auth_mode_not_changed'
515 $this->
ctrl->redirect($this,
'authSettings');
518 switch ((
int) $new_auth_mode) {
524 if ($this->
object->checkAuthSHIB() !==
true) {
525 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'auth_shib_not_configured'),
true);
527 $this->getReturnLocation(
529 $this->
ctrl->getLinkTargetByClass(
530 ilAuthShibbolethSettingsGUI::class,
542 if ($this->
object->checkAuthScript() !==
true) {
543 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'auth_script_not_configured'),
true);
545 $this->getReturnLocation(
547 $this->
ctrl->getLinkTarget($this,
'editScript',
'',
false,
false)
554 $this->
ilias->setSetting(
'auth_mode', $new_auth_mode);
556 $this->tpl->setOnScreenMessage(
558 $this->
lng->txt(
'auth_default_mode_changed_to') .
' ' . $this->getAuthModeTitle(),
561 $this->
ctrl->redirect($this,
'authSettings');
565 string $submit_action
567 $role_list = $this->rbac_review->getRolesByFilter(2, $this->
object->
getId());
570 foreach ($role_list as $role) {
571 $roles[$role[
'obj_id']] = $role[
'title'];
574 $active = $this->ui_factory
577 ->checkbox($this->
lng->txt(
'active'))
578 ->withValue((
bool) $this->
settings->get(
'soap_auth_active',
''));
584 $this->
lng->txt(
'server'),
585 $this->lng->txt(
'auth_soap_server_desc')
589 ->withValue($this->
settings->get(
'soap_auth_server',
''));
591 $port = $this->ui_factory
595 $this->
lng->txt(
'port'),
596 $this->lng->txt(
'auth_soap_port_desc')
598 ->withAdditionalTransformation($this->
refinery->int()->isGreaterThan(0))
599 ->withAdditionalTransformation(
600 $this->
refinery->int()->isLessThan(65536)
602 ->withValue((
int) $this->
settings->get(
'soap_auth_port',
'0'));
604 $use_https = $this->ui_factory
607 ->checkbox($this->
lng->txt(
'auth_soap_use_https'))
608 ->withValue((
bool) $this->
settings->get(
'soap_auth_use_https',
''));
610 $uri = $this->ui_factory
614 $this->
lng->txt(
'uri'),
615 $this->lng->txt(
'auth_soap_uri_desc')
618 ->withValue($this->
settings->get(
'soap_auth_uri',
''));
624 $this->
lng->txt(
'auth_soap_namespace'),
625 $this->lng->txt(
'auth_soap_namespace_desc')
628 ->withValue($this->
settings->get(
'soap_auth_namespace',
''));
630 $dotnet = $this->ui_factory
633 ->checkbox($this->
lng->txt(
'auth_soap_use_dotnet'))
634 ->withValue((
bool) $this->
settings->get(
'soap_auth_use_dotnet',
''));
636 $createuser = $this->ui_factory
640 $this->
lng->txt(
'auth_create_users'),
641 $this->lng->txt(
'auth_soap_create_users_desc')
643 ->withValue((
bool) $this->
settings->get(
'soap_auth_create_users',
''));
645 $sendmail = $this->ui_factory
649 $this->
lng->txt(
'user_send_new_account_mail'),
650 $this->lng->txt(
'auth_new_account_mail_desc')
652 ->withValue((
bool) $this->
settings->get(
'soap_auth_account_mail',
''));
654 $defaultrole = $this->ui_factory
658 $this->
lng->txt(
'auth_user_default_role'),
660 $this->lng->txt(
'auth_soap_user_default_role_desc')
662 ->withValue($this->
settings->get(
'soap_auth_user_default_role',
'4'))
663 ->withAdditionalTransformation($this->
refinery->int()->isGreaterThan(0));
665 $allowlocal = $this->ui_factory
669 $this->
lng->txt(
'auth_allow_local'),
670 $this->lng->txt(
'auth_soap_allow_local_desc')
672 ->withValue((
bool) $this->
settings->get(
'soap_auth_user_default_role',
''));
674 $form = $this->ui_factory->input()->container()->form()->standard(
680 'use_https' => $use_https,
684 'createuser' => $createuser,
685 'sendmail' => $sendmail,
686 'defaultrole' => $defaultrole,
687 'allowlocal' => $allowlocal
694 string $submit_action
696 $ext_uid = $this->ui_factory->input()->field()->text(
699 $soap_pw = $this->ui_factory->input()->field()->text(
702 $new_user = $this->ui_factory->input()->field()
703 ->checkbox(
'new_user');
704 return $this->ui_factory->input()->container()->form()->standard(
711 )->withSubmitLabel(
'Send');
716 if (!$this->rbac_system->checkAccess(
'read', $this->object->getRefId())) {
717 $this->
ilias->raiseError($this->
lng->txt(
'permission_denied'), $this->ilias->error_obj->MESSAGE);
720 $soap_form = $this->buildSOAPForm($this->
ctrl->getFormAction($this,
'saveSOAP'));
721 $test_form = $this->buildSOAPTestForm($this->
ctrl->getFormAction($this,
'testSoapAuthConnection'));
723 $this->tabs_gui->setTabActive(
'auth_soap');
724 $panel = $this->ui_factory->panel()->standard(
'SOAP', [$soap_form, $test_form]);
725 $this->tpl->setContent($this->ui_renderer->render($panel));
730 if (!$this->rbac_system->checkAccess(
'read', $this->object->getRefId())) {
731 $this->
ilias->raiseError($this->
lng->txt(
'permission_denied'), $this->ilias->error_obj->MESSAGE);
734 $soap_form = $this->buildSOAPForm($this->
ctrl->getFormAction($this,
'saveSOAP'));
735 $test_form = $this->buildSOAPTestForm($this->
ctrl->getFormAction($this,
'testSoapAuthConnection'));
736 $panel_content = [$soap_form, $test_form];
737 if ($this->request->getMethod() ===
'POST') {
738 $test_form = $test_form->withRequest($this->request);
739 $result = $test_form->getData();
740 if ($result !==
null) {
741 $panel_content[] = $this->ui_factory->legacy()->content(
742 ilSOAPAuth::testConnection($result[
'ext_uid'], $result[
'soap_pw'], $result[
'new_user'])
746 $this->tabs_gui->setTabActive(
'auth_soap');
747 $panel = $this->ui_factory->panel()->standard(
'SOAP', $panel_content);
748 $this->tpl->setContent($this->ui_renderer->render($panel));
753 if (!$this->rbac_system->checkAccess(
'write', $this->object->getRefId())) {
754 $this->
ilias->raiseError($this->
lng->txt(
'permission_denied'), $this->ilias->error_obj->MESSAGE);
757 $soap_form = $this->buildSOAPForm($this->
ctrl->getFormAction($this,
'saveSOAP'));
758 $test_form = $this->buildSOAPTestForm($this->
ctrl->getFormAction($this,
'testSoapAuthConnection'));
759 if ($this->request->getMethod() ===
'POST') {
760 $soap_form = $soap_form->withRequest($this->request);
761 $result = $soap_form->getData();
762 if ($result !==
null) {
763 $this->
settings->set(
'soap_auth_active', (
string) $result[
'active']);
764 $this->
settings->set(
'soap_auth_server', $result[
'server']);
765 $this->
settings->set(
'soap_auth_port', (
string) $result[
'port']);
766 $this->
settings->set(
'soap_auth_use_https', (
string) $result[
'use_https']);
767 $this->
settings->set(
'soap_auth_uri', $result[
'uri']);
768 $this->
settings->set(
'soap_auth_namespace', $result[
'namespace']);
769 $this->
settings->set(
'soap_auth_use_dotnet', (
string) $result[
'dotnet']);
770 $this->
settings->set(
'soap_auth_create_users', (
string) $result[
'createuser']);
771 $this->
settings->set(
'soap_auth_account_mail', (
string) $result[
'sendmail']);
772 $this->
settings->set(
'soap_auth_user_default_role', (
string) $result[
'defaultrole']);
773 $this->
settings->set(
'soap_auth_allow_local', (
string) $result[
'allowlocal']);
775 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'auth_soap_settings_saved'),
true);
776 $this->
logger->info(
'data' . print_r($result,
true));
777 $this->
ctrl->redirect($this,
'editSOAP');
781 $this->tabs_gui->setTabActive(
'auth_soap');
782 $panel = $this->ui_factory->panel()->standard(
'SOAP', [$soap_form, $test_form]);
783 $this->tpl->setContent($this->ui_renderer->render($panel));
788 if (!$this->rbac_system->checkAccess(
'write', $this->object->getRefId())) {
789 $this->
ilias->raiseError($this->
lng->txt(
'permission_denied'), $this->ilias->error_obj->MESSAGE);
792 if ($_SESSION[
'error_post_vars']) {
793 $this->tpl->setVariable(
'AUTH_SCRIPT_NAME', $_SESSION[
'error_post_vars'][
'auth_script'][
'name']);
795 $settings = $this->
ilias->getAllSettings();
797 $this->tpl->setVariable(
'AUTH_SCRIPT_NAME', $settings[
'auth_script_name']);
800 $this->tabs_gui->setTabActive(
'auth_script');
802 $this->tpl->addBlockFile(
805 'tpl.auth_script.html',
806 'components/ILIAS/Authentication'
809 $this->tpl->setVariable(
'FORMACTION', $this->
ctrl->getFormAction($this));
810 $this->tpl->setVariable(
'COLSPAN', 3);
811 $this->tpl->setVariable(
'TXT_AUTH_SCRIPT_TITLE', $this->
lng->txt(
'auth_script_configure'));
812 $this->tpl->setVariable(
'TXT_OPTIONS', $this->
lng->txt(
'options'));
813 $this->tpl->setVariable(
'TXT_AUTH_SCRIPT_NAME', $this->
lng->txt(
'auth_script_name'));
815 $this->tpl->setVariable(
'TXT_REQUIRED_FLD', $this->
lng->txt(
'required_field'));
816 $this->tpl->setVariable(
'TXT_CANCEL', $this->
lng->txt(
'cancel'));
817 $this->tpl->setVariable(
'TXT_SUBMIT', $this->
lng->txt(
'save'));
818 $this->tpl->setVariable(
'CMD_SUBMIT',
'saveScript');
823 if (!
$_POST[
'auth_script'][
'name']) {
824 $this->
ilias->raiseError($this->
lng->txt(
'fill_out_all_required_fields'), $this->ilias->error_obj->MESSAGE);
827 $this->
ilias->setSetting(
'auth_script_name',
$_POST[
'auth_script'][
'name']);
830 $this->tpl->setOnScreenMessage(
832 $this->
lng->txt(
'auth_mode_changed_to') .
' ' . $this->getAuthModeTitle(),
835 $this->
ctrl->redirect($this,
'editScript');
840 return match ((
int) $this->
ilias->getSetting(
'auth_mode')) {
842 ilAuthUtils::AUTH_LDAP => $this->
lng->txt(
'auth_ldap'),
843 ilAuthUtils::AUTH_SHIBBOLETH => $this->
lng->txt(
'auth_shib'),
844 ilAuthUtils::AUTH_SAML => $this->
lng->txt(
'auth_saml'),
846 ilAuthUtils::AUTH_APACHE => $this->
lng->txt(
'auth_apache'),
847 default => $this->
lng->txt(
'unknown'),
853 $next_class = $this->
ctrl->getNextClass($this) ??
'';
854 $cmd = $this->
ctrl->getCmd() ??
'';
855 $this->prepareOutput();
857 if (!$this->rbac_system->checkAccess(
'read', $this->object->getRefId())) {
858 $this->
error->raiseError($this->
lng->txt(
'msg_no_perm_read'), $this->error->WARNING);
861 switch ($next_class) {
862 case 'ilopenidconnectsettingsgui':
863 $this->tabs_gui->activateTab(
'auth_oidconnect');
866 $this->
ctrl->forwardCommand($oid);
869 case 'ilsamlsettingsgui':
870 $this->tabs_gui->setTabActive(
'auth_saml');
873 $this->
ctrl->forwardCommand($os);
876 case 'ilregistrationsettingsgui':
877 $this->tabs_gui->setTabActive(
'registration_settings');
880 $this->
ctrl->forwardCommand($registration_gui);
883 case 'ilpermissiongui':
884 $this->tabs_gui->setTabActive(
'perm_settings');
887 $this->
ctrl->forwardCommand($perm_gui);
890 case 'illdapsettingsgui':
891 $this->tabs_gui->setTabActive(
'auth_ldap');
894 $this->
ctrl->forwardCommand($ldap_settings_gui);
897 case 'ilauthshibbolethsettingsgui':
898 $this->tabs_gui->setTabActive(
'auth_shib');
901 $this->
ctrl->forwardCommand($shib_settings_gui);
904 case strtolower(ilAuthPageEditorGUI::class):
905 $this->setSubTabs(
'authSettings');
906 $this->tabs_gui->setTabActive(
'authentication_settings');
907 $this->tabs_gui->setSubTabActive(
'auth_login_editor');
910 $this->
ctrl->forwardCommand($lpe);
913 case strtolower(ilObjectContentStyleSettingsGUI::class):
914 $this->checkPermission(
'write');
915 $this->setTitleAndDescription();
916 $this->setSubTabs(
'authSettings');
917 $this->tabs_gui->activateTab(
'authentication_settings');
918 $this->tabs_gui->activateSubTab(
'style');
920 $settings_gui = $this->content_style_gui
921 ->objectSettingsGUIForRefId(
925 $this->
ctrl->forwardCommand($settings_gui);
928 case strtolower(ilAuthLogoutBehaviourGUI::class):
929 $this->setSubTabs(
'authSettings');
930 $this->tabs_gui->setTabActive(
'authentication_settings');
931 $this->tabs_gui->setSubTabActive(
'logout_behaviour');
934 $this->
ctrl->forwardCommand($gui);
939 $cmd =
'authSettings';
955 $this->
ctrl->setParameter($this,
'ref_id', $this->
object->getRefId());
957 if ($this->rbac_system->checkAccess(
'read', $this->object->getRefId())) {
958 $this->tabs_gui->addTarget(
959 'authentication_settings',
960 $this->
ctrl->getLinkTarget($this,
'authSettings'),
966 $this->tabs_gui->addTarget(
967 'registration_settings',
968 $this->
ctrl->getLinkTargetByClass(
'ilregistrationsettingsgui',
'view')
971 $this->tabs_gui->addTarget(
973 $this->
ctrl->getLinkTargetByClass(
'illdapsettingsgui',
'serverList'),
979 $this->tabs_gui->addTarget(
981 $this->
ctrl->getLinkTargetByClass(
'ilauthshibbolethsettingsgui',
'settings')
984 $this->tabs_gui->addTarget(
986 $this->
ctrl->getLinkTarget($this,
'editSOAP'),
992 $this->tabs_gui->addTarget(
993 'apache_auth_settings',
994 $this->
ctrl->getLinkTarget($this, self::CMD_SHOW_APACHE_SETTINGS),
1000 $this->tabs_gui->addTarget(
1008 $this->tabs_gui->addTab(
1010 $this->
lng->txt(
'auth_oidconnect'),
1011 $this->ctrl->getLinkTargetByClass(
'ilopenidconnectsettingsgui')
1015 if ($this->rbac_system->checkAccess(
'edit_permission', $this->object->getRefId())) {
1016 $this->tabs_gui->addTarget(
1018 $this->
ctrl->getLinkTargetByClass([get_class($this),
'ilpermissiongui'],
'perm'),
1019 [
'perm',
'info',
'owner'],
1027 $this->
lng->loadLanguageModule(
'auth');
1029 if ($a_tab ===
'authSettings' && $this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
1030 $this->tabs_gui->addSubTabTarget(
1032 $this->
ctrl->getLinkTarget($this,
'authSettings'),
1036 foreach (AuthPageEditorContext::cases() as $auth_ipe_context) {
1037 $this->
ctrl->setParameterByClass(
1038 ilAuthPageEditorGUI::class,
1040 $auth_ipe_context->value
1042 $this->tabs_gui->addSubTabTarget(
1043 $auth_ipe_context->tabIdentifier(),
1044 $this->ctrl->getLinkTargetByClass(
1045 ilAuthPageEditorGUI::class,
1049 $this->
ctrl->setParameterByClass(
1050 ilAuthPageEditorGUI::class,
1056 $this->tabs_gui->addSubTabTarget(
1058 $this->
ctrl->getLinkTargetByClass(ilAuthLogoutBehaviourGUI::class,
''),
1062 $this->tabs_gui->addSubTab(
1064 $this->
lng->txt(
'cont_style'),
1065 $this->ctrl->getLinkTargetByClass(ilObjectContentStyleSettingsGUI::class)
1072 $this->tabs_gui->setTabActive(
'apache_auth_settings');
1075 $settings =
new ilSetting(
'apache_auth');
1076 $settingsMap = $settings->getAll();
1079 if (file_exists(
$path) && is_readable(
$path)) {
1080 $settingsMap[
'apache_auth_domains'] = file_get_contents(
$path);
1086 self::CMD_SHOW_APACHE_SETTINGS,
1087 self::CMD_SAVE_APACHE_SETTINGS,
1093 $this->tpl->setContent($this->ui_renderer->render([
1094 $this->ui_factory->item()->standard($this->lng->txt(
'apache_settings')),
1104 self::CMD_SHOW_APACHE_SETTINGS,
1105 self::CMD_SAVE_APACHE_SETTINGS
1106 ))->buildForm()->withRequest($this->
http->request());
1107 if (!$form->getError()) {
1108 $data = $form->getData();
1110 $settings =
new ilSetting(
'apache_auth');
1113 'apache_auth_indicator_name',
1114 'apache_auth_indicator_value',
1115 'apache_enable_auth',
1116 'apache_enable_local',
1117 'apache_local_autocreate',
1118 'apache_enable_ldap',
1119 'apache_auth_username_config_type',
1120 'apache_auth_username_direct_mapping_fieldname',
1121 'apache_default_role',
1122 'apache_auth_target_override_login_page',
1123 'apache_auth_enable_override_login_page',
1124 'apache_auth_authenticate_on_login_page',
1128 foreach ($fields as $field) {
1129 $value = match ($field) {
1130 'apache_enable_auth',
1131 'apache_auth_enable_override_login_page',
1132 'apache_auth_username_config',
1133 'apache_auth_security',
1134 'apache_enable_ldap' => (bool) (
$data[$field] ??
false),
1135 'apache_auth_username_config_type' =>
$data[
'apache_auth_username_config'][$field][0] ?? 1,
1136 'apache_auth_target_override_login_page' =>
$data[
'apache_auth_enable_override_login_page'][$field] ??
'',
1137 'apache_auth_username_direct_mapping_fieldname' =>
$data[
'apache_auth_username_config'][
'apache_auth_username_config_type'][1][$field] ??
'',
1138 'apache_auth_domains' =>
$data[
'apache_auth_security'][$field] ??
'',
1139 'apache_local_autocreate' => (bool) (
$data[
'apache_enable_auth'][$field] ??
false),
1140 'apache_default_role' =>
$data[
'apache_enable_auth'][
'apache_local_autocreate'][$field] ?? 4,
1141 'apache_ldap_sid' =>
$data[
'apache_enable_ldap'][$field] ??
'',
1142 default =>
$data[$field],
1151 if (
$data[$field] ??
false) {
1152 $this->
ilias->setSetting(
'apache_active',
'1');
1154 $this->
ilias->setSetting(
'apache_active',
'0');
1160 $allowed_domains = $this->validateApacheAuthAllowedDomains(
$data[
'apache_auth_security'][
'apache_auth_domains'] ??
'');
1163 $this->tpl->setOnScreenMessage(
1164 $this->tpl::MESSAGE_TYPE_SUCCESS,
1165 $this->
lng->txt(
'apache_settings_changed_success'),
1168 $this->
ctrl->redirect($this, self::CMD_SHOW_APACHE_SETTINGS);
1171 $this->
ctrl->redirect($this, self::CMD_SHOW_APACHE_SETTINGS);
1176 return implode(
"\n", preg_split(
"/[\r\n]+/",
$text));
1182 $this->
ctrl->redirect($registration_gui);
Facade for consumer gui interface.
@ilCtrl_isCalledBy ilAuthLogoutBehaviourGUI: ilObjAuthSettingsGUI @ilCtrl_Calls ilAuthLogoutBehaviour...
@ilCtrl_isCalledBy ilAuthPageEditorGUI: ilObjAuthSettingsGUI @ilCtrl_Calls ilAuthPageEditorGUI: ilLog...
final const string CONTEXT_HTTP_PARAM
final const string DEFAULT_COMMAND
Class ilAuthShibbolethSettingsGUI.
const int AUTH_SHIBBOLETH
static _getActiveAuthModes()
const int AUTH_OPENID_CONNECT
static _getAllAuthModes()
static _getAuthModeName($a_auth_key)
static getInstanceByServerId(int $a_server_id)
Get instance by server id.
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.
Component logger with individual log levels by component id.
@ilCtrl_Calls ilObjAuthSettingsGUI: ilPermissionGUI, ilRegistrationSettingsGUI, ilLDAPSettingsGUI @il...
getAdminTabs()
administration tabs show only permissions and trash folder
GUIService $content_style_gui
const string CMD_SHOW_APACHE_SETTINGS
validateApacheAuthAllowedDomains(string $text)
buildAuthModeDeterminationForm()
updateAuthModeDeterminationObject()
buildSOAPTestForm(string $submit_action)
registrationSettingsObject()
apacheAuthSettingsObject(?StandardForm $form=null)
saveApacheSettingsObject()
const string CMD_SAVE_APACHE_SETTINGS
const string PROP_AUTH_MODE_KIND
const string PROP_AUTH_MODE_SEQUENCE
__construct($a_data, int $a_id, bool $a_call_by_reference, bool $a_prepare_output=true)
buildRegistrationRoleMappingForm()
cancelObject()
cancel action and go back to previous page
viewObject()
viewObject container presentation for "administration -> repository, trash, permissions"
testSoapAuthConnectionObject()
setSubTabs(string $a_tab)
getTabs()
@abstract overwrite in derived GUI class of your object type
buildSOAPForm(string $submit_action)
updateRegistrationRoleMappingObject()
authSettingsObject(?ILIAS\UI\Component\Input\Container\Form\Form $auth_mode_determination_form=null, ?ILIAS\UI\Component\Input\Container\Form\Form $registration_role_mapping_form=null)
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.
Class ilRegistrationSettingsGUI.
static getIdpIdByAuthMode(string $a_auth_mode)
static isAuthModeSaml(string $a_auth_mode)
static getInstanceByIdpId(int $a_idp_id)
special template class to simplify handling of ITX/PEAR
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
static redirect(string $a_script)
if($err=$client->getError()) $namespace
static http()
Fetches the global http state from ILIAS.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.
Class ilObjForumAdministration.
if(!file_exists('../ilias.ini.php'))