57 $ilCtrl = $DIC[
'ilCtrl'];
59 $ilTabs = $DIC[
'ilTabs'];
61 $this->ctrl = $ilCtrl;
62 $this->access = $DIC[
'ilAccess'];
63 $this->tabs_gui = $ilTabs;
65 $this->lng->loadLanguageModule(
'shib');
68 $this->ref_id = $a_auth_ref_id;
81 $ilAccess = $DIC[
'ilAccess'];
83 $ilCtrl = $DIC[
'ilCtrl'];
84 $next_class = $this->ctrl->getNextClass($this);
85 $cmd = $this->ctrl->getCmd();
86 if (!$ilAccess->checkAccess(
'read',
'', $this->ref_id)) {
87 $ilErr->raiseError($this->lng->txt(
'msg_no_perm_read'),
$ilErr->WARNING);
89 if (!$ilAccess->checkAccess(
'write',
'', $this->ref_id) && $cmd !=
"settings") {
91 $ilCtrl->redirect($this,
"settings");
94 switch ($next_class) {
110 $rbacreview = $DIC[
'rbacreview'];
111 $this->tabs_gui->setSubTabActive(
'shib_settings');
113 $settings = $this->
ilias->getAllSettings();
115 $role_list = $rbacreview->getRolesByFilter(2);
117 if (!isset($settings[
"shib_user_default_role"])) {
118 $settings[
"shib_user_default_role"] = 4;
120 if (!isset($settings[
"shib_idp_list"]) || $settings[
"shib_idp_list"] ==
'') {
121 $settings[
"shib_idp_list"] =
"urn:mace:organization1:providerID, Example Organization 1\nurn:mace:organization2:providerID, Example Organization 2, /Shibboleth.sso/WAYF/SWITCHaai";
123 if (!isset($settings[
"shib_login_button"]) || $settings[
"shib_login_button"] ==
'') {
124 $settings[
"shib_login_button"] =
"templates/default/images/shib_login_button.png";
126 if (!isset($settings[
"shib_hos_type"]) || $settings[
"shib_hos_type"] ==
'') {
127 $settings[
"shib_hos_type"] =
'internal_wayf';
129 foreach ($role_list as
$data) {
130 $role[$data[
"obj_id"]] = $data[
"title"];
133 $shib_settings = array(
150 'shib_matriculation',
153 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
155 $propertys->setTitle($this->lng->txt(
"shib"));
156 $propertys->setFormAction($this->ctrl->getFormAction($this,
"save"));
158 if ($this->access->checkAccess(
'write',
'', $this->ref_id)) {
159 $propertys->addCommandButton(
"save", $this->lng->txt(
"save"));
162 $propertys->addCommandButton(
"settings", $this->lng->txt(
"cancel"));
165 $enable->setTitle($this->lng->txt(
"shib_active"));
166 $read_me_link =
"./Services/AuthShibboleth/README.SHIBBOLETH.txt";
167 $info =
"<a href='" . $read_me_link .
"' target='_blank'>" . $this->lng->txt(
"auth_shib_instructions") .
"</a>";
168 $enable->setInfo($info);
169 $enable->setPostVar(
"shib[active]");
170 $enable->setChecked($settings[
"shib_active"]);
173 $local->setTitle($this->lng->txt(
"auth_allow_local"));
174 $local->setPostVar(
"shib[auth_allow_local]");
175 $local->setChecked($settings[
'shib_auth_allow_local']);
178 $defaultrole->setTitle($this->lng->txt(
"shib_user_default_role"));
179 $defaultrole->setPostVar(
"shib[user_default_role]");
180 $defaultrole->setOptions($role);
181 $defaultrole->setRequired(
true);
182 $defaultrole->setValue($settings[
"shib_user_default_role"]);
184 $activate_new =
new ilCheckboxInputGUI($this->lng->txt(
"shib_activate_new"),
"shib[activate_new]");
185 $activate_new->
setInfo($this->lng->txt(
"shib_activate_new_info"));
186 $activate_new->setChecked($settings[
"shib_activate_new"]);
189 $name->setTitle($this->lng->txt(
"shib_federation_name"));
190 $name->setPostVar(
"shib[federation_name]");
192 $name->setMaxLength(50);
193 $name->setRequired(
true);
194 $name->setValue(stripslashes($settings[
"shib_federation_name"]));
196 include_once(
"./Services/Form/classes/class.ilRadioGroupInputGUI.php");
197 include_once(
"./Services/Form/classes/class.ilRadioOption.php");
199 $organize->setTitle($this->lng->txt(
"shib_login_type"));
200 $organize->setPostVar(
"shib[hos_type]");
201 $organize->setRequired(
true);
202 $organize->setValue($settings[
"shib_hos_type"]);
205 $internalwayf->setTitle($this->lng->txt(
"shib_login_internal_wayf"));
206 $internalwayf->setValue(
"internal_wayf");
209 $idplist->setInfo($this->lng->txt(
"shib_idp_list"));
210 $idplist->setPostVar(
"shib[idp_list]");
211 $idplist->setRows(3);
212 $idplist->setCols(50);
213 $idplist->setValue($settings[
"shib_idp_list"]);
216 $externalwayf->setTitle($this->lng->txt(
"shib_login_external_wayf"));
217 $externalwayf->setValue(
"external_wayf");
220 $loginbutton->setInfo($this->lng->txt(
"shib_login_button"));
221 $loginbutton->setPostVar(
"shib[login_button]");
222 $loginbutton->setSize(50);
223 $loginbutton->setMaxLength(255);
224 $loginbutton->setValue($settings[
"shib_login_button"]);
227 $embeddedwayf->setTitle($this->lng->txt(
"shib_login_embedded_wayf"));
228 $embeddedwayf->setInfo($this->lng->txt(
"shib_login_embedded_wayf_description"));
229 $embeddedwayf->setValue(
"embedded_wayf");
232 $logininstruction->setTitle($this->lng->txt(
"auth_login_instructions"));
233 $logininstruction->setPostVar(
"shib[login_instructions]");
234 $logininstruction->setRows(3);
235 $logininstruction->setCols(50);
236 $logininstruction->setValue(stripslashes($settings[
"shib_login_instructions"]));
239 $dataconv->setTitle($this->lng->txt(
"shib_data_conv"));
240 $dataconv->setPostVar(
"shib[data_conv]");
241 $dataconv->setSize(80);
242 $dataconv->setMaxLength(512);
243 $dataconv->setValue($settings[
"shib_data_conv"]);
246 foreach ($shib_settings as $setting) {
247 $field = str_replace(
'shib_',
'', $setting);
249 $textinput->setTitle($this->lng->txt($setting));
250 $textinput->setPostVar(
"shib[" . $field .
"]");
251 $textinput->setValue($settings[$setting]);
252 $textinput->setSize(40);
253 $textinput->setMaxLength(50);
255 $checkinput->setOptionTitle($this->lng->txt(
"shib_update"));
256 $checkinput->setPostVar(
"shib[update_" . $field .
"]");
257 $checkinput->setChecked($settings[
"shib_update_" . $field]);
258 if ($setting ==
'shib_login' || $setting ==
'shib_firstname' 259 || $setting ==
'shib_lastname' 260 || $setting ==
'shib_email' 262 $textinput->setRequired(
true);
264 $fields[$setting] = array(
"text" => $textinput,
"check" => $checkinput );
266 $propertys->addItem($enable);
267 $propertys->addItem($local);
268 $propertys->addItem($activate_new);
269 $propertys->addItem($defaultrole);
270 $propertys->addItem(
$name);
271 $internalwayf->addSubItem($idplist);
272 $organize->addOption($internalwayf);
273 $externalwayf->addSubItem($loginbutton);
274 $organize->addOption($externalwayf);
275 $organize->addOption($embeddedwayf);
276 $propertys->addItem($organize);
277 $propertys->addItem($logininstruction);
278 $propertys->addItem($dataconv);
279 foreach ($shib_settings as $setting) {
280 $propertys->addItem($fields[$setting][
"text"]);
281 if ($setting !=
"shib_login") {
282 $propertys->addItem($fields[$setting][
"check"]);
285 $this->tpl->setContent($propertys->getHTML());
291 $required = array(
"login",
"hos_type",
"firstname",
"lastname",
"email",
"user_default_role",
"federation_name");
292 array_walk($required,
function (&$item) {
293 if (!
$_POST[
"shib"][$item]) {
295 $this->ctrl->redirect($this,
'settings');
300 if (
$_POST[
"shib"][
"data_conv"] &&
$_POST[
"shib"][
"data_conv"] !=
'' && !is_readable(
$_POST[
"shib"][
"data_conv"])) {
302 $this->ctrl->redirect($this,
'settings');
305 $shib_settings = array(
324 foreach ($shib_settings as $setting) {
325 $field = str_replace(
'shib_',
'', $setting);
326 if (
$_POST[
"shib"][
"update_" . $field] !=
"1") {
327 $_POST[
"shib"][
"update_" . $field] =
"0";
329 $this->
ilias->setSetting($setting, trim(
$_POST[
"shib"][$field]));
330 $this->
ilias->setSetting(
"shib_update_" . $field,
$_POST[
"shib"][
"update_" . $field]);
332 if (
$_POST[
"shib"][
"active"] !=
"1") {
333 $this->
ilias->setSetting(
"shib_active",
"0");
334 $this->
ilias->setSetting(
"shibboleth_active",
"0");
336 $this->
ilias->setSetting(
"shib_active",
"1");
337 $this->
ilias->setSetting(
"shibboleth_active",
"1");
339 $this->
ilias->setSetting(
"shib_user_default_role",
$_POST[
"shib"][
"user_default_role"]);
340 $this->
ilias->setSetting(
"shib_hos_type",
$_POST[
"shib"][
"hos_type"]);
341 $this->
ilias->setSetting(
"shib_federation_name",
$_POST[
"shib"][
"federation_name"]);
342 $this->
ilias->setSetting(
"shib_idp_list",
$_POST[
"shib"][
"idp_list"]);
343 $this->
ilias->setSetting(
"shib_login_instructions",
$_POST[
"shib"][
"login_instructions"]);
344 $this->
ilias->setSetting(
"shib_login_button",
$_POST[
"shib"][
"login_button"]);
345 $this->
ilias->setSetting(
"shib_data_conv",
$_POST[
"shib"][
"data_conv"]);
346 $this->
ilias->setSetting(
"shib_auth_allow_local", (
$_POST[
'shib'][
'auth_allow_local'] ==
'1') ?
'1' :
'0');
347 $this->
ilias->setSetting(
"shib_activate_new", (
$_POST[
'shib'][
'activate_new'] ==
'1') ?
'1' :
'0');
349 ilUtil::sendSuccess($this->lng->txt(
"shib_settings_saved"),
true);
350 $this->ctrl->redirect($this,
'settings');
356 $this->tabs_gui->setSubTabActive(
'shib_role_assignment');
358 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.shib_role_assignment.html',
'Services/AuthShibboleth');
359 $this->tpl->setVariable(
'NEW_RULE_TABLE', $this->form->getHTML());
361 $this->tpl->setVariable(
'RULE_TABLE', $html);
370 include_once(
'./Services/AuthShibboleth/classes/class.ilShibbolethRoleAssignmentRules.php');
374 include_once(
'./Services/AuthShibboleth/classes/class.ilShibbolethRoleAssignmentTableGUI.php');
376 $rules_table->setTitle($this->lng->txt(
'shib_rules_tables'));
377 $rules_table->parse(ilShibbolethRoleAssignmentRules::getAllRules());
378 $rules_table->addMultiCommand(
"confirmDeleteRules", $this->lng->txt(
"delete"));
379 $rules_table->setSelectAllCheckbox(
"rule_id");
381 return $rules_table->getHTML();
395 if (!is_array(
$_POST[
'rule_ids'])) {
401 $this->tabs_gui->setSubTabActive(
'shib_role_assignment');
402 include_once(
"Services/Utilities/classes/class.ilConfirmationGUI.php");
405 $c_gui->setFormAction($this->ctrl->getFormAction($this,
"deleteRules"));
406 $c_gui->setHeaderText($this->lng->txt(
"shib_confirm_del_role_ass"));
407 $c_gui->setCancel($this->lng->txt(
"cancel"),
"roleAssignment");
408 $c_gui->setConfirm($this->lng->txt(
"confirm"),
"deleteRules");
410 include_once(
'Services/AuthShibboleth/classes/class.ilShibbolethRoleAssignmentRule.php');
411 foreach (
$_POST[
"rule_ids"] as $rule_id) {
415 $info .= $rule->conditionToString();
417 $c_gui->addItem(
'rule_ids[]', $rule_id, $info);
419 $this->tpl->setContent($c_gui->getHTML());
431 if (!is_array(
$_POST[
'rule_ids'])) {
437 include_once(
'Services/AuthShibboleth/classes/class.ilShibbolethRoleAssignmentRule.php');
438 foreach (
$_POST[
"rule_ids"] as $rule_id) {
442 ilUtil::sendSuccess($this->lng->txt(
'shib_deleted_rule'));
451 include_once(
'./Services/Form/classes/class.ilPropertyFormGUI.php');
453 $this->form->setFormAction($this->ctrl->getFormAction($this,
'cancel'));
454 $this->form->setTitle($this->lng->txt(
'shib_role_ass_table'));
455 if ($a_mode ==
'default') {
456 $this->form->setTitle($this->lng->txt(
'shib_role_ass_table'));
457 $this->form->addCommandButton(
'addRoleAssignmentRule', $this->lng->txt(
'shib_new_rule'));
458 $this->form->addCommandButton(
'settings', $this->lng->txt(
'cancel'));
460 $this->form->setTitle($this->lng->txt(
'shib_update_role_ass_table'));
461 $this->form->addCommandButton(
'updateRoleAssignmentRule', $this->lng->txt(
'save'));
462 $this->form->addCommandButton(
'roleAssignment', $this->lng->txt(
'cancel'));
467 $global =
new ilRadioOption($this->lng->txt(
'shib_global_role'), 0);
468 $role->addOption($global);
471 $global->addSubItem($role_select);
472 $local =
new ilRadioOption($this->lng->txt(
'shib_local_role'), 1);
473 $role->addOption($local);
474 include_once
'./Services/Form/classes/class.ilRoleAutoCompleteInputGUI.php';
476 $role_search->setSize(40);
477 $local->addSubItem($role_search);
478 include_once
'./Services/AccessControl/classes/class.ilRoleAutoComplete.php';
479 $role->setInfo($this->lng->txt(
'shib_role_name_info'));
480 $this->form->addItem($role);
483 $update->
setValue($this->lng->txt(
'shib_check_role_assignment'));
485 $add->setOptionTitle($this->lng->txt(
'shib_add_missing'));
487 $update->addSubItem($add);
489 $remove->setOptionTitle($this->lng->txt(
'shib_remove_deprecated'));
490 $remove->setValue(1);
491 $update->addSubItem($remove);
492 $this->form->addItem($update);
496 $kind->setRequired(
true);
497 $attr =
new ilRadioOption($this->lng->txt(
'shib_attribute'), 1);
498 $attr->
setInfo($this->lng->txt(
'shib_attr_info'));
501 $attr->addSubItem(
$name);
502 $value =
new ilTextInputGUI($this->lng->txt(
'shib_attribute_value'),
'attr_value');
504 $attr->addSubItem($value);
505 $kind->addOption($attr);
508 $pl->
setInfo($this->lng->txt(
'shib_plugin_info'));
509 $pl->setDisabled(!$pl_active);
513 $id->setMaxLength(3);
514 $id->setMaxValue(999);
516 $pl->addSubItem($id);
517 $kind->addOption($pl);
518 $this->form->addItem($kind);
527 include_once(
"./Services/Form/classes/class.ilRoleAutoCompleteInputGUI.php");
535 $ilAccess = $DIC[
'ilAccess'];
537 if (!$ilAccess->checkAccess(
'write',
'', $this->ref_id)) {
544 if (!$this->form->checkInput() or ($err = $this->
checkInput())) {
548 $this->tabs_gui->setSubTabActive(
'shib_role_assignment');
549 $this->form->setValuesByPost();
550 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.shib_role_assignment.html',
'Services/AuthShibboleth');
551 $this->tpl->setVariable(
'NEW_RULE_TABLE', $this->form->getHTML());
553 $this->tpl->setVariable(
'RULE_TABLE', $html);
561 ilUtil::sendSuccess($this->lng->txt(
'settings_saved'));
575 $this->ctrl->setParameter($this,
'rule_id', (
int)
$_GET[
'rule_id']);
576 $this->tabs_gui->setSubTabActive(
'shib_role_assignment');
579 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.shib_role_assignment.html',
'Services/AuthShibboleth');
580 $this->tpl->setVariable(
'NEW_RULE_TABLE', $this->form->getHTML());
589 $ilAccess = $DIC[
'ilAccess'];
591 if (!$ilAccess->checkAccess(
'write',
'', $this->ref_id)) {
598 if (!$this->form->checkInput() or ($err = $this->
checkInput((
int) $_REQUEST[
'rule_id']))) {
602 $this->tabs_gui->setSubTabActive(
'shib_role_assignment');
603 $this->form->setValuesByPost();
604 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.shib_role_assignment.html',
'Services/AuthShibboleth');
605 $this->tpl->setVariable(
'NEW_RULE_TABLE', $this->form->getHTML());
610 $this->rule->update();
611 ilUtil::sendSuccess($this->lng->txt(
'settings_saved'));
620 include_once(
'./Services/AuthShibboleth/classes/class.ilShibbolethRoleAssignmentRule.php');
622 if ($this->form->getInput(
'role_name') == 0) {
623 $this->rule->setRoleId($this->form->getInput(
'role_id'));
624 } elseif ($this->form->getInput(
'role_search')) {
626 include_once
'./Services/Search/classes/class.ilQueryParser.php';
627 $parser =
new ilQueryParser($this->form->getInput(
'role_search'));
632 include_once
'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
634 $object_search->setFilter(array(
'role' ));
635 $res = $object_search->performSearch();
636 $entries =
$res->getEntries();
637 if (count($entries) == 1) {
638 $role = current($entries);
639 $this->rule->setRoleId($role[
'obj_id']);
640 } elseif (count($entries) > 1) {
641 $this->rule->setRoleId(-1);
644 $this->rule->setName($this->form->getInput(
'attr_name'));
645 $this->rule->setValue($this->form->getInput(
'attr_value'));
646 $this->rule->enableAddOnUpdate($this->form->getInput(
'add_missing'));
647 $this->rule->enableRemoveOnUpdate($this->form->getInput(
'remove_deprecated'));
648 $this->rule->enablePlugin($this->form->getInput(
'kind') == 2);
649 $this->rule->setPluginId($this->form->getInput(
'plugin_id'));
658 $rbacreview = $DIC[
'rbacreview'];
659 include_once
'./Services/AuthShibboleth/classes/class.ilShibbolethRoleAssignmentRule.php';
661 $role = $rule->getRoleId();
662 if ($rbacreview->isGlobalRole($role)) {
663 $values[
'role_name'] = 0;
664 $values[
'role_id'] = $role;
666 $values[
'role_name'] = 1;
669 $values[
'add_missing'] = (int) $rule->isAddOnUpdateEnabled();
670 $values[
'remove_deprecated'] = (int) $rule->isRemoveOnUpdateEnabled();
671 $values[
'attr_name'] = $rule->getName();
672 $values[
'attr_value'] = $rule->getValue();
673 if (!$rule->isPluginActive()) {
677 $values[
'plugin_id'] = $rule->getPluginId();
679 $this->form->setValuesByArray($values);
687 return $this->rule->validate();
693 if ($this->rule->getRoleId() > 0) {
696 $_SESSION[
'shib_role_ass'][
'rule_id'] = $_REQUEST[
'rule_id'] ? $_REQUEST[
'rule_id'] : 0;
697 $_SESSION[
'shib_role_ass'][
'search'] = $this->form->getInput(
'role_search');
698 $_SESSION[
'shib_role_ass'][
'add_on_update'] = $this->rule->isAddOnUpdateEnabled();
699 $_SESSION[
'shib_role_ass'][
'remove_on_update'] = $this->rule->isRemoveOnUpdateEnabled();
700 $_SESSION[
'shib_role_ass'][
'name'] = $this->rule->getName();
701 $_SESSION[
'shib_role_ass'][
'value'] = $this->rule->getValue();
702 $_SESSION[
'shib_role_ass'][
'plugin'] = $this->rule->isPluginActive();
703 $_SESSION[
'shib_role_ass'][
'plugin_id'] = $this->rule->getPluginId();
704 $this->ctrl->redirect($this,
'chooseRole');
710 $this->tabs_gui->setSubTabActive(
'shib_role_assignment');
711 include_once
'./Services/Search/classes/class.ilQueryParser.php';
713 $parser->setMinWordLength(1,
true);
716 include_once
'Services/Search/classes/Like/class.ilLikeObjectSearch.php';
718 $object_search->setFilter(array(
'role' ));
719 $res = $object_search->performSearch();
720 $entries =
$res->getEntries();
721 include_once
'./Services/AccessControl/classes/class.ilRoleSelectionTableGUI.php';
723 $table->setTitle($this->lng->txt(
'shib_role_selection'));
724 $table->addMultiCommand(
'saveRoleSelection', $this->lng->txt(
'shib_choose_role'));
725 $table->addCommandButton(
'roleAssignment', $this->lng->txt(
'cancel'));
726 $table->parse($entries);
727 $this->tpl->setContent($table->getHTML());
736 $rule->setRoleId((
int)
$_POST[
'role_id']);
737 $rule->setName(
$_SESSION[
'shib_role_ass'][
'name']);
738 $rule->setValue(
$_SESSION[
'shib_role_ass'][
'value']);
739 $rule->enablePlugin(
$_SESSION[
'shib_role_ass'][
'plugin']);
740 $rule->setPluginId(
$_SESSION[
'shib_role_ass'][
'plugin_id']);
741 $rule->enableAddOnUpdate(
$_SESSION[
'shib_role_ass'][
'add_on_update']);
742 $rule->enableRemoveOnUpdate(
$_SESSION[
'shib_role_ass'][
'remove_on_update']);
743 if ($rule->getRuleId()) {
748 ilUtil::sendSuccess($this->lng->txt(
'settings_saved'));
762 $ilPluginAdmin = $DIC[
'ilPluginAdmin'];
764 return count($ilPluginAdmin->getActivePluginsForSlot(
IL_COMP_SERVICE,
'AuthShibboleth',
'shibhk'));
771 $rbacreview = $DIC[
'rbacreview'];
772 $ilObjDataCache = $DIC[
'ilObjDataCache'];
773 $global_roles =
ilUtil::_sortIds($rbacreview->getGlobalRoles(),
'object_data',
'title',
'obj_id');
774 $select[0] = $this->lng->txt(
'links_select_one');
775 foreach ($global_roles as $role_id) {
787 include_once
'./Services/AuthShibboleth/classes/class.ilShibbolethRoleAssignmentRules.php';
792 $this->tabs_gui->addSubTabTarget(
'shib_settings', $this->ctrl->getLinkTarget($this,
'settings'));
793 $this->tabs_gui->addSubTabTarget(
'shib_role_assignment', $this->ctrl->getLinkTarget($this,
'roleAssignment'));
This class represents an option in a radio group.
Class ilAuthShibbolethSettingsGUI.
setValue($a_value)
Set Value.
updateRoleAssignmentRule()
executeCommand()
Execute Command.
confirmDeleteRules()
Confirm delete rules.
deleteRules()
delete role assignment rule
hasActiveRoleAssignmentPlugins()
Check if plugin is active.
static _lookupTitle($a_id)
lookup object title
setInfo($a_info)
Set Info.
editRoleAssignment()
Edit Role Assignment.
__construct($a_auth_ref_id)
foreach($_POST as $key=> $value) $res
static _sortIds($a_ids, $a_table, $a_field, $a_id_name)
Function that sorts ids by a given table field using WHERE IN E.g: __sort(array(6,7),'usr_data','lastname','usr_id') => sorts by lastname.
static _lookupObjId($a_id)
redirection script todo: (a better solution should control the processing via a xml file) ...
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
prepareRoleSelect($a_as_select=true)
This class represents a non editable value in a property form.
This class represents a text area property in a property form.
const QP_COMBINATION_AND
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setMinWordLength($a_length, $a_force=false)
Shibboleth role assignment rule.
initFormRoleAssignment($a_mode='default')
Confirmation screen class.
addRoleAutoCompleteObject()
Add Member for autoComplete.