it-swarm-eu.dev

Jak obejít node_access při použití EntityFieldQuery?

Pokud s následujícím kódem nemá aktuální uživatel „přístup obejít uzel“ (viz _ node_query_node_access_alter () pro přesné ověření), dotaz zkontroluje, zda je uzel_access, i když nepoužívám „node_access“ "značka.

Jak se mohu vyhnout kontrole node_access pomocí následujícího dotazu pro uživatele, který není administrátorem?

Používám tento kód z modulu, takže si mohu ověřit oprávnění sám, bez nutnosti kontroly node_access.

  $query = new EntityFieldQuery;
  $result = $query
    ->entityCondition('entity_type', 'node')
    ->entityCondition('bundle', 'foo')
    ->fieldCondition('custom_id', 'value', $custom_id)
    ->execute();
11
Weboide

Drupal 7.15 vám umožní obejít přístup na uzlu.

Další informace viz DANGEROUS_ACCESS_CHECK_OPT_OUT značka dotazu přidaná do EntityFieldQuery .

Do EntityFieldQuery byla přidána značka dotazu „DANGEROUS_ACCESS_CHECK_OPT_OUT“, aby bylo možné obejít kontroly přístupu. Dříve byly dotazy prováděné prostřednictvím EntityFieldQuery vždy změněny přístupovým systémem uzlů, což potenciálně způsobilo neočekávané chování a ztrátu dat.

Pokud potřebujete obejít kontroly přístupu v interním dotazu v rozhraní API vašeho modulu, můžete přidat tuto značku, ale měli byste tak učinit pouze v případě potřeby. Pokud je tato značka dotazu přidána k dotazu, jehož výsledky se uživateli zobrazí, obejde všechny kontroly přístupu a potenciálně odhalí citlivé informace.

function MYMODULE_field_query($field) {
  $query = new EntityFieldQuery();
  return $query
    ->fieldCondition($field)
    ->addTag('DANGEROUS_ACCESS_CHECK_OPT_OUT')
    ->execute();
}
26
user9221

Odpověď zní, že nemůžete.

Jediné řešení, které si mohu představit, je přidat metadata account:

$query = new EntityFieldQuery;
$result = $query
  ->entityCondition('entity_type', 'node')
  ->entityCondition('bundle', 'foo')
  ->fieldCondition('custom_id', 'value', $custom_id)
  ->addMetaData('account', user_load(1))
  ->execute();

ÚPRAVA: Jako součást vydání zabezpečení Drupal 7,15) byla přidána možnost DANGEROUS_ACCESS_CHECK_OPT_OUT.

10
Damien Tournoud