Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 1634

Přidáno uživatelem Ondřej Fibich před asi 12 roky(ů)

Opravy:

- dalsi opetovna snaha o opravu kontroly prav v databazi

Zobrazit rozdíly:

freenetis/branches/testing/system/libraries/ORM.php
* @param string $permission
* @return boolean
*/
public function check_permission ($permission)
public function check_permission($permission)
{
static $permissions = NULL;
static $cache = NULL;
if ($permissions == NULL)
if (!isset($cache[$permission]))
{
$cache[$permission] = false;
$db_name = Config::get('db_name');
$permissions = array();
$grants = $this->db->query("SHOW GRANTS FOR CURRENT_USER");
foreach ($this->db->query("SHOW GRANTS FOR CURRENT_USER") as $row)
foreach ($grants as $grant)
{
$values = array_values(arr::from_object ($row));
$values = array_values(arr::from_object($grant));
if ((($pos = strpos($values[0], ' ON `'.$db_name.'`.*')) === FALSE) &&
($pos = strpos($values[0], ' ON *.*')) === FALSE)
......
continue;
}
if (substr($values[0], 6, $pos-6) == 'ALL PRIVILEGES')
if (($permissions = substr($values[0], 6, $pos-6)) == 'ALL PRIVILEGES')
{
return true;
$cache[$permission] = true;
break;
}
$permissions = arr::tolower(explode(', ', $permissions));
if ($permissions == 'ALL PRIVILEGES' ||
in_array(strtolower($permission), $permissions))
if (in_array(strtolower($permission), $permissions))
{
return true;
$cache[$permission] = true;
break;
}
}
}
return false;
return $cache[$permission];
}
/**

Také k dispozici: Unified diff