32 public static function getAllRules(): array
40 $query =
"SELECT rule_id FROM shib_role_assignment ORDER BY rule_id";
53 $query =
"SELECT COUNT(*) num FROM shib_role_assignment ";
56 return (
int) ($row->num ?? 0);
63 $rbacadmin = $DIC[
'rbacadmin'];
64 $rbacreview = $DIC[
'rbacreview'];
65 $ilLog = $DIC[
'ilLog'];
66 $query =
"SELECT rule_id,add_on_update,remove_on_update FROM shib_role_assignment " .
"WHERE add_on_update = 1 OR remove_on_update = 1";
71 if ($rule->doesMatch($a_data) && $row->add_on_update) {
73 $rbacadmin->assignUser($rule->getRoleId(), $a_usr_id);
75 if (!$rule->doesMatch($a_data) && $row->remove_on_update) {
77 $rbacadmin->deassignUser($rule->getRoleId(), $a_usr_id);
81 if (!array_intersect($rbacreview->assignedRoles($a_usr_id), $rbacreview->getGlobalRoles())) {
83 $default_role =
$settings->getDefaultRole();
85 $rbacadmin->assignUser($default_role, $a_usr_id);
91 public static function doAssignments(
int $a_usr_id, array $a_data): bool
95 $rbacadmin = $DIC[
'rbacadmin'];
96 $ilLog = $DIC[
'ilLog'];
97 $query =
"SELECT rule_id,add_on_update FROM shib_role_assignment WHERE add_on_update = 1";
102 if ($rule->doesMatch($a_data)) {
105 $rbacadmin->assignUser($rule->getRoleId(), $a_usr_id);
109 if ($num_matches === 0) {
111 $default_role =
$settings->getDefaultRole();
113 $rbacadmin->assignUser($default_role, $a_usr_id);
119 public static function callPlugin(
string $a_plugin_id, array $a_user_data): bool
122 foreach ($DIC[
'component.factory']->getActivePluginsInSlot(
'shibhk') as
$plugin) {
123 if ($plugin->checkRoleAssignment($a_plugin_id, $a_user_data)) {
static doAssignments(int $a_usr_id, array $a_data)
Shibboleth role assignment rules.
static callPlugin(string $a_plugin_id, array $a_user_data)
static _lookupTitle(int $obj_id)
static updateAssignments(int $a_usr_id, array $a_data)
static array $active_plugins
Class ilShibbolethSettings.
Shibboleth role assignment rule.