ILIAS  release_8 Revision v8.24
class.ilPasswordAssistanceGUI.php
Go to the documentation of this file.
1<?php
2
19use ILIAS\Refinery\Factory as RefineryFactory;
20use ILIAS\HTTP\Services as HTTPServices;
21
30{
31 private const PERMANENT_LINK_TARGET_PW = 'pwassist';
32 private const PERMANENT_LINK_TARGET_NAME = 'nameassist';
33
35 protected ilLanguage $lng;
40 protected RefineryFactory $refinery;
41 protected HTTPServices $http;
42 protected ilHelpGUI $help;
43 protected ilObjUser $actor;
46
47 public function __construct()
48 {
49 global $DIC;
50
51 $this->ctrl = $DIC->ctrl();
52 $this->lng = $DIC->language();
53 $this->rbacreview = $DIC->rbac()->review();
54 $this->tpl = $DIC->ui()->mainTemplate();
55 $this->settings = $DIC->settings();
56 $this->ilErr = $DIC['ilErr'];
57 $this->help = $DIC->help();
58 $this->http = $DIC->http();
59 $this->actor = $DIC->user();
60 $this->refinery = $DIC->refinery();
61 $this->ui_factory = $DIC->ui()->factory();
62 $this->ui_renderer = $DIC->ui()->renderer();
63
64 $this->help->setScreenIdComponent('init');
65 }
66
67 private function retrieveRequestedKey(): string
68 {
69 $key = $this->http->wrapper()->query()->retrieve(
70 'key',
71 $this->refinery->byTrying([
72 $this->refinery->kindlyTo()->string(),
73 $this->refinery->always(
74 $this->http->wrapper()->post()->retrieve(
75 'key',
76 $this->refinery->byTrying([$this->refinery->kindlyTo()->string(), $this->refinery->always('')])
77 )
78 )
79 ])
80 );
81
82 return $key;
83 }
84
88 protected function getClientId(): string
89 {
90 return CLIENT_ID;
91 }
92
93 public function executeCommand()
94 {
95 if (!$this->settings->get('setup_ok')) {
96 $this->ilErr->raiseError('Setup is not completed. Please run setup routine again.', $this->ilErr->FATAL);
97 }
98
99 if (!$this->settings->get('password_assistance')) {
100 $this->ilErr->raiseError($this->lng->txt('permission_denied'), $this->ilErr->MESSAGE);
101 }
102
103 if ($this->actor->getId() > 0 && !$this->actor->isAnonymous()) {
104 $this->ilErr->raiseError($this->lng->txt('permission_denied'), $this->ilErr->MESSAGE);
105 }
106
107 $this->lng->loadLanguageModule('pwassist');
108 $cmd = $this->ctrl->getCmd() ?? '';
109 $next_class = $this->ctrl->getNextClass($this);
110
111 switch ($next_class) {
112 default:
113 if ($cmd !== '' && method_exists($this, $cmd)) {
114 $this->$cmd();
115 return;
116 }
117
118 if ($this->retrieveRequestedKey() !== '') {
119 $this->showAssignPasswordForm(null, $this->retrieveRequestedKey());
120 } else {
121 $this->showAssistanceForm();
122 }
123 break;
124 }
125 }
126
127 public function getUnsafeGetCommands(): array
128 {
129 return [];
130 }
131
132 public function getSafePostCommands(): array
133 {
134 return ['submitAssignPasswordForm'];
135 }
136
140 protected function getBaseUrl(): string
141 {
142 return rtrim(ILIAS_HTTP_PATH, '/');
143 }
144
150 protected function buildUrl(string $script, array $queryParameters): string
151 {
152 $url = implode('/', [
153 $this->getBaseUrl(),
154 ltrim($script, '/')
155 ]);
156
158 $url,
159 http_build_query($queryParameters, null, '&')
160 );
161
162 return $url;
163 }
164
166 {
167 $form = new ilPropertyFormGUI();
168
169 $form->setFormAction($this->ctrl->getFormAction($this, 'submitAssistanceForm'));
170 $form->setTarget('_parent');
171
172 $username = new ilTextInputGUI($this->lng->txt('username'), 'username');
173 $username->setRequired(true);
174 $form->addItem($username);
175
176 $email = new ilEMailInputGUI($this->lng->txt('email'), 'email');
177 $email->setRequired(true);
178 $form->addItem($email);
179
180 $form->addCommandButton('submitAssistanceForm', $this->lng->txt('submit'));
181 return $form;
182 }
183
184 public function showAssistanceForm(ilPropertyFormGUI $form = null): void
185 {
186 $this->help->setSubScreenId('password_assistance');
187
188 $tpl = ilStartUpGUI::initStartUpTemplate('tpl.pwassist_assistance.html', true);
190 'IMG_PAGEHEADLINE',
191 $this->ui_renderer->render($this->ui_factory->symbol()->icon()->custom(
192 ilUtil::getImagePath('icon_auth.svg'),
193 $this->lng->txt('password_assistance')
194 ))
195 );
196 $tpl->setVariable('TXT_PAGEHEADLINE', $this->lng->txt('password_assistance'));
197
198 $tpl->setVariable(
199 'TXT_ENTER_USERNAME_AND_EMAIL',
200 str_replace(
201 "\\n",
202 '<br />',
203 sprintf(
204 $this->lng->txt('pwassist_enter_username_and_email'),
206 $this->settings->get('admin_email')
207 ) . '">' . ilLegacyFormElementsUtil::prepareFormOutput($this->settings->get('admin_email')) . '</a>'
208 )
209 )
210 );
211
212 if (!$form) {
213 $form = $this->getAssistanceForm();
214 }
215 $tpl->setVariable('FORM', $form->getHTML());
216 $this->fillPermanentLink(self::PERMANENT_LINK_TARGET_PW);
218 }
219
231 public function submitAssistanceForm(): void
232 {
233 $form = $this->getAssistanceForm();
234 if (!$form->checkInput()) {
235 $form->setValuesByPost();
236 $this->showAssistanceForm($form);
237 return;
238 }
239
240 $defaultAuth = ilAuthUtils::AUTH_LOCAL;
241 if ($GLOBALS['DIC']['ilSetting']->get('auth_mode')) {
242 $defaultAuth = $GLOBALS['DIC']['ilSetting']->get('auth_mode');
243 }
244
245 $assistance_callback = function () use ($form, $defaultAuth): void {
246 $username = trim($form->getInput('username'));
247 $email = trim($form->getInput('email'));
248
249 $usrId = \ilObjUser::getUserIdByLogin($username);
250 if (!is_numeric($usrId) || !($usrId > 0)) {
251 \ilLoggerFactory::getLogger('usr')->info(
252 sprintf(
253 'Could not process password assistance form (reason: no user found) %s / %s',
254 $username,
255 $email
256 )
257 );
258
259 return;
260 }
261
262 $user = new \ilObjUser($usrId);
263 $emailAddresses = array_map('strtolower', [$user->getEmail(), $user->getSecondEmail()]);
264
265 if (!in_array(strtolower($email), $emailAddresses)) {
266 if (0 === strlen(implode('', $emailAddresses))) {
267 \ilLoggerFactory::getLogger('usr')->info(sprintf(
268 'Could not process password assistance form (reason: account without email addresses): %s / %s',
269 $username,
270 $email
271 ));
272 } else {
273 \ilLoggerFactory::getLogger('usr')->info(sprintf(
274 'Could not process password assistance form (reason: account email addresses differ from input): %s / %s',
275 $username,
276 $email
277 ));
278 }
279 } elseif (
280 (
281 $user->getAuthMode(true) != ilAuthUtils::AUTH_LOCAL ||
282 ($user->getAuthMode(true) == $defaultAuth && $defaultAuth != ilAuthUtils::AUTH_LOCAL)
283 ) && !(
284 (int) $user->getAuthMode(true) === ilAuthUtils::AUTH_SAML &&
285 \ilAuthUtils::isLocalPasswordEnabledForAuthMode($user->getAuthMode(true))
286 )
287 ) {
288 \ilLoggerFactory::getLogger('usr')->info(sprintf(
289 'Could not process password assistance form (reason: not permitted for accounts using external authentication sources): %s / %s',
290 $username,
291 $email
292 ));
293 } elseif (
294 $this->rbacreview->isAssigned($user->getId(), ANONYMOUS_ROLE_ID) ||
295 $this->rbacreview->isAssigned($user->getId(), SYSTEM_ROLE_ID)
296 ) {
297 \ilLoggerFactory::getLogger('usr')->info(sprintf(
298 'Could not process password assistance form (reason: not permitted for system user or anonymous): %s / %s',
299 $username,
300 $email
301 ));
302 } else {
303 $this->sendPasswordAssistanceMail($user);
304 }
305 };
306
307 if (null !== ($assistance_duration = $this->settings->get("account_assistance_duration"))) {
308 $duration = $this->http->durations()->callbackDuration((int) $assistance_duration);
309 $status = $duration->stretch($assistance_callback);
310 } else {
311 $status = $assistance_callback();
312 }
313
314 $this->showMessageForm(
315 sprintf($this->lng->txt('pwassist_mail_sent'), $form->getInput('email')),
316 self::PERMANENT_LINK_TARGET_PW
317 );
318 }
319
330 public function sendPasswordAssistanceMail(ilObjUser $userObj): void
331 {
332 global $DIC;
333
334 require_once 'include/inc.pwassist_session_handler.php';
335
336 // Create a new session id
337 // #9700 - this didn't do anything before?!
338 // db_set_save_handler();
339 if (session_status() !== PHP_SESSION_ACTIVE) {
340 session_start();
341 }
342 $pwassist_session['pwassist_id'] = db_pwassist_create_id();
343 session_destroy();
345 $pwassist_session['pwassist_id'],
346 3600,
347 $userObj->getId()
348 );
349
350 $pwassist_url = $this->buildUrl(
351 'pwassist.php',
352 [
353 'client_id' => $this->getClientId(),
354 'lang' => $this->lng->getLangKey(),
355 'key' => $pwassist_session['pwassist_id']
356 ]
357 );
358
359 $alternative_pwassist_url = $this->buildUrl(
360 'pwassist.php',
361 [
362 'client_id' => $this->getClientId(),
363 'lang' => $this->lng->getLangKey(),
364 'key' => $pwassist_session['pwassist_id']
365 ]
366 );
367
369 $senderFactory = $DIC["mail.mime.sender.factory"];
370 $sender = $senderFactory->system();
371
372 $mm = new ilMimeMail();
373 $mm->Subject($this->lng->txt('pwassist_mail_subject'), true);
374 $mm->From($sender);
375 $mm->To($userObj->getEmail());
376 $mm->Body(
377 str_replace(
378 array("\\n", "\\t"),
379 array("\n", "\t"),
380 sprintf(
381 $this->lng->txt('pwassist_mail_body'),
382 $pwassist_url,
383 $this->getBaseUrl() . '/',
384 $_SERVER['REMOTE_ADDR'],
385 $userObj->getLogin(),
386 'mailto:' . $DIC->settings()->get("admin_email"),
387 $alternative_pwassist_url
388 )
389 )
390 );
391 $mm->Send();
392 }
393
394 protected function getAssignPasswordForm(string $pwassist_id): ilPropertyFormGUI
395 {
396 $form = new ilPropertyFormGUI();
397 $form->setFormAction($this->ctrl->getFormAction($this, 'submitAssignPasswordForm'));
398 $form->setTarget('_parent');
399
400 $username = new ilTextInputGUI($this->lng->txt('username'), 'username');
401 $username->setRequired(true);
402 $form->addItem($username);
403
404 $password = new ilPasswordInputGUI($this->lng->txt('password'), 'password');
406 $password->setRequired(true);
407 $password->setUseStripSlashes(false);
408 $form->addItem($password);
409
410 $key = new ilHiddenInputGUI('key');
411 $key->setValue($pwassist_id);
412 $form->addItem($key);
413 $form->addCommandButton('submitAssignPasswordForm', $this->lng->txt('submit'));
414 return $form;
415 }
416
427 public function showAssignPasswordForm(ilPropertyFormGUI $form = null, string $pwassist_id = ''): void
428 {
429 $this->help->setSubScreenId('password_input');
430
431 // Retrieve form data
432 if (!$pwassist_id) {
433 if ($this->http->wrapper()->query()->has('key')) {
434 $pwassist_id = $this->http->wrapper()->query()->retrieve(
435 'key',
436 $this->refinery->kindlyTo()->string()
437 );
438 }
439 }
440
441 // Retrieve the session, and check if it is valid
442 require_once 'include/inc.pwassist_session_handler.php';
443 $pwassist_session = db_pwassist_session_read($pwassist_id);
444 if (
445 !is_array($pwassist_session) ||
446 count($pwassist_session) == 0 ||
447 $pwassist_session['expires'] < time()
448 ) {
449 $this->tpl->setOnScreenMessage('failure', $this->lng->txt('pwassist_session_expired'));
450 $this->showAssistanceForm(null);
451 } else {
452 $tpl = ilStartUpGUI::initStartUpTemplate('tpl.pwassist_assignpassword.html', true);
454 'IMG_PAGEHEADLINE',
455 $this->ui_renderer->render($this->ui_factory->symbol()->icon()->custom(
456 ilUtil::getImagePath('icon_auth.svg'),
457 $this->lng->txt('password_assistance')
458 ))
459 );
460 $tpl->setVariable('TXT_PAGEHEADLINE', $this->lng->txt('password_assistance'));
461
462 $tpl->setVariable(
463 'TXT_ENTER_USERNAME_AND_NEW_PASSWORD',
464 $this->lng->txt('pwassist_enter_username_and_new_password')
465 );
466
467 if (!$form) {
468 $form = $this->getAssignPasswordForm($pwassist_id);
469 }
470 $tpl->setVariable('FORM', $form->getHTML());
471 $this->fillPermanentLink(self::PERMANENT_LINK_TARGET_PW);
473 }
474 }
475
492 public function submitAssignPasswordForm(): void
493 {
494 require_once 'include/inc.pwassist_session_handler.php';
495
496 // We need to fetch this before form instantiation
497 $pwassist_id = ilUtil::stripSlashes($_POST['key']);
498
499 $form = $this->getAssignPasswordForm($pwassist_id);
500 if (!$form->checkInput()) {
501 $form->setValuesByPost();
502 $this->showAssignPasswordForm($form, $pwassist_id);
503 return;
504 }
505
506 $username = trim($form->getInput('username'));
507 $password = trim($form->getInput('password'));
508 $pwassist_id = $form->getInput('key');
509
510 // Retrieve the session
511 $pwassist_session = db_pwassist_session_read($pwassist_id);
512
513 if (
514 !is_array($pwassist_session) ||
515 count($pwassist_session) == 0 ||
516 $pwassist_session['expires'] < time()
517 ) {
518 $this->tpl->setOnScreenMessage('failure', str_replace("\\n", '', $this->lng->txt('pwassist_session_expired')));
519 $form->setValuesByPost();
520 $this->showAssistanceForm($form);
521 return;
522 } else {
523 $is_successful = true;
524 $message = '';
525
526 $userObj = \ilObjectFactory::getInstanceByObjId($pwassist_session['user_id'], false);
527 if (!$userObj || !($userObj instanceof \ilObjUser)) {
528 $message = $this->lng->txt('user_does_not_exist');
529 $is_successful = false;
530 }
531
532 // check if the username entered by the user matches the
533 // one of the user object.
534 if ($is_successful && strcasecmp($userObj->getLogin(), $username) != 0) {
535 $message = $this->lng->txt('pwassist_login_not_match');
536 $is_successful = false;
537 }
538
539 $error_lng_var = '';
540 if (!ilSecuritySettingsChecker::isPasswordValidForUserContext($password, $userObj, $error_lng_var)) {
541 $message = $this->lng->txt($error_lng_var);
542 $is_successful = false;
543 }
544
545 // End of validation
546 // If the validation was successful, we change the password of the
547 // user.
548 // ------------------
549 if ($is_successful) {
550 $is_successful = $userObj->resetPassword($password, $password);
551 if (!$is_successful) {
552 $message = $this->lng->txt('passwd_invalid');
553 }
554 }
555
556 // If we are successful so far, we update the user object.
557 // ------------------
558 if ($is_successful) {
559 $userObj->setLastPasswordChangeToNow();
560 $userObj->update();
561 }
562
563 // If we are successful, we destroy the password assistance
564 // session and redirect to the login page.
565 // Else we display the form again along with an error message.
566 // ------------------
567 if ($is_successful) {
568 db_pwassist_session_destroy($pwassist_id);
569 $this->showMessageForm(
570 sprintf($this->lng->txt('pwassist_password_assigned'), $username),
571 self::PERMANENT_LINK_TARGET_PW
572 );
573 } else {
574 $this->tpl->setOnScreenMessage('failure', str_replace("\\n", '', $message));
575 $form->setValuesByPost();
576 $this->showAssignPasswordForm($form, $pwassist_id);
577 }
578 }
579 }
580
582 {
583 $form = new ilPropertyFormGUI();
584
585 $form->setFormAction($this->ctrl->getFormAction($this, 'submitUsernameAssistanceForm'));
586 $form->setTarget('_parent');
587
588 $email = new ilTextInputGUI($this->lng->txt('email'), 'email');
589 $email->setRequired(true);
590 $form->addItem($email);
591
592 $form->addCommandButton('submitUsernameAssistanceForm', $this->lng->txt('submit'));
593 return $form;
594 }
595
605 public function showUsernameAssistanceForm(ilPropertyFormGUI $form = null): void
606 {
607 $this->help->setSubScreenId('username_assistance');
608
609 $tpl = ilStartUpGUI::initStartUpTemplate('tpl.pwassist_username_assistance.html', true);
611 'IMG_PAGEHEADLINE',
612 $this->ui_renderer->render($this->ui_factory->symbol()->icon()->custom(
613 ilUtil::getImagePath('icon_auth.svg'),
614 $this->lng->txt('password_assistance')
615 ))
616 );
617 $tpl->setVariable('TXT_PAGEHEADLINE', $this->lng->txt('password_assistance'));
618
619 $tpl->setVariable(
620 'TXT_ENTER_USERNAME_AND_EMAIL',
621 str_replace(
622 "\\n",
623 '<br />',
624 sprintf(
625 $this->lng->txt('pwassist_enter_email'),
627 $this->settings->get('admin_email')
628 ) . '">' . ilLegacyFormElementsUtil::prepareFormOutput($this->settings->get('admin_email')) . '</a>'
629 )
630 )
631 );
632
633 if (!$form) {
634 $form = $this->getUsernameAssistanceForm();
635 }
636 $tpl->setVariable('FORM', $form->getHTML());
637 $this->fillPermanentLink(self::PERMANENT_LINK_TARGET_NAME);
639 }
640
652 public function submitUsernameAssistanceForm(): void
653 {
654 $form = $this->getUsernameAssistanceForm();
655 if (!$form->checkInput()) {
656 $form->setValuesByPost();
657 $this->showUsernameAssistanceForm($form);
658
659 return;
660 }
661
662 $assistance_callback = function () use ($form): void {
663 $email = trim($form->getInput('email'));
665
666 if (is_array($logins) && count($logins) > 0) {
667 $this->sendUsernameAssistanceMail($email, $logins);
668 } else {
669 \ilLoggerFactory::getLogger('usr')->info(sprintf(
670 'Could not sent username assistance emails to (reason: no user found): %s',
671 $email
672 ));
673 }
674 };
675
676 if (null !== ($assistance_duration = $this->settings->get("account_assistance_duration"))) {
677 $duration = $this->http->durations()->callbackDuration((int) $assistance_duration);
678 $status = $duration->stretch($assistance_callback);
679 } else {
680 $status = $assistance_callback();
681 }
682
683 $this->showMessageForm($this->lng->txt('pwassist_mail_sent_generic'), self::PERMANENT_LINK_TARGET_NAME);
684 }
685
696 public function sendUsernameAssistanceMail(string $email, array $logins): void
697 {
698 global $DIC;
699
700 require_once 'include/inc.pwassist_session_handler.php';
701
702 $login_url = $this->buildUrl(
703 'pwassist.php',
704 [
705 'client_id' => $this->getClientId(),
706 'lang' => $this->lng->getLangKey()
707 ]
708 );
709
711 $senderFactory = $DIC["mail.mime.sender.factory"];
712 $sender = $senderFactory->system();
713
714 $mm = new ilMimeMail();
715 $mm->Subject($this->lng->txt('pwassist_mail_subject'), true);
716 $mm->From($sender);
717 $mm->To($email);
718 $mm->Body(
719 str_replace(
720 array("\\n", "\\t"),
721 array("\n", "\t"),
722 sprintf(
723 $this->lng->txt('pwassist_username_mail_body'),
724 join(",\n", $logins),
725 $this->getBaseUrl() . '/',
726 $_SERVER['REMOTE_ADDR'],
727 $email,
728 'mailto:' . $this->settings->get("admin_email"),
729 $login_url
730 )
731 )
732 );
733 $mm->Send();
734 }
735
739 public function showMessageForm(string $text, string $permanent_link_context): void
740 {
741 $tpl = ilStartUpGUI::initStartUpTemplate('tpl.pwassist_message.html', true);
742 $tpl->setVariable('TXT_PAGEHEADLINE', $this->lng->txt('password_assistance'));
743 $tpl->setVariable(
744 'IMG_PAGEHEADLINE',
745 $this->ui_renderer->render($this->ui_factory->symbol()->icon()->custom(
746 ilUtil::getImagePath('icon_auth.svg'),
747 $this->lng->txt('password_assistance')
748 ))
749 );
750
751 $tpl->setVariable('TXT_TEXT', str_replace("\\n", '<br />', $text));
752 $this->fillPermanentLink($permanent_link_context);
754 }
755
756 protected function fillPermanentLink(string $context): void
757 {
758 $this->tpl->setPermanentLink('usr', null, $context);
759 }
760}
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
Builds data types.
Definition: Factory.php:21
Class Services.
Definition: Services.php:38
static isLocalPasswordEnabledForAuthMode($a_authmode)
Check if local password validation is enabled for a specific auth_mode.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Error Handling & global info handling uses PEAR error class.
Help GUI class.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
language handling
static prepareFormOutput($a_str, bool $a_strip=false)
static getLogger(string $a_component_id)
Get component logger.
User class.
static getUserLoginsByEmail(string $a_email)
resetPassword(string $raw, string $raw_retype)
Resets the user password.
static getUserIdByLogin(string $a_login)
setLastPasswordChangeToNow()
static getInstanceByObjId(?int $obj_id, bool $stop_on_error=true)
get an instance of an Ilias object by object id
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
showAssistanceForm(ilPropertyFormGUI $form=null)
getSafePostCommands()
This method must return a list of safe POST commands.
submitUsernameAssistanceForm()
Reads the submitted data from the password assistance form.
showUsernameAssistanceForm(ilPropertyFormGUI $form=null)
Shows the password assistance form.
submitAssistanceForm()
Reads the submitted data from the password assistance form.
buildUrl(string $script, array $queryParameters)
getClientId()
as replacement for "this->ilias"
getBaseUrl()
Returns the ILIAS http path without a trailing /.
showMessageForm(string $text, string $permanent_link_context)
This form is used to show a message to the user.
getUnsafeGetCommands()
This method must return a list of unsafe GET commands.
showAssignPasswordForm(ilPropertyFormGUI $form=null, string $pwassist_id='')
Assign password form.
submitAssignPasswordForm()
Reads the submitted data from the password assistance form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a property form user interface.
class ilRbacReview Contains Review functions of core Rbac.
static isPasswordValidForUserContext(string $clear_text_password, $user, ?string &$error_language_variable=null)
static getPasswordRequirementsInfo()
infotext for ilPasswordInputGUI setInfo()
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static printToGlobalTemplate($tpl)
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 stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
static appendUrlParameterString(string $a_url, string $a_par, bool $xml_style=false)
const CLIENT_ID
Definition: constants.php:41
const SYSTEM_ROLE_ID
Definition: constants.php:29
const ANONYMOUS_ROLE_ID
Definition: constants.php:28
global $DIC
Definition: feed.php:28
db_pwassist_session_destroy($pwassist_id)
destroy session
db_pwassist_session_write($pwassist_id, $maxlifetime, $user_id)
Writes serialized session data to the database.
db_pwassist_session_read($pwassist_id)
This is how the factory for UI elements looks.
Definition: Factory.php:38
An entity that renders components to a string output.
Definition: Renderer.php:31
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Interface ilCtrlSecurityInterface provides ilCtrl security information.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setVariable(string $variable, $value='')
Sets the given variable to the given value.
if( $orgName !==null) if($spconfig->hasValue('contacts')) $email
Definition: metadata.php:302
static http()
Fetches the global http state from ILIAS.
string $key
Consumer key/client ID value.
Definition: System.php:193
$url
$_SERVER['HTTP_HOST']
Definition: raiseError.php:10
$context
Definition: webdav.php:29
$message
Definition: xapiexit.php:32