19 declare(strict_types=1);
49 $this->
lng = $DIC->language();
50 $this->
lng->loadLanguageModule(
"rbac");
51 $this->
ctrl = $DIC->ctrl();
52 $this->obj = $a_gui_obj->getObject();
53 $this->review = $DIC->rbac()->review();
54 $this->admin = $DIC->rbac()->admin();
55 $this->tpl = $DIC->ui()->mainTemplate();
58 $this->base_permissions[$p[
"ops_id"]] = $p[
"operation"];
59 $this->base_permissions_by_op[$p[
"operation"]] = $p[
"ops_id"];
62 $this->base_roles = $this->review->getParentRoleIds($this->obj->getRefId());
71 foreach ($this->base_roles as $k =>
$r) {
72 $ops = $this->review->getActiveOperationsOfRole($this->obj->getRefId(), (
int)
$r[
"rol_id"]);
75 if (!in_array($o, $ops)) {
80 if (in_array($o, $ops)) {
96 if (is_array($a_val)) {
97 foreach ($a_val as $p) {
98 if (in_array($p, $this->base_permissions)) {
99 $this->role_required_permissions[] = $this->base_permissions_by_op[$p];
120 if (is_array($a_val)) {
121 foreach ($a_val as $p) {
122 if (in_array($p, $this->base_permissions)) {
123 $this->role_prohibited_permissions[] = $this->base_permissions_by_op[$p];
144 if (is_array($a_val)) {
145 foreach ($a_val as $p) {
146 if (in_array($p, $this->base_permissions)) {
147 $this->permissions[$this->base_permissions_by_op[$p]] = $p;
167 $cmd = $this->
ctrl->getCmd(
"showForm");
168 if (in_array($cmd, [
"showForm",
"save"])) {
179 $this->tpl->setContent($form->getHTML());
190 foreach ($roles as
$r) {
191 $ops[(
int) $r[
"rol_id"]] = $this->review->getActiveOperationsOfRole($this->obj->getRefId(), (
int) $r[
"rol_id"]);
196 foreach ($ops as $r => $o2) {
197 foreach ($o2 as $o) {
198 $perm_roles[$o][] =
$r;
207 foreach ($roles as $k => $r) {
209 $cb->addOption($option);
211 if (isset($perm_roles[$this->base_permissions_by_op[$p]])) {
212 $cb->setValue($perm_roles[$this->base_permissions_by_op[$p]]);
217 $form->addCommandButton(
"save", $this->
lng->txt(
"save"));
219 $form->setTitle($this->
lng->txt(
"rbac_permissions"));
220 $form->setFormAction($this->
ctrl->getFormAction($this));
230 if ($form->checkInput()) {
233 $ops = $this->review->getActiveOperationsOfRole($this->obj->getRefId(),
$r[
"rol_id"]);
236 $this->admin->revokePermission($this->obj->getRefId(),
$r[
"rol_id"]);
240 $roles = $form->getInput($p);
241 if (!is_array($roles)) {
244 $o = $this->base_permissions_by_op[$p];
247 if (in_array($o, $ops) && !in_array(
$r[
"rol_id"], $roles)) {
248 if (($key = array_search($o, $ops)) !==
false) {
254 if (!in_array($o, $ops) && in_array(
$r[
"rol_id"], $roles)) {
259 $this->admin->grantPermission(
262 $this->obj->getRefId()
266 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"msg_obj_modified"),
true);
267 $this->
ctrl->redirect($this,
"");
269 $form->setValuesByPost();
270 $this->tpl->setContent($form->getHTML());
UI class for handling permissions that can be configured having the write permission for an object...
setPermissions(array $a_val)
Set permissions.
This class represents an option in a checkbox group.
determineRoles()
Determine roles.
initPermissionForm()
Init permission form.
ilGlobalTemplateInterface $tpl
static _getOperationList(string $a_type='')
get operation list by object type
array $role_prohibited_permissions
static _getTranslation(string $a_role_title)
array $base_permissions_by_op
setRoleRequiredPermissions(array $a_val)
Set role required permissions (this permissions are required for a role to be listed) ...
getRoleProhibitedPermissions()
Get role prohibited permissions.
getRoleRequiredPermissions()
Get role required permissions.
__construct(object $a_gui_obj)
getPermissions()
Get permissions.
Class ilRbacAdmin Core functions for role based access control.
executeCommand()
Execute command.
setRoleProhibitedPermissions(array $a_val)
Set role prohibited permissions (this permissions are prohibited for a role to be listed) ...
array $role_required_permissions