Class: I2CE PermissionParser (Development)

From IHRIS Wiki


This article describes the class I2CE_PermissionParser .

Variables

$user

$template

$has_get_data

$has_get_display

$task_trickle_down

A cached array of the task trickle down data.

$task_trickle_up

The reverse of the trickle down array.

$role_trickle_up

The role_trickle_up data cached for faster access.

$role_tasks

A list of tasks given by a role.

$role_has_task

A cache of tasks a role can access for repeated checkes.

Methods

__construct()

evaluateBooleans()

getRoleHasTask()

Return the permitted value from the role/task cache.

getRoleTasks()

Return the array of tasks that are directly given by a role.

getRoleTrickleUp()

Returns the role trickle up from the shortname

hasPermission()

Check to see if a user has permission for a given role/task whatever @param string $permissions The permisisions string. Example: "role(admin) or task(can_view_page) or task(can_edit_page)" Example: "ModuleName->Method(admin) will call Method in the module ModuleName with arguemnts ('admin') Exmaple: "role(admin|staff)" is the same as "role(admin,staff)" which is the same as "role(admin) role(staff)" which is the same as "role(admin) | role(staff)" which is the same as "role(admin) or role(staff)" Example: "role(admin) or task(can_view_page) and role(staff)" is the same as "(role(admin) or task(can_view_page)) and role(staff)" i.e. parenthesis are grouped left. Note: You may reference variables, which is really template data, as a function argument or in a double quoted string. When referencing varaibles, you are allowed to include types, such as ${T1}z, but you are not allowed to do so in a doulbe quoted string. Variable names may consit of alpha-numeric character, '_', and '-'. You may protect a variable by surrounding it in {}'s Example: "func1($a,"x$a", '\' "' "x{$a}y" , "x{$ay} ${T1}z )" causes the (possbily fuzzy) method hasPermission_func1() with the following arguments: array( $this->template->getDisplayData('a',$node), 'x' . $this->template->getDisplayData('a',$node), '\' "', 'x' . $this->template->getDisplayData('ay',$node) , 'x' . $this->template->getDisplayData('a',$node) . 'y', 'x' . $this->template->getData('T1',z,$node,true,true)) There are special argument you can pass to the function which are <TEMPLATE>, <USER> and <NODE> which will be the template, user and calling node associated with this permission. Note: spaces provide an implicit comma to split arguments. Example functions: role, task which take a list or roles and task repsectively. Example function: form('person' method <USER>) -- finds the person form,relative to $node and calls $form->method($user) Example function: form(person , 'weird method;',<USER>10) -- finds the person form,relative to $node and calls $form->$method($user,10) where $method='weird method;' Example function: module('mod_name',method,arg1,...,argn) works like form but for modules

hasPermission_role()

hasPermission_task()

hasPermission_user()

hasPermsssion_module()

hasRole()

hasTask()

parsePermissionsLogic()

setRoleHasTask()

Add a task as permitted for a given role as well as all tasks it trickles down to recursively if the permission is allowed (true).

setupTrickleDown()

Set up the trickle down static array if it hasn't been set.

taskExists()

Checks to see if the given task is defined in they system

taskHasAlternateSatisfaction()

Checks to see if a given task has an alternative way of being satisfied.

Inherited Methods

_hasMethod()

This public method is inherited from I2CE_Fuzzy->_hasMethod()

Inherited Fuzzy Methods

userMessage()

This method is inherited from I2CE_Fuzzy->userMessage()

Fuzzy Methods

hasPermission_userSatisfies()

This method is implemented by iHRIS_Module_SelfService->hasPermission_userSatisfies()

hasPermission_satisfies()

This method is implemented by I2CE_Module_FormRelationshipBasedPermissions->hasPermission_satisfies()

hasPermission_form()

This method is implemented by I2CE_Module_Forms->hasPermission_form()