Comment puis-je obtenir une sécurité au niveau de la ligne à l'aide de Zend_Db_Select
? Je peux penser à quelques options, mais elles ne semblent pas vraiment correspondre au modèle.Zend_Db_Sélectionnez la sécurité au niveau de la ligne
Disons que j'ai users
, content
, et de nombreux niveaux ACL différents. Voici une solution que j'ai pensé:
$select = $db->select()
->from('content')
->where('content_type NOT IN (?)',
Model_Content::userAllowedContentTypes()
)
->order('date DESC')
);
Mais le problème est, si vous décidez d'ajouter un autre champ pour différents types de sécurité? Donc, je pensais peut-être quelque chose comme ceci:
/**
* @var Zend_Db_Select
*/
$where = Model_Content::getWhere();
$db->select()
->from('content')
->$where()
->order('date DESC');
Mieux ... mais cela ne semble pas tout à fait correct non plus. Ce que je voudrais quelque chose de plus comme ceci:
$db->select()
->from(array('c' => 'content'))
->getPlugin(new Model_Content_Security('c'))
->order('date DESC');
Mais cela semble que je suis un peu trop près d'étendre ou de modifier la bibliothèque pour obtenir quelque chose qui pourrait déjà être là, mais je ne suis pas tout à fait le voir.
Est-ce que quelqu'un d'autre a eu ce genre de besoin, et comment l'avez-vous résolu?
Par sécurité au niveau de la ligne, je comprends la sécurité sur les opérations CRUD et vous pouvez le faire en étendant Zend_Db_Table_Row_Abstract et Zend_Db_Table_Abstract. Mais je ne suis pas sûr que vous en ayez besoin, jetez un oeil aux assertions de l'ACL, peut-être qu'ils peuvent vous aider. –