Имеем таблицу категорий информационных материалов
ID | TITLE | PARENT_ID
0 | Главная | null
1 | События | 0
2 | Акции | 0
3 | Новости | 0
4 | Компания | 3
Нужно при помощи Zend_Acl гостям разрешить просматривать только
Новости компании притом так чтобы мы не получали лишних данных из БД
--
To unsubscribe, reply using "remove me" as the subject.
On 12 апр, 23:35, Александр Ильин <mecomma...@gmail.com> wrote:
> Прочитай соответствующий раздел мануала, и статьи на зендфреймворк.ру
>
> 12 апреля 2010 г. 22:01 пользователь Зуфар Самигуллин
> <profb...@gmail.com>написал:
Zend_Acl это только инструмент, всю логику вы должны сами реализовать используя его. Никакой готовый инструмент за вас этого не сделает, так как интелектом не обладает, и запросы к базе в вашем коде он не поменяет.
ЗЫЖ И в чем принципиальное отличие Rbac? По моему те же яйца.
Это мне? Или для топик стартера?
Хотя в обоих случаях первая часть заявления вводит в ступор. Если уж прямо ВСЮ логику вы должны реализовать сами, тогда как следствие становится совершенно не понят нафиг нужен вообще инструмент. А когда вы поймете какую часть логики реализует обсуждаемый "инструмент", изучите его и на практике использования узнаете какие там есть узкие места - .
2010/4/12 Зуфар Самигуллин <prof...@gmail.com>:
<?php
$acl = new Zend_Acl();
...
// грузим наши роли, права и т.д., и нам в общем побоку где они хранятся и
// какой инструмент мы используем
if ($acl->isAllowed($role, 'materials/all')) {
$materials = $model->getMaterials();
} else {
$materials = $model->getNews();
}
"пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅ "пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ" пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅ "пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ"?"
пїЅпїЅпїЅпїЅпїЅпїЅ
"пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ?"
пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ/пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ. пїЅпїЅпїЅпїЅ
пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
пїЅпїЅпїЅпїЅпїЅпїЅпїЅ.
"пїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ Zend_Acl пїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅ пїЅ пїЅпїЅ - пїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅ
пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ?"
пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ, пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ.
пїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ
пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅ. пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ
пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ.
пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ.
Автор спросил "Нужно при помощи Zend_Acl гостям разрешить просматривать только Новости компании притом так чтобы мы не получали лишних данных из БД"Тщательно вчитайтесь в то что выделено жирным и подумайте как ваш кусок кода решает задачу. То есть из того куска кода что вы привели он спросил именно то, как реализовать то что у вас закомментировано / опущено:// грузим наши роли, права и т.д., и нам в общем побоку где они хранятся и
// какой инструмент мы используемНам побоку? У меня в проекте тысячи ролей и тысячи ресурсов, предлагаете загружать все данные по acl из бд каждый запрос? Памяти не хватит. Это тонкости инфраструктуры, которые могут быть успешно разрешены в рамках фреймворка.
По поводу инструментов, интерфейсов, библиотек, работы, логики приложения, даже по поводу лопаты вы вообще не понимаете, что говорите. Либо, вы абсолютно не поняли ни вопрос ни ответы на него и рассуждаете тут о чем-то другом. В связи с этим, извините, не собираюсь продолжать эту дискуссию.
$materials = $model->getNews();
приведенная вами "таблица категорий информационных материалов" чем то
напоминает "дерево сайта" :о|
Ну да, если это меню-дерево сайта, т.е. надо ограничить доступ к
пунктам меню, то для это можно использовать Zend_Navigation, который
дружит с Zend_Acl.
2Alexander Steshenko Вы уж извините что разговаривали на разных
языках, и не принимайте каждое мое высказывание как критику в свою
сторону.
--
To unsubscribe, reply using "remove me" as the subject.
(о чём речь, упрощённо таблица атрибутов)
No. | entity...| attrib.| type......
==================================
1 | news.....| name...| varchar
2 | product..| name ..| varchar
3 | news.....| author.| int (link to author)
4 | product..| price..| decimal
5 | product..| text...| text
6 | category.| name...| varchar
7 | .........| .......| .......
Имея такую структуру данных Вы можете на любой атрибут ставить
привилегии
и избавиться навсегда от if..elseif..else
Здесь Вам понадобиться написать свой инструмент для работы с данными,
я
говорю про модельку new Entity_Select('news'). Это ваша альтернатива
на
Zend_Db_Table + Zend_Db_Select, т.е собирать необходимо будет сущность
с
помощью механизма запросов. Работа с Entity_Select практически не
отличается от сути и интерфейса Zend_Db_Select. Дальше Вы уже сами
будете распоряжаться атрибутами сущности, что давать пользователю!?
Повторюсь, что технология имеет свои плюсы-минусы и для простых
смертных
она не подойдёт.
Я где-то видел у магента диаграммку на эту тему. Но реализация
модельки
у них туманное, скорее извращённое.
Желаю успехов!
--
Subscription settings: http://groups.google.com/group/ru-zend-framework/subscribe?hl=ru
On 17 апр, 10:06, Alexander Steshenko <lcfs...@gmail.com> wrote:
> А вот представить такую ситуацию что на разные атрибуты одной сущности нужны
> разные привилегии уже я не могу. Может быть пару примеров приведете из
> жизни?
Сущность product имеет атрибуты name, description, price, dealer,
comment, img и т.д. Пользователю "editor" отображать данные name,
description, и img. Пользователю "manager" отображать данные ... price
и т.д. И это всё проходит на уровне запросов к БД без Zend_Acl. Т.е.
смысл прост - отображать/редактировать цену только людям которые
отвечают за стоимость товара. Простые смертные "editor" даже не знают
о её существовании. У каждого своя часть работы.
> Насчет того что Zend_Acl ни к чему для работы с данными, тут вы правы в том
> что с Zend_Acl задачу эту решить представляется невозможным, однако проблема
> глубже - Zend_Acl пригодился бы, как представитель домена, модель
> олицетворяющая бизнес логику процессов управления правами доступа.
> Скрывающий доступ к данным каким-бы то ни было, как бы то ни было хранящимся
> и так далее.
Zend_Acl я использую только для работы с ресурсами. Хотя его можно
юзать под всё что угодно - было бы за что и имело бы своё место
> А насчет EAV... в проекте что я упомянул именно этот подход и используется,
> но я не упомянул об этом, потому что это фиолетово абсолютно. Ну вот только
> если не вешать привилегии на аттрибуты сущностей. А зачем это делать я не
> могу сходу придумать и жду примеров применения :)
Вот как раз EAV модель решает многие проблемы по работе с данными (не
побоюсь этого слова "все проблемы"), т.к. она олицетворяет мощь ORM.
Вы можете давать доступ как к атрибутам так и к самим данным. Здесь
фантазия не имеет границ. Используется, как я сказал, для контроля/
ограничения доступа к данным. Вроде бы заголовок поста так и звучит...
Желаю успехов!