Overview

Namespaces

  • App
    • Components
    • Interfaces
    • Lib
      • Files
      • Forms
        • Controls
      • Html
      • Repair
      • Statics
    • Model
    • Modules
      • BaseModule
        • Presenters
      • PartnersModule
        • Presenters
      • ProductModule
        • Presenters
      • SaleModule
        • Model
        • Presenters
      • SettingsModule
        • Model
        • Presenters
      • StoreModule
        • Model
        • Presenters
    • Presenters
    • Router
  • PHP

Classes

  • DateTime
  • SplFileInfo

Interfaces

  • ArrayAccess
  • Countable
  • Exception
  • Iterator
  • Traversable
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Download
  1: <?php
  2: 
  3: /**
  4:  * Project sberp
  5:  *
  6:  * @file Acl 
  7:  * @author Jaromír Polášek
  8:  * @version 0.6.7.ACL
  9:  * Encoding UTF-8
 10:  */
 11: 
 12: namespace App\Model;
 13: 
 14: use Nette\Security\IAuthorizator;
 15: 
 16: /**
 17:  * Ověřuje práva Role na požadovaný objekt
 18:  */
 19: class Acl extends Permission implements IAuthorizator {
 20: 
 21:     /**
 22:      * Zadaná Role
 23:      * @var array
 24:      */
 25:     private $queriedRole;
 26: 
 27:     /**
 28:      * Zadaný Zdroj
 29:      * @var type 
 30:      */
 31:     private $queriedResource;
 32: 
 33:     /**
 34:      * Konstruktor volá konstruktor předka Permission
 35:      * @param \App\Model\Database $database
 36:      */
 37:     public function __construct(Database $database, Roles $roles, Resources $resources) {
 38:     parent::__construct($database, $roles, $resources);
 39:     }
 40:     
 41:     /**
 42:      * Ověření přístupová práva uživatele a vrátí výsledek
 43:      * @param type $role Název Role
 44:      * @param type $resource Název zdroje
 45:      * @param type $privilege Název Oprávnění
 46:      * @return boolean
 47:      */
 48:     public function isAllowed($role, $resource, $privilege) {
 49:     if (!$this->setQueried($role, $resource)){
 50:         return False;
 51:     }
 52:     $result = $this->searchResourceRole($resource, $role, $privilege);
 53:     $this->queriedResource = $this->queriedRole = NULL;
 54:     return ($result !== NULL)? $result : FALSE;
 55:     }
 56:     /**
 57:      * Vrátí roli ze zásobníku
 58:      * @return array
 59:      */
 60:     public function getQueriedRole() {
 61:     return $this->queriedRole;
 62:     }
 63:     /**
 64:      * Vrátí Zdroj ze zásobníku
 65:      * @return array
 66:      */
 67:     public function getQueriedResource() {
 68:     return $this->queriedResource;
 69:     }
 70:     /**
 71:      * Vrací oprávnění na základě Zdrojů a jemu podřízených zdrojů, role a jí podřízené role
 72:      * @param string $resource Název zdroje
 73:      * @param string $role Název Role
 74:      * @param string $privilege Název Oprávnění
 75:      * @return boolean|NULL
 76:      */
 77:     private function searchResourceRole($resource, $role, $privilege){
 78:     $result = $this->searchRolePrivilege($resource, $role, $privilege);
 79:     if ($result === NULL || $result === FALSE){
 80:         foreach ($this->queriedResource['childs'] as $childResource){
 81:         if(TRUE === ($result = $this->searchRolePrivilege($childResource,$role, $privilege))){
 82:             break;
 83:         }
 84:         }
 85:     }
 86:     return $result;
 87:     }
 88:     
 89:     /**
 90:      * Vrací Oprávnění na základě zdroje ,Role všech podrolí
 91:      * @param type $resource Název Zdroje
 92:      * @param type $role Název Role
 93:      * @param type $privilege Název Oprávnění
 94:      * @return type
 95:      */
 96:     private function searchRolePrivilege($resource, $role, $privilege){
 97:     $result = $this->searchPrivilege($resource, $role, $privilege);
 98:     if ($result === NULL || $result === FALSE){
 99:         $queriedRole = $this->roles->roles[$role];
100:         foreach ($queriedRole['childs'] as $childRole){
101:         if(TRUE === ($result = $this->searchRolePrivilege($resource,$childRole, $privilege))){
102:         break;
103:         }
104:         }
105:     }
106:     return $result;
107:     }
108:     
109:     /**
110:      * Vrací oprávnění na základě zdroje a role
111:      * @param string $resource Název Zdroje
112:      * @param string $role Název Role
113:      * @param string $privilege Název Oprávnění
114:      * @return boolean|NULL
115:      */
116:     private function searchPrivilege($resource, $role, $privilege){
117:     $rules = & $this->rule($resource, $role);
118:     return isset($rules[$privilege]) ? : FALSE;
119:     }
120:     
121:     /**
122:      * Ověří existenci Role a zdroje, V případě že existují. 
123:      * vloží je do zásobníku a vrátí True
124:      * @param string $role Název Role
125:      * @param string $resource Název Zdroje
126:      * @return boolean
127:      */
128:     private function setQueried($role, $resource) {
129:     if (parent::isRole($role) && parent::isResource($resource)) {
130:         $this->queriedRole = $this->roles->roles[$role];
131:         $this->queriedResource = $this->resources->resources[$resource];
132:         return TRUE;
133:     }
134:     return FALSE;
135:     }
136: }
137: 
sberp API API documentation generated by ApiGen