19 declare(strict_types=1);
63 ServerRequestInterface $httpRequest = null
69 $this->
user = $user ?? $DIC->user();
70 $this->
mainTemplate = $mainTemplate ?? $DIC->ui()->mainTemplate();
71 $this->httpRequest = $httpRequest ?? $DIC->http()->request();
72 $this->
ctrl = $DIC->ctrl();
73 $this->
lng = $DIC->language();
74 $this->
lng->loadLanguageModule(
'auth');
76 $this->authSession = $DIC[
'ilAuthSession'];
77 $this->eventHandler = $DIC->event();
78 $this->setting = $DIC->settings();
79 $this->
access = $DIC->access();
80 $this->
help = $DIC->help();
81 $this->
http = $DIC->http();
83 $this->ui_factory = $DIC->ui()->factory();
84 $this->ui_renderer = $DIC->ui()->renderer();
86 $this->
ctrl->saveParameter($this, [
'rep_ref_id',
'lang',
'target',
'client_id']);
87 $this->
user->setLanguage($this->
lng->getLangKey());
88 $this->
help->setScreenIdComponent(
'init');
93 return $this->
refinery->custom()->transformation(
static function (array $values): array {
94 return array_merge(...$values);
100 return $this->
refinery->custom()->transformation(
static function (array $values): array {
101 $processed_values = array_merge(
103 isset($values[self::PROP_PASSWORD]) ? [self::PROP_PASSWORD => $values[self::PROP_PASSWORD]] : []
106 return $processed_values;
112 return $this->
http->wrapper()->query()->retrieve(
114 $this->
refinery->byTrying([$this->refinery->kindlyTo()->string(), $this->
refinery->always(
'')])
128 'doStandardAuthentication',
134 $cmd = $this->
ctrl->getCmd(
'processIndexPHP');
135 $next_class = $this->
ctrl->getNextClass($this) ??
'';
137 switch (strtolower($next_class)) {
138 case strtolower(ilLoginPageGUI::class):
141 case strtolower(ilAccountRegistrationGUI::class):
145 case strtolower(ilPasswordAssistanceGUI::class):
149 case strtolower(ilAccessibilityControlConceptGUI::class):
154 if (method_exists($this, $cmd)) {
173 $this->
ctrl->setCmdClass(ilAccountRegistrationGUI::class);
174 $this->
ctrl->setCmd(
'');
180 $this->
ctrl->setCmdClass(ilPasswordAssistanceGUI::class);
181 $this->
ctrl->setCmd(
'');
190 $force_login =
false;
191 $request_cmd = $this->
http->wrapper()->query()->retrieve(
194 $this->refinery->kindlyTo()->string(),
198 if ($request_cmd ===
'force_login') {
203 $this->
logger->debug(
'Force login');
204 if ($auth_session->isValid()) {
206 $this->
logger->debug(
'Valid session -> logout current user');
208 $auth_session->logout();
210 $ilAppEventHandler->raise(
211 'Services/Authentication',
214 'username' => $this->
user->getLogin(),
215 'is_explicit_logout' =>
false,
219 $this->
logger->debug(
'Show login page');
221 foreach (
$messages as $type => $content) {
222 $this->
mainTemplate->setOnScreenMessage($type, $content);
230 if ($auth_session->isValid()) {
231 $this->
logger->debug(
'Valid session -> redirect to starting page');
236 $this->
logger->debug(
'No valid session -> show login');
244 $this->
help->setSubScreenId(
'login');
246 $this->
getLogger()->debug(
'Showing login page');
248 $extUid = $this->
http->wrapper()->query()->retrieve(
250 $this->
refinery->byTrying([$this->refinery->kindlyTo()->string(), $this->
refinery->always(
'')])
252 $soapPw = $this->
http->wrapper()->query()->retrieve(
254 $this->
refinery->byTrying([$this->refinery->kindlyTo()->string(), $this->
refinery->always(
'')])
261 $credentials->setUsername($extUid);
262 $credentials->setPassword($soapPw);
263 $credentials->tryAuthenticationOnLoginPage();
266 $frontend->tryAuthenticationOnLoginPage();
268 $tpl = self::initStartUpTemplate(
'tpl.login.html');
275 $page_editor_html = $this->
showLoginForm($page_editor_html, $form);
284 if ($this->authSession->isExpired() || $this->
http->wrapper()->query()->has(
'session_expired')) {
285 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt(
'auth_err_expired'));
286 } elseif ($this->
http->wrapper()->query()->has(
'reg_confirmation_msg')) {
287 $this->
lng->loadLanguageModule(
'registration');
288 $message_key = $this->
http->wrapper()->query()->retrieve(
289 'reg_confirmation_msg',
290 $this->
refinery->kindlyTo()->string()
292 $message_type = $message_key ===
'reg_account_confirmation_successful' ?
296 $this->
lng->txt($message_key)
299 if ($page_editor_html !==
'') {
300 $tpl->setVariable(
'LPE', $page_editor_html);
303 if ($this->authSession->isExpired()) {
306 $this->dic->user()->setId($this->authSession->getUserId());
307 $this->dic->user()->read();
310 self::printToGlobalTemplate($tpl);
320 $gtpl->setContent($tpl->get());
321 $gtpl->printToStdout(
'DEFAULT',
false,
true);
337 foreach ($message_types as $message_type) {
347 string $username = null,
350 $this->
help->setSubScreenId(
'code_input');
352 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt(
'time_limit_reached'));
354 $tpl = self::initStartUpTemplate(
'tpl.login_reactivate_code.html');
355 $tpl->setVariable(
'FORM', $this->ui_renderer->render($form ?? $this->buildCodeForm($username)));
356 self::printToGlobalTemplate($tpl);
361 $this->
lng->loadLanguageModule(
'auth');
363 $field_factory = $this->ui_factory->input()->field();
365 $username_field = $field_factory
367 ->withRequired(
true);
368 if ($username !== null) {
369 $username_field = $username_field->withValue($username);
372 return $this->ui_factory->input()
376 $this->
ctrl->getFormAction($this,
'processCode'),
378 $field_factory->section(
380 self::PROP_CODE => $field_factory
382 $this->
lng->txt(
'auth_account_code'),
383 $this->
lng->txt(
'auth_account_code_info')
385 ->withRequired(
true),
387 self::PROP_USERNAME => $username_field,
389 $this->
lng->txt(
'auth_account_code_title'),
393 ->withSubmitLabel($this->
lng->txt(
'send'))
403 if ($this->
http->request()->getMethod() ===
'POST') {
404 $form = $form->withRequest($this->
http->request());
405 $form_data = $form->getData();
406 $form_valid = $form_data !== null;
411 $code = $form_data[self::PROP_CODE];
412 $uname = $form_data[self::PROP_USERNAME];
419 $invalid_code =
false;
421 if ($valid_until ===
'0') {
424 if (is_numeric($valid_until)) {
425 $valid_until = strtotime(
'+' . $valid_until .
'days');
427 $valid_until = explode(
'-', $valid_until);
428 $valid_until = mktime(
432 (
int) $valid_until[1],
433 (
int) $valid_until[2],
434 (
int) $valid_until[0]
436 if ($valid_until < time()) {
437 $invalid_code =
true;
441 if (!$invalid_code) {
447 if (!$invalid_code) {
457 $this->
ctrl->setParameter($this,
'cu', 1);
458 $this->
lng->loadLanguageModule(
'auth');
464 $this->
ctrl->redirect($this,
'showLoginPage');
468 $this->
lng->loadLanguageModule(
'user');
469 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt(
'user_account_code_not_valid'));
471 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt(
'form_input_not_valid'));
479 $field_factory = $this->ui_factory->input()->field();
484 $auth_mode = $field_factory->radio($this->
lng->txt(
'auth_selection'))->withRequired(
true);
485 $visible_auth_methods = [];
487 if (isset($option[
'hide_in_ui']) && $option[
'hide_in_ui']) {
491 $auth_mode = $auth_mode->withOption((
string) $key, $option[
'txt']);
493 if (isset($option[
'checked'])) {
494 $auth_mode = $auth_mode->withValue($key);
496 $visible_auth_methods[] =
$key;
499 if (count($visible_auth_methods) === 1) {
500 $auth_mode = $field_factory->hidden()->withRequired(
true)->withValue(current($visible_auth_methods));
503 $fields[self::PROP_AUTH_MODE] = $auth_mode;
507 self::PROP_USERNAME => $field_factory
508 ->text($this->
lng->txt(
'username'))
511 $this->
refinery->custom()->constraint(
512 static function (
string $value):
bool {
513 return $value !==
'';
515 static function (
Closure $lng,
string $value):
string {
516 return $lng(
'auth_required_username');
520 self::PROP_PASSWORD => $field_factory
521 ->password($this->
lng->txt(
'password'))
522 ->withRevelation(
true)
525 $this->
refinery->custom()->constraint(
526 static function (
string $value):
bool {
527 return $value !==
'';
529 static function (
Closure $lng,
string $value):
string {
530 return $lng(
'auth_required_password');
534 ->withAdditionalTransformation(
535 $this->
refinery->custom()->transformation(
536 static function (
ILIAS\Data\Password $value):
string {
537 return $value->toString();
543 $sections = [$field_factory->section($fields, $this->
lng->txt(
'login_to_ilias_via_login_form'))];
545 return $this->ui_factory->input()
548 ->standard($this->
ctrl->getFormAction($this,
'doStandardAuthentication'), $sections)
549 ->withDedicatedName(
'login_form')
550 ->withSubmitLabel($this->
lng->txt(
'log_in'))
557 $this->
getLogger()->debug(
'Trying shibboleth authentication');
560 $credentials->initFromRequest();
569 $frontend = $frontend_factory->getFrontend(
575 $frontend->authenticate();
577 switch ($status->getStatus()) {
579 $this->
logger->debug(
'Authentication successful; Redirecting to starting page.');
584 $this->
ctrl->redirect($this,
'showAccountMigration');
588 $this->
mainTemplate->setOnScreenMessage(
'failure', $status->getTranslatedReason(),
true);
589 $this->
ctrl->redirect($this,
'showLoginPage');
592 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_wrong_login'));
598 $this->
getLogger()->debug(
'Trying cas authentication');
608 $frontend = $frontend_factory->getFrontend(
614 $frontend->authenticate();
616 switch ($status->getStatus()) {
618 $this->
getLogger()->debug(
'Authentication successful.');
624 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt($status->getReason()));
631 $this->
getLogger()->debug(
'Trying lti authentication');
634 $credentials->initFromRequest();
643 $frontend = $frontend_factory->getFrontend(
649 $frontend->authenticate();
651 switch ($status->getStatus()) {
658 $this->
ctrl->redirect($this,
'showAccountMigration');
662 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt($status->getReason()),
true);
663 $this->
ctrl->redirect($this,
'showLoginPage');
666 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_wrong_login'));
672 $this->
getLogger()->debug(
'Trying apache authentication');
675 $credentials->initFromRequest();
682 $frontend_factory = new \ilAuthFrontendFactory();
684 $frontend = $frontend_factory->getFrontend(
690 $frontend->authenticate();
692 switch ($status->getStatus()) {
694 if ($credentials->hasValidTargetUrl()) {
697 'Authentication successful. Redirecting to starting page: %s',
698 $credentials->getTargetUrl()
701 $this->
ctrl->redirectToURL($credentials->getTargetUrl());
704 'Authentication successful, but no valid target URL given. Redirecting to default starting page.' 710 $this->
ctrl->redirect($this,
'showAccountMigration');
714 $this->
mainTemplate->setOnScreenMessage(
'failure', $status->getTranslatedReason(),
true);
715 $this->
ctrl->redirectToURL(
717 $this->
ctrl->getLinkTarget($this,
'showLoginPage',
'',
false,
false),
723 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_wrong_login'));
732 if ($this->
http->request()->getMethod() ===
'POST') {
733 $form = $form->withRequest($this->
http->request());
734 $form_data = $form->getData();
735 $form_valid = $form_data !== null;
743 $this->
getLogger()->debug(
'Trying to authenticate user.');
745 $auth_callback =
function () use ($form_data) {
747 $credentials->setUsername($form_data[self::PROP_USERNAME]);
748 $credentials->setPassword($form_data[self::PROP_PASSWORD]);
752 $credentials->setAuthMode($form_data[self::PROP_AUTH_MODE]);
756 $providers = $provider_factory->getProviders($credentials);
762 $frontend = $frontend_factory->getFrontend(
768 $frontend->authenticate();
773 if (($auth_duration = $this->setting->get(
'auth_duration')) !== null) {
774 $duration = $this->
http->durations()->callbackDuration((
int) $auth_duration);
775 $status =
$duration->stretch($auth_callback);
777 $status = $auth_callback();
780 switch ($status->getStatus()) {
783 'Authentication successful; Redirecting to starting page.' 794 $this->
ctrl->redirect($this,
'showAccountMigration');
798 $this->
mainTemplate->setOnScreenMessage(
'failure', $status->getTranslatedReason());
804 string $page_editor_html,
812 $this->ui_renderer->render($form ?? $this->buildStandardLoginForm()),
820 if ($page_editor_html !==
'') {
821 return $page_editor_html;
824 $loginSettings =
new ilSetting(
'login_settings');
825 $information = trim($loginSettings->get(
'login_message_' . $this->lng->getLangKey()) ??
'');
827 if ($information !==
'') {
828 $tpl->
setVariable(
'TXT_LOGIN_INFORMATION', $information);
831 return $page_editor_html;
836 if ($this->setting->get(
'cas_active')) {
837 $tpl =
new ilTemplate(
'tpl.login_form_cas.html',
true,
true,
'Services/Init');
838 $tpl->setVariable(
'TXT_CAS_LOGIN', $this->
lng->txt(
'login_to_ilias_via_cas'));
840 $tpl->setVariable(
'TXT_CAS_LOGIN_INSTRUCTIONS', $this->setting->get(
'cas_login_instructions'));
841 $this->
ctrl->setParameter($this,
'forceCASLogin',
'1');
842 $tpl->setVariable(
'TARGET_CAS_LOGIN', $this->
ctrl->getLinkTarget($this,
'doCasAuthentication'));
843 $this->
ctrl->setParameter($this,
'forceCASLogin',
'');
849 '[list-cas-login-form]',
854 return $page_editor_html;
861 if ($this->setting->get(
'shib_active')) {
862 $tpl =
new ilTemplate(
'tpl.login_form_shibboleth.html',
true,
true,
'Services/Init');
868 $federation_name = $this->setting->get(
'shib_federation_name');
869 $admin_mail =
' <a href="mailto:' . $this->setting->get(
'admin_email') .
'">ILIAS ' . $this->
lng->txt(
872 if ($this->setting->get(
'shib_hos_type') ===
'external_wayf') {
873 $tpl->setCurrentBlock(
'shibboleth_login');
874 $tpl->setVariable(
'TXT_SHIB_LOGIN', $this->
lng->txt(
'login_to_ilias_via_shibboleth'));
875 $tpl->setVariable(
'IL_TARGET', $target);
876 $tpl->setVariable(
'TXT_SHIB_FEDERATION_NAME', $this->setting->get(
'shib_federation_name'));
877 $tpl->setVariable(
'TXT_SHIB_LOGIN_BUTTON', $this->setting->get(
'shib_login_button'));
879 'TXT_SHIB_LOGIN_INSTRUCTIONS',
881 $this->
lng->txt(
'shib_general_login_instructions'),
886 $tpl->setVariable(
'TXT_SHIB_CUSTOM_LOGIN_INSTRUCTIONS', $this->setting->get(
'shib_login_instructions'));
887 $tpl->parseCurrentBlock();
888 } elseif ($this->setting->get(
'shib_hos_type') ==
'embedded_wayf') {
889 $tpl->setCurrentBlock(
'shibboleth_custom_login');
890 $customInstructions = stripslashes($this->setting->get(
'shib_login_instructions'));
891 $tpl->setVariable(
'TXT_SHIB_CUSTOM_LOGIN_INSTRUCTIONS', $customInstructions);
892 $tpl->parseCurrentBlock();
894 $tpl->setCurrentBlock(
'shibboleth_wayf_login');
895 $tpl->setVariable(
'TXT_SHIB_LOGIN', $this->
lng->txt(
'login_to_ilias_via_shibboleth'));
896 $tpl->setVariable(
'TXT_SHIB_FEDERATION_NAME', $this->setting->get(
'shib_federation_name'));
898 'TXT_SELECT_HOME_ORGANIZATION',
900 $this->
lng->txt(
'shib_select_home_organization'),
901 $this->setting->get(
'shib_federation_name')
904 $tpl->setVariable(
'TXT_CONTINUE', $this->
lng->txt(
'btn_next'));
905 $tpl->setVariable(
'TXT_SHIB_HOME_ORGANIZATION', $this->
lng->txt(
'shib_home_organization'));
907 'TXT_SHIB_LOGIN_INSTRUCTIONS',
909 $this->
lng->txt(
'shib_general_wayf_login_instructions'),
913 $tpl->setVariable(
'TXT_SHIB_CUSTOM_LOGIN_INSTRUCTIONS', $this->setting->get(
'shib_login_instructions'));
917 $tpl->setVariable(
'TXT_SHIB_INVALID_SELECTION', $ilShibbolethWAYF->showNotice());
918 $tpl->setVariable(
'SHIB_IDP_LIST', $ilShibbolethWAYF->generateSelection());
919 $tpl->setVariable(
'ILW_TARGET', $target);
920 $tpl->parseCurrentBlock();
927 '[list-shibboleth-login-form]',
932 return $page_editor_html;
940 string $page_editor_html,
941 string $element_html,
943 string $fallback_tplvar
945 if ($page_editor_html ===
'') {
946 $tpl->setVariable($fallback_tplvar, $element_html);
947 return $page_editor_html;
950 if (stripos($page_editor_html, $placeholder) ===
false) {
951 $tpl->setVariable($fallback_tplvar, $element_html);
952 return $page_editor_html;
955 return str_replace($placeholder, $element_html, $page_editor_html);
961 $active_lang = $lpe->getIliasEditorLanguage($this->
lng->getLangKey());
975 $page_gui->setStyleId(0);
977 $page_gui->setPresentationTitle(
'');
978 $page_gui->setTemplateOutput(
false);
979 $page_gui->setHeader(
'');
980 $ret = $page_gui->showPage();
989 $rtpl =
new ilTemplate(
'tpl.login_registration_links.html',
true,
true,
'Services/Init');
993 $rtpl->setCurrentBlock(
'new_registration');
994 $rtpl->setVariable(
'REGISTER', $this->
lng->txt(
'registration'));
997 $this->
ctrl->getLinkTargetByClass(ilAccountRegistrationGUI::class)
999 $rtpl->parseCurrentBlock();
1002 if ($this->setting->get(
'password_assistance')) {
1003 $rtpl->setCurrentBlock(
'password_assistance');
1004 $rtpl->setVariable(
'FORGOT_PASSWORD', $this->
lng->txt(
'forgot_password'));
1005 $rtpl->setVariable(
'FORGOT_USERNAME', $this->
lng->txt(
'forgot_username'));
1007 'CMD_FORGOT_PASSWORD',
1008 $this->
ctrl->getLinkTargetByClass(ilPasswordAssistanceGUI::class)
1011 'CMD_FORGOT_USERNAME',
1012 $this->
ctrl->getLinkTargetByClass(ilPasswordAssistanceGUI::class,
'showUsernameAssistanceForm')
1014 $rtpl->setVariable(
'LANG_ID', $this->
lng->getLangKey());
1015 $rtpl->parseCurrentBlock();
1020 $rtpl->setCurrentBlock(
'homelink');
1023 '?client_id=' .
CLIENT_ID .
'&lang=' . $this->
lng->getLangKey()
1025 $rtpl->setVariable(
'TXT_HOME', $this->
lng->txt(
'home'));
1026 $rtpl->parseCurrentBlock();
1033 '[list-registration-link]',
1034 'REG_PWD_CLIENT_LINKS' 1043 if (0 === $this->
user->getId()) {
1050 $DIC[
'legalDocuments']->loginPageHTML(TermsOfService::ID),
1051 '[list-user-agreement]',
1057 $DIC[
'legalDocuments']->loginPageHTML(DataProtection::ID),
1058 '[list-dpro-agreement]',
1062 return $page_editor_html;
1069 '[list-language-selection]',
1070 '[list-registration-link]',
1071 '[list-user-agreement]',
1072 '[list-dpro-agreement]',
1073 '[list-login-form]',
1074 '[list-cas-login-form]',
1075 '[list-saml-login]',
1076 '[list-shibboleth-login-form]',
1077 '[list-openid-connect-login]' 1086 $field_factory = $this->ui_factory->input()->field();
1088 $keep = $field_factory->group(
1090 self::PROP_USERNAME => $field_factory->text($this->lng->txt(
'login'))->withRequired(
true),
1091 self::PROP_PASSWORD => $field_factory
1092 ->password($this->
lng->txt(
'password'))
1093 ->withRequired(
true)
1094 ->withRevelation(
true)
1095 ->withAdditionalTransformation(
1096 $this->
refinery->custom()->transformation(
1097 static function (
ILIAS\Data\Password $value):
string {
1098 return $value->toString();
1103 $this->
lng->txt(
'auth_account_migration_keep'),
1104 $this->
lng->txt(
'auth_info_migrate')
1107 $new = $field_factory->group(
1109 $this->
lng->txt(
'auth_account_migration_new'),
1110 $this->
lng->txt(
'auth_info_add')
1114 self::PROP_ACCOUNT_MIGRATION => $field_factory->switchableGroup(
1116 self::PROP_ACCOUNT_MIGRATION_MIGRATE => $keep,
1117 self::PROP_ACCOUNT_MIGRATION_NEW => $new,
1119 $this->
lng->txt(
'auth_account_migration_name')
1120 )->withRequired(
true)->withValue(self::PROP_ACCOUNT_MIGRATION_MIGRATE)
1123 $sections = [$field_factory->section($fields, $this->
lng->txt(
'auth_account_migration'))];
1125 return $this->ui_factory->input()
1128 ->standard($this->
ctrl->getFormAction($this,
'migrateAccount'), $sections)
1129 ->withDedicatedName(
'login_form')
1130 ->withSubmitLabel($this->
lng->txt(
'save'))
1139 $this->
help->setSubScreenId(
'account_migration');
1141 $tpl = self::initStartUpTemplate(
'tpl.login_account_migration.html');
1142 $tpl->setVariable(
'MIG_FORM', $this->ui_renderer->render($form ?? $this->buildAccountMigrationForm()));
1148 self::printToGlobalTemplate($tpl);
1154 $form_valid =
false;
1156 if ($this->
http->request()->getMethod() ===
'POST') {
1157 $form = $form->withRequest($this->
http->request());
1158 $form_data = $form->getData();
1159 $form_valid = $form_data !== null;
1167 $account_migration = $form_data[self::PROP_ACCOUNT_MIGRATION];
1168 $account_migration_mode = $account_migration[0];
1169 if ($account_migration_mode === self::PROP_ACCOUNT_MIGRATION_MIGRATE) {
1171 } elseif ($account_migration_mode === self::PROP_ACCOUNT_MIGRATION_NEW) {
1176 $this->
lng->txt(
'form_input_not_valid')
1187 $provider = $provider_factory->getProviderByAuthMode(
1192 $this->
logger->debug(
'Using provider: ' . get_class(
$provider) .
' for further processing.');
1198 $frontend = $frontend_factory->getFrontend(
1204 if ($frontend->migrateAccountNew()) {
1208 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_wrong_login'));
1209 $this->
ctrl->redirect($this,
'showAccountMigration');
1217 $username = $migration_request_data[self::PROP_USERNAME];
1218 $password = $migration_request_data[self::PROP_PASSWORD];
1220 $this->
logger->debug(
'Starting account migration for user: ' .
ilSession::get(
'mig_ext_account'));
1223 $credentials->setUsername($username);
1224 $credentials->setPassword($password);
1233 $frontend = $frontend_factory->getFrontend(
1239 $frontend->authenticate();
1241 switch ($status->getStatus()) {
1243 $this->
getLogger()->debug(
'Account migration: authentication successful for ' . $username);
1245 $provider = $provider_factory->getProviderByAuthMode(
1250 $frontend = $frontend_factory->getFrontend(
1256 if ($frontend->migrateAccount(
$GLOBALS[
'DIC'][
'ilAuthSession'])) {
1260 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_wrong_login'),
true);
1261 $this->
ctrl->redirect($this,
'showAccountMigration');
1265 $this->
getLogger()->info(
'Account migration failed for user ' . $username);
1272 $this->
help->setSubScreenId(
'logout');
1274 $tpl = self::initStartUpTemplate(
'tpl.logout.html');
1277 $this->
refinery->byTrying([$this->refinery->kindlyTo()->string(), $this->
refinery->always(
'')])
1282 $tpl->setCurrentBlock(
'homelink');
1283 $tpl->setVariable(
'CLIENT_ID',
'?client_id=' .
$client_id .
'&lang=' . $this->
lng->getLangKey());
1284 $tpl->setVariable(
'TXT_HOME', $this->
lng->txt(
'home'));
1285 $tpl->parseCurrentBlock();
1288 $tpl->setVariable(
'TXT_PAGEHEADLINE', $this->
lng->txt(
'logout'));
1291 $this->
lng->txt(
'logout_text') . $this->dic[
'legalDocuments']->logoutText()
1293 $tpl->setVariable(
'TXT_LOGIN', $this->
lng->txt(
'login_to_ilias'));
1296 '?client_id=' .
$client_id .
'&cmd=force_login&lang=' . $this->
lng->getLangKey()
1299 self::printToGlobalTemplate($tpl);
1304 $this->eventHandler->raise(
1305 'Services/Authentication',
1308 'user_id' => $this->
user->getId()
1312 $user_language = $this->
user->getLanguage();
1314 $used_external_auth_mode =
ilSession::get(
'used_external_auth_mode');
1317 $this->authSession->logout();
1318 $this->eventHandler->raise(
1319 'Services/Authentication',
1322 'username' => $this->
user->getLogin(),
1323 'is_explicit_logout' =>
true,
1324 'used_external_auth_mode' => $used_external_auth_mode,
1333 $this->
ctrl->setParameter($this,
'lang', $user_language);
1334 $this->
ctrl->redirect($this,
'showLogout');
1340 $tpl = self::initStartUpTemplate([
'agreement.html',
'Services/LegalDocuments'],
true,
false);
1341 $tpl->setVariable(
'CONTENT', $DIC[
'legalDocuments']->agreeContent(self::class, __FUNCTION__));
1342 self::printToGlobalTemplate($tpl);
1347 if ($this->authSession->isValid()) {
1348 if (!$this->
user->isAnonymous() || (
1350 $this->httpRequest->getServerParams()[
'SERVER_NAME']
1369 public static function _checkGoto(
string $a_target)
1373 $component_factory = $DIC[
'component.factory'];
1375 $access = $DIC->access();
1377 foreach ($component_factory->getActivePluginsInSlot(
'uihk') as $ui_plugin) {
1379 $gui_class = $ui_plugin->getUIClassInstance();
1380 $resp = $gui_class->checkGotoHook($a_target);
1381 if (isset(
$resp[
'target']) && is_string(
$resp[
'target']) &&
$resp[
'target'] !==
'') {
1382 $a_target =
$resp[
'target'];
1387 if ($a_target ===
'') {
1391 $t_arr = explode(
'_', $a_target);
1394 if ($type ===
'git') {
1398 if ($type ===
'pg' | $type ===
'st') {
1402 $class = $DIC[
'objDefinition']->getClassName($type);
1403 if ($class ===
'') {
1407 $location = $DIC[
'objDefinition']->getLocation($type);
1408 $full_class =
'ilObj' . $class .
'Access';
1409 include_once(
$location .
'/class.' . $full_class .
'.php');
1411 $ret = call_user_func([$full_class,
'_checkGoto'], $a_target);
1416 !str_contains($a_target,
'_wsp') &&
1417 !$DIC->user()->isAnonymous() &&
1418 !$DIC[
'objDefinition']->isAdministrationObject($type) &&
1419 $DIC[
'objDefinition']->isRBACObject($type)) {
1422 if ($t_arr[0] ===
'pg') {
1423 if (isset($t_arr[2])) {
1429 $ref_id = array_shift($ref_ids);
1445 foreach (
$path as $path_ref_id) {
1446 $redirect_infopage =
false;
1447 $add_member_role =
false;
1453 if (!$access->
doActivationCheck(
'read',
'', $path_ref_id, $DIC->user()->getId(), $pobj_id, $ptype) ||
1454 !$access->
doStatusCheck(
'read',
'', $path_ref_id, $DIC->user()->getId(), $pobj_id, $ptype)) {
1457 } elseif ($ptype ===
'crs') {
1460 if (!$participants->isAssigned()) {
1463 $block_obj[] = $path_ref_id;
1464 $add_member_role =
true;
1466 $redirect_infopage =
true;
1469 } elseif ($ptype ===
'grp') {
1474 if ($group_obj->isRegistrationEnabled()) {
1475 $block_obj[] = $path_ref_id;
1476 $add_member_role =
true;
1478 $redirect_infopage =
true;
1484 if ($add_member_role) {
1486 $DIC->rbac()->system()->resetPACache($DIC->user()->getId(), $path_ref_id);
1487 if (!$DIC->rbac()->system()->checkAccess(
'join', $path_ref_id)) {
1488 $redirect_infopage =
true;
1490 $DIC->rbac()->system()->addTemporaryRole(
1491 $DIC->user()->getId(),
1498 if ($redirect_infopage) {
1499 if ($DIC->rbac()->system()->checkAccess(
'visible', $path_ref_id)) {
1501 'ilias.php?baseClass=ilRepositoryGUI&ref_id=' . $path_ref_id .
'&cmd=infoScreen' 1510 $DIC->rbac()->system()->resetPACache($DIC->user()->getId(),
$ref_id);
1511 if ($block_obj !== [] && $DIC->rbac()->system()->checkAccess(
'read',
$ref_id)) {
1518 'ilias.php?baseClass=ilRepositoryGUI&ref_id=' . array_shift($block_obj)
1526 private function confirmRegistration():
void 1528 $this->
lng->loadLanguageModule(
'registration');
1531 $regitration_hash = trim($this->
http->wrapper()->query()->retrieve(
1533 $this->
refinery->byTrying([$this->refinery->kindlyTo()->string(), $this->
refinery->always(
'')])
1535 if ($regitration_hash ===
'') {
1538 $this->
lng->txt(
'reg_confirmation_hash_not_passed'),
1541 $this->
ctrl->redirectToURL(sprintf(
'./login.php?cmd=force_login&lang=%s', $this->
lng->getLangKey()));
1552 if ($oRegSettings->passwordGenerationEnabled()) {
1554 $password = $passwords[0];
1564 ))->withEmailConfirmationRegistrationMode();
1566 if ($user->
getPref(
'reg_target') ??
'') {
1567 $accountMail = $accountMail->withPermanentLinkTarget($user->
getPref(
'reg_target'));
1570 $accountMail->send($user, $password);
1574 $this->
lng->txt(
'reg_account_confirmation_successful'),
1577 $this->
ctrl->redirectToURL(sprintf(
'./login.php?cmd=force_login&lang=%s', $user->
getLanguage()));
1580 $soap_client->setResponseTimeout(1);
1581 $soap_client->enableWSDL(
true);
1582 $soap_client->init();
1585 'Triggered soap call (background process) for deletion of inactive user objects with expired confirmation hash values (dual opt in) ...' 1589 'deleteExpiredDualOptInUserObjects',
1592 $exception->getCode()
1598 $this->
lng->txt($exception->getMessage()),
1601 $this->
ctrl->redirectToURL(sprintf(
'./login.php?cmd=force_login&lang=%s', $this->
lng->getLangKey()));
1605 $this->
lng->txt($exception->getMessage()),
1608 $this->
ctrl->redirectToURL(sprintf(
'./login.php?cmd=force_login&lang=%s', $this->
lng->getLangKey()));
1618 bool $a_show_back =
false,
1619 bool $a_show_logout =
false 1625 $tpl->addBlockfile(
'CONTENT',
'content',
'tpl.startup_screen.html',
'Services/Init');
1627 $view_title = $DIC->language()->txt(
'login_to_ilias');
1630 $param =
'client_id=' .
CLIENT_ID .
'&lang=' . $DIC->language()->getLangKey();
1632 $tpl->setCurrentBlock(
'link_item_bl');
1633 $tpl->setVariable(
'LINK_TXT', $view_title);
1634 $tpl->setVariable(
'LINK_URL',
'login.php?cmd=force_login&' .
$param);
1635 $tpl->parseCurrentBlock();
1639 $tpl->setVariable(
'LINK_URL',
'index.php?' .
$param);
1640 $tpl->setVariable(
'LINK_TXT', $DIC->language()->txt(
'home'));
1641 $tpl->parseCurrentBlock();
1643 } elseif ($a_show_logout) {
1644 $view_title = $DIC->language()->txt(
'logout');
1645 $tpl->setCurrentBlock(
'link_item_bl');
1646 $tpl->setVariable(
'LINK_TXT', $view_title);
1647 $tpl->setVariable(
'LINK_URL', self::logoutUrl());
1648 $tpl->parseCurrentBlock();
1651 if (is_array($a_tmpl)) {
1652 $template_file = $a_tmpl[0];
1653 $template_dir = $a_tmpl[1];
1655 $template_file = $a_tmpl;
1656 $template_dir =
'Services/Init';
1659 $tpl->addBlockFile(
'STARTUP_CONTENT',
'startup_content', $template_file, $template_dir);
1661 PageContentProvider::setViewTitle($view_title);
1662 $short_title = trim($DIC->settings()->get(
'short_inst_name') ??
'');
1663 if ($short_title ===
'') {
1664 $short_title =
'ILIAS';
1666 PageContentProvider::setShortTitle($short_title);
1668 $header_title = ilObjSystemFolder::_getHeaderTitle();
1669 PageContentProvider::setTitle($header_title);
1677 $tpl =
new ilTemplate(
'tpl.login_form_saml.html',
true,
true,
'Services/Saml');
1681 if ($target !==
'') {
1685 $tpl->setVariable(
'SAML_SCRIPT_URL',
'./saml.php' . $return);
1686 $tpl->setVariable(
'TXT_LOGIN', $this->
lng->txt(
'saml_log_in'));
1687 $tpl->setVariable(
'LOGIN_TO_ILIAS_VIA_SAML', $this->
lng->txt(
'login_to_ilias_via_saml'));
1688 $tpl->setVariable(
'TXT_SAML_LOGIN_TXT', $this->
lng->txt(
'saml_login_form_txt'));
1689 $tpl->setVariable(
'TXT_SAML_LOGIN_INFO_TXT', $this->
lng->txt(
'saml_login_form_info_txt'));
1695 '[list-saml-login]',
1700 return $page_editor_html;
1706 if ($oidc_settings->getActive()) {
1707 $tpl =
new ilTemplate(
'tpl.login_element.html',
true,
true,
'Services/OpenIdConnect');
1709 $this->
lng->loadLanguageModule(
'auth');
1710 $tpl->setVariable(
'TXT_OIDCONNECT_HEADER', $this->
lng->txt(
'auth_oidc_login_element_info'));
1713 $target_str = empty($target) ?
'' : (
'?target=' . $target);
1714 switch ($oidc_settings->getLoginElementType()) {
1716 $tpl->setVariable(
'SCRIPT_OIDCONNECT_T',
'./openidconnect.php' . $target_str);
1717 $tpl->setVariable(
'TXT_OIDC', $oidc_settings->getLoginElemenText());
1721 $tpl->setVariable(
'SCRIPT_OIDCONNECT_I',
'./openidconnect.php' . $target_str);
1722 $tpl->setVariable(
'IMG_SOURCE', $oidc_settings->getImageFilePath());
1730 '[list-openid-connect-login]',
1731 'OPEN_ID_CONNECT_LOGIN_FORM' 1735 return $page_editor_html;
1740 $this->
getLogger()->debug(
'Trying openid connect authentication');
1743 $credentials->initFromRequest();
1752 $frontend = $frontend_factory->getFrontend(
1758 $frontend->authenticate();
1760 switch ($status->getStatus()) {
1762 $this->
logger->debug(
'Authentication successful; Redirecting to starting page.');
1763 if ($credentials->getRedirectionTarget()) {
1770 $this->
mainTemplate->setOnScreenMessage(
'failure', $status->getTranslatedReason(),
true);
1771 $this->
ctrl->redirect($this,
'showLoginPage');
1774 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_wrong_login'));
1780 $this->
getLogger()->debug(
'Trying saml authentication');
1782 $params = $request->getQueryParams();
1785 $auth = $factory->auth();
1787 if (isset(
$params[
'action']) &&
$params[
'action'] ===
'logout') {
1788 $logout_url =
$params[
'logout_url'] ??
'';
1789 $this->
logger->info(sprintf(
'Requested SAML logout: %s', $logout_url));
1790 $auth->logout($logout_url);
1796 if (isset(
$params[
'returnTo'])) {
1797 $auth->storeParam(
'target',
$params[
'returnTo']);
1800 $this->
logger->debug(
'Started SAML authentication request');
1801 if (!$auth->isAuthenticated()) {
1803 if (!isset($request->getQueryParams()[
'idpentityid'], $request->getQueryParams()[
'saml_idp_id'])) {
1805 if (count($activeIdps) === 1) {
1806 $idp = current($activeIdps);
1810 'Found exactly one active IDP with id %s: %s',
1816 $this->
ctrl->setParameter($this,
'idpentityid', $idp->getEntityId());
1817 $this->
ctrl->setParameter($this,
'saml_idp_id', $idp->getIdpId());
1818 $this->
ctrl->setTargetScript(
'saml.php');
1819 $this->
ctrl->redirect($this,
'doSamlAuthentication');
1820 } elseif ($activeIdps === []) {
1821 $this->
logger->debug(
'Did not find any active IDP, skipp authentication process');
1822 $this->
ctrl->redirect($this,
'showLoginPage');
1824 $this->
logger->debug(
'Found multiple active IPDs, presenting IDP selection...');
1830 $auth->storeParam(
'idpId', (
int) $request->getQueryParams()[
'saml_idp_id']);
1831 $this->
logger->debug(sprintf(
'Stored relevant IDP id in session: %s', $auth->getParam(
'idpId')));
1834 $auth = $factory->auth();
1836 $this->
logger->debug(
'Checking SAML authentication status...');
1837 $auth->protectResource();
1839 'SAML authentication successful, continuing with ILIAS internal authentication process...' 1842 $idpId = (
int) $auth->getParam(
'idpId');
1846 'Internal SAML IDP id fetched from session: %s',
1853 'No valid internal IDP id found (most probably due to IDP initiated SSO), trying fallback determination...' 1855 $authData = $auth->getAuthDataArray();
1856 if (isset($authData[
'saml:sp:IdP'])) {
1860 'Searching active ILIAS IDP by entity id "%s" results in: %s',
1861 $authData[
'saml:sp:IdP'],
1867 'Could not execute fallback determination, no IDP entity ID found SAML authentication session data' 1872 $target = $auth->popParam(
'target');
1874 $this->
logger->debug(sprintf(
'Retrieved "target" parameter: %s', print_r($target,
true)));
1877 $credentials->initFromRequest();
1880 $provider = $provider_factory->getProviderByAuthMode(
1888 $credentials->setReturnTo($target);
1890 $target = $credentials->getReturnTo();
1897 $frontend = $frontend_factory->getFrontend(
1903 $frontend->authenticate();
1905 switch ($status->getStatus()) {
1907 $this->
logger->debug(
'Authentication successful; Redirecting to starting page.');
1912 $this->
ctrl->redirect($this,
'showAccountMigration');
1916 $this->
mainTemplate->setOnScreenMessage(
'failure', $status->getTranslatedReason(),
true);
1917 $this->
ctrl->redirect($this,
'showLoginPage');
1920 $this->
mainTemplate->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_wrong_login'));
1929 $this->
help->setSubScreenId(
'saml_idp_selection');
1931 self::initStartUpTemplate([
'tpl.saml_idp_selection.html',
'Services/Saml']);
1933 $this->
ctrl->setTargetScript(
'saml.php');
1936 foreach ($idps as $idp) {
1937 $this->
ctrl->setParameter($this,
'saml_idp_id', $idp->getIdpId());
1938 $this->
ctrl->setParameter($this,
'idpentityid', urlencode($idp->getEntityId()));
1941 'idp_link' => $this->ui_renderer->render(
1942 $this->ui_factory->link()->standard(
1943 $idp->getEntityId(),
1944 $this->
ctrl->getLinkTarget($this,
'doSamlAuthentication')
1950 $table->setData($items);
1951 $this->
mainTemplate->setVariable(
'CONTENT', $table->getHtml());
1960 public static function logoutUrl(array $parameters = []): string
1964 $defaults = [
'lang' => $DIC->user()->getCurrentLanguage()];
1965 $parameters =
'&' . http_build_query(array_merge($defaults, $parameters));
1967 $DIC->ctrl()->setTargetScript(
'logout.php');
1968 $url = $DIC->ctrl()->getLinkTargetByClass([self::class],
'doLogout') . $parameters;
1969 $DIC->ctrl()->setTargetScript(
'ilias.php');
showCodeForm(string $username=null, ILIAS\UI\Component\Input\Container\Form\Form $form=null)
const AUTH_OPENID_CONNECT
static get(string $a_var)
getSafePostCommands()
This method must return a list of safe POST commands.
setTimeLimitUnlimited(bool $a_unlimited)
const PROP_ACCOUNT_MIGRATION_MIGRATE
static _isParticipant(int $a_ref_id, int $a_usr_id)
Static function to check if a user is a participant of the container object.
static initStartUpTemplate( $a_tmpl, bool $a_show_back=false, bool $a_show_logout=false)
This method enriches the global template with some user interface elements (language selection...
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 _lookupRegistrationType()
static appendUrlParameterString(string $a_url, string $a_par, bool $xml_style=false)
static stripSlashesRecursive($a_data, bool $a_strip_html=true, string $a_allow="")
showLoginInformation(string $page_editor_html, ilGlobalTemplateInterface $tpl)
buildCodeForm(string $username=null)
static getCodeValidUntil(string $code)
const CONTEXT_STANDARD_FORM
static getLogger(string $a_component_id)
Get component logger.
static _hasMultipleAuthenticationMethods()
static _verifyRegistrationHash(string $a_hash)
Verifies a registration hash.
special template class to simplify handling of ITX/PEAR
Class ilAccountRegistrationGUI.
$location
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilGlobalTemplateInterface $mainTemplate
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Class for user related exception handling in ILIAS.
static _isActivated(int $a_obj_id)
Is activated.
const STATUS_AUTHENTICATION_FAILED
Class ChatMainBarProvider .
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
static _getInstanceByObjId(int $a_obj_id, int $a_usr_id)
static _getAllReferences(int $id)
get all reference ids for object ID
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
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...
showLoginPage(ILIAS\UI\Component\Input\Container\Form\Form $form=null)
static _lookupId($a_user_str)
static goToPublicSection()
go to public section
const LOGIN_ELEMENT_TYPE_TXT
setVariable(string $variable, $value='')
Sets the given variable to the given value.
static getDefaultMemberRole(int $a_ref_id)
const MESSAGE_TYPE_QUESTION
setTimeLimitUntil(?int $a_until)
static printToGlobalTemplate($tpl)
doShibbolethAuthentication()
purgePlaceholders(string $page_editor_html)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setPasswd(string $a_str, string $a_type=ilObjUser::PASSWD_PLAIN)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupObjId(int $ref_id)
const PROP_ACCOUNT_MIGRATION
Interface ilCtrlBaseClassInterface describes ilCtrl base classes.
const MESSAGE_TYPE_SUCCESS
Class ilAuthFrontendCredentialsSaml.
setActive(bool $a_active, int $a_owner=0)
set user active state and updates system fields appropriately
showOpenIdConnectLoginForm(string $page_editor_html)
$messages
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
showShibbolethLoginForm(string $page_editor_html)
static _existsAndNotEmpty(string $a_parent_type, int $a_id, string $a_lang="-")
checks whether page exists and is not empty (may return true on some empty pages) ...
static http()
Fetches the global http state from ILIAS.
Class ilAccountRegistrationMail.
static logoutUrl(array $parameters=[])
Return the logout URL with a valid CSRF token.
Description of class class.
static setCookie(string $a_cookie_name, string $a_cookie_value='', bool $a_also_set_super_global=true, bool $a_set_cookie_invalid=false)
static isUnusedCode(string $code)
retrieveMessagesFromSession()
getPref(string $a_keyword)
showLoginForm(string $page_editor_html, ILIAS\UI\Component\Input\Container\Form\Form $form=null)
buildAccountMigrationForm()
static lookupId(string $a_lang_key)
Lookup obj_id of language.
Class ilSamlIdpSelectionTableGUI.
showLoginPageOrStartupPage()
static getSyntaxStylePath()
const PROP_ACCOUNT_MIGRATION_NEW
doStandardAuthentication()
static getContentStylePath(int $a_style_id, bool $add_random=true, bool $add_token=true)
get content style path static (to avoid full reading)
substituteLoginPageElements( $tpl, string $page_editor_html, string $element_html, string $placeholder, string $fallback_tplvar)
showAccountMigration(ILIAS\UI\Component\Input\Container\Form\Form $form=null, string $message='')
__construct(ilObjUser $user=null, ilGlobalTemplateInterface $mainTemplate=null, ServerRequestInterface $httpRequest=null)
static redirect(string $a_script)
static generatePasswords(int $a_number)
Generate a number of passwords.
setLastPasswordChangeTS(int $a_last_password_change_ts)
static getInstanceByObjId(?int $obj_id, bool $stop_on_error=true)
get an instance of an Ilias object by object id
const STATUS_AUTHENTICATED
const MIG_EXTERNAL_ACCOUNT
Class ilObjAuthSettingsGUI.
static _registrationEnabled(int $a_obj_id)
Registration enabled? Method is in Access class, since it is needed by Access/ListGUI.
const STATUS_CODE_ACTIVATION_REQUIRED
static _getInstance()
Get instance.
doMigration(array $migration_request_data)
saniziteArrayElementsTrafo()
doActivationCheck(string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, int $a_obj_id, string $a_type)
check for activation and centralized offline status.
static useCode(string $code)
showRegistrationLinks(string $page_editor_html)
ilAuthSession $authSession
static redirectToStartingPage(string $target='')
static getInstance()
Get status instance.
static setClosingContext(int $a_context)
set closing context (for statistics)
showLegalDocumentsLinks(string $page_editor_html)
ILIAS UI Factory $ui_factory
ilAppEventHandler $eventHandler
showSamlIdpSelection(ilSamlAuth $auth, array $idps)
Description of class class.
static _lookupContObjID(int $a_id)
get learning module id for lm object
static geIdpIdByEntityId(string $entityId)
RefineryFactory $refinery
static _getMultipleAuthModeOptions(ilLanguage $lng)
const MESSAGE_TYPE_FAILURE
static getInstance()
Get singelton instance.
Class for user related exception handling in ILIAS.
ServerRequestInterface $httpRequest
static getActiveIdpList()
static applyRoleAssignments(ilObjUser $user, string $code)
const LOGIN_ELEMENT_TYPE_IMG
static _lookupType(int $id, bool $reference=false)
const MIG_TRIGGER_AUTHMODE
doOpenIdConnectAuthentication()
Interface ilCtrlSecurityInterface provides ilCtrl security information.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const STATUS_ACCOUNT_MIGRATION_REQUIRED
getUnsafeGetCommands()
This method must return a list of unsafe GET commands.
static set(string $a_var, $a_val)
Set a value.
ILIAS UI Renderer $ui_renderer
static applyAccessLimits(ilObjUser $user, string $code)
jumpToPasswordAssistance()
Auth frontend credentials for CAS auth.
showSamlLoginForm(string $page_editor_html)
doStatusCheck(string $a_permission, string $a_cmd, int $a_ref_id, int $a_user_id, int $a_obj_id, string $a_type)
object type specific check
showCASLoginForm(string $page_editor_html)
static _lookupLogin(int $a_user_id)