/**
  * Get Permissions for the given Group ID
  * @param $groupId
  *
  * @return array
  */
 public function getGroupPrivileges($groupId)
 {
     $getPrivileges = function () use($groupId) {
         return (array) $this->fetchGroupPrivileges($groupId);
     };
     return $this->memcache->getOrCache(MemcacheProvider::getKeyDirectusGroupPrivileges($groupId), $getPrivileges, 1800);
 }
Exemple #2
0
 /**
  * Construct Acl provider
  * @return \Directus\Acl
  */
 private static function acl()
 {
     $acl = new acl();
     $db = self::get('ZendDb');
     $DirectusTablesTableGateway = new DirectusTablesTableGateway($acl, $db);
     $getTables = function () use($DirectusTablesTableGateway) {
         return $DirectusTablesTableGateway->select()->toArray();
     };
     $tableRecords = $DirectusTablesTableGateway->memcache->getOrCache(MemcacheProvider::getKeyDirectusTables(), $getTables, 1800);
     $magicOwnerColumnsByTable = array();
     foreach ($tableRecords as $tableRecord) {
         if (!empty($tableRecord['user_create_column'])) {
             $magicOwnerColumnsByTable[$tableRecord['table_name']] = $tableRecord['user_create_column'];
         }
     }
     $acl::$cms_owner_columns_by_table = $magicOwnerColumnsByTable;
     if (AuthProvider::loggedIn()) {
         $currentUser = AuthProvider::getUserInfo();
         $Users = new DirectusUsersTableGateway($acl, $db);
         $cacheFn = function () use($currentUser, $Users) {
             return $Users->find($currentUser['id']);
         };
         $cacheKey = MemcacheProvider::getKeyDirectusUserFind($currentUser['id']);
         $currentUser = $Users->memcache->getOrCache($cacheKey, $cacheFn, 10800);
         if ($currentUser) {
             $Privileges = new DirectusPrivilegesTableGateway($acl, $db);
             $getPrivileges = function () use($currentUser, $Privileges) {
                 return (array) $Privileges->fetchGroupPrivileges($currentUser['group']);
             };
             $groupPrivileges = $Privileges->memcache->getOrCache(MemcacheProvider::getKeyDirectusGroupPrivileges($currentUser['group']), $getPrivileges, 1800);
             $acl->setGroupPrivileges($groupPrivileges);
         }
     }
     return $acl;
 }