по Url получить namespace контроллера и название action
Re: по Url получить namespace контроллера и название action
зачем это все, если есть rbac?
"ха" потому что я выше сказал, что надо сначала было поинтересоваться в причинах маргинальности, а потом уже создавать ветку из 20ти сообщений. И выясняется, что человек пересоздает rbac, причем коряво.
"ха" потому что я выше сказал, что надо сначала было поинтересоваться в причинах маргинальности, а потом уже создавать ветку из 20ти сообщений. И выясняется, что человек пересоздает rbac, причем коряво.
Re: по Url получить namespace контроллера и название action
У меня портированная rights с первой версии. По управлению очень удобно. Осталось сделать видимость кнопок и ссылок
Re: по Url получить namespace контроллера и название action
это все делает rbacde1phi писал(а):У меня портированная rights с первой версии. По управлению очень удобно. Осталось сделать видимость кнопок и ссылок
Последний раз редактировалось zelenin 2014.12.25, 12:49, всего редактировалось 1 раз.
Re: по Url получить namespace контроллера и название action
Могли бы привести пример как с помощью rbac проверить видимость кнопкиzelenin писал(а):это все делает rbac'омde1phi писал(а):У меня портированная rights с первой версии. По управлению очень удобно. Осталось сделать видимость кнопок и ссылок
Re: по Url получить namespace контроллера и название action
de1phi писал(а):Могли бы привести пример как с помощью rbac проверить видимость кнопкиzelenin писал(а):это все делает rbac'омde1phi писал(а):У меня портированная rights с первой версии. По управлению очень удобно. Осталось сделать видимость кнопок и ссылок
Код: Выделить всё
<?= (Yii::$app->user->can('viewButton') ? Html::button() : '') ?>
Re: по Url получить namespace контроллера и название action
Ну так это требует редактирование всех вьюшек и кнопок в гридах и т.д.
У меня есть список action'ов, есть список ролей. Проще перегрузить метод отрисовки кнопки (добавить универсальную проверку на доступность), чем лопатить каждую view
У меня есть список action'ов, есть список ролей. Проще перегрузить метод отрисовки кнопки (добавить универсальную проверку на доступность), чем лопатить каждую view
Re: по Url получить namespace контроллера и название action
так перегрузите. там же все равно нужно использовать метод проверки. а это делает rbac.de1phi писал(а):Ну так это требует редактирование всех вьюшек и кнопок в гридах и т.д.
У меня есть список action'ов, есть список ролей. Проще перегрузить метод отрисовки кнопки (добавить универсальную проверку на доступность), чем лопатить каждую view
Re: по Url получить namespace контроллера и название action
не важно ГДЕ вы будете делать проверку. важно КАК.
Re: по Url получить namespace контроллера и название action
мне важно определить, какой action будет выполнен по ссылке и проверить есть ли доступ у пользователя.zelenin писал(а):не важно ГДЕ вы будете делать проверку. важно КАК.
Re: по Url получить namespace контроллера и название action
я понял. почему нельзя использовать rbac? почему стандартный механизм вам не подходит? почему нельзя дать человеку разрешение (permission) и проверять его перед рендером кнопки или открытием экшна? Зачем надо делать то же самое, только извращенным и негибким методом?de1phi писал(а):мне важно определить, какой action будет выполнен по ссылке и проверить есть ли доступ у пользователя.zelenin писал(а):не важно ГДЕ вы будете делать проверку. важно КАК.
Re: по Url получить namespace контроллера и название action
да используется почти стандартный механизм, только в качестве имен permission'ов используется вид controllerNamespace::actionName. Это позволяет автоматически генерировать permission'ы,а не забивать их вручную, тем более это точно гарантирует, что они все будут различные Далее зачем перед каждым выводом мне делать проверку вручную, когда можно это делать автоматически при прорисовке ссылки?zelenin писал(а):я понял. почему нельзя использовать rbac? почему стандартный механизм вам не подходит? почему нельзя дать человеку разрешение (permission) и проверять его перед рендером кнопки или открытием экшна? Зачем надо делать то же самое, только извращенным и негибким методом?de1phi писал(а):мне важно определить, какой action будет выполнен по ссылке и проверить есть ли доступ у пользователя.zelenin писал(а):не важно ГДЕ вы будете делать проверку. важно КАК.
Re: по Url получить namespace контроллера и название action
ну а как например с вариантами - когда модератор по одному и тому же контроллер\акшн может редактировать и удалять только свои посты\новости... или например - общая таблица комментов - один модер должен мочь работать с комментами к статьям, другой с комментами к новостям - то бишь уровень Rule в rbac вы полностью игнорируете
Re: по Url получить namespace контроллера и название action
у меня перегружен dbmanager и rule используются. Да и мы вроде тут не об этомInsolita писал(а):ну а как например с вариантами - когда модератор по одному и тому же контроллер\акшн может редактировать и удалять только свои посты\новости... или например - общая таблица комментов - один модер должен мочь работать с комментами к статьям, другой с комментами к новостям - то бишь уровень Rule в rbac вы полностью игнорируете
Re: по Url получить namespace контроллера и название action
Вы не поняли вопрос. urlManager тут вообще не причем, проверка идет ведь для внутреннего роута.Insolita писал(а): кстати проверила - и такая фигня - если урл генерить относительный через Yii::$app->urlManager->createUrl - то отрабатывает, а если createAbsoluteUrl - то не отрабатывает - не возвращает resolve()
Re: по Url получить namespace контроллера и название action
в итоге вот
Код: Выделить всё
public static function a($text, $url = null, $options = []) {
$request = new Request;
$request->setUrl(Url::to($url));
$resolve = $request->resolve();
if($resolve) {
$parts = Yii::$app->createController($resolve[0]);
if (is_array($parts)) {
/* @var $controller Controller */
list($controller, $actionID) = $parts;
if($actionID == '') {
$actionID = $controller->defaultAction;
}
$permission = get_class($controller) . '::' . 'action' . ucfirst($actionID);
if(Yii::$app->user->can($permission)) {
return parent::a($text, $url, $options);
}
}
}
}
Re: по Url получить namespace контроллера и название action
а спорил-то... все равно используешь тот же rbac, только разрешения задаешь именами контроллера-экшна, а не более абстрактными пермишнами. Менее гибко.
10 кнопок у тебя создадут 10 объектов реквеста и 10 объектов контроллеров.
причем профит только один - имя пермишна генерится автоматически, что позволяет проверку перенести в метод генерации ссылки.
10 кнопок у тебя создадут 10 объектов реквеста и 10 объектов контроллеров.
причем профит только один - имя пермишна генерится автоматически, что позволяет проверку перенести в метод генерации ссылки.