
Сергей
18.03.2018
20:58:40
Во время проверки идёт поиск пути по дереву rbac от проверяемого пермишена, до роли пользователя. Если находится такой путь - значит можно, если нет - нельзя

Matviy
18.03.2018
20:59:20
То есть, по сути, проверка идет от самого права, и вверх по предкам, и на каждом этапе проверяется, да? Если проверка прошла (то есть, или правило отработало в true), или это роль, которая присвоена пользователю, то все ок. Есл нет - то проверка идет дальше вверх по родителях
Правильно?

Сергей
18.03.2018
21:00:11
Да

Google

Matviy
18.03.2018
21:00:18
Ок, вроде прояснилось

Сергей
18.03.2018
21:00:28
Пока не придет к роли, которая есть у этого пользователя

Matviy
18.03.2018
21:00:50
А. н уда

Сергей
18.03.2018
21:01:48
Наример, ты проверяешь пермишен "удалить запись", у нее могут быть дочерние удалить старые записи, удалить мои записи, удалить все записи , которые уже могут вести к полям каким-то

Matviy
18.03.2018
21:01:50
А если правило не сработало? Сразу прерывается?

Сергей
18.03.2018
21:02:02
Да
Должен быть непрерывный путь от проверяемого пермишена до роли пользователя

Matviy
18.03.2018
21:03:58
Ну вот есть у меня два правила, соответственно, два пермишшна, оба ведут к одной роли. При этом, нужно сделать так, чтоб сначала проверялось одно правило, и если провера прошла, то тогда к роли сразу, а если не прошла - тогда ко второму правилу, и там уже или не прошла (тогда нельзя), или к роли
Кто тут кого должен наследовать? Я так понимаю, оба правила должны быть дочерними от роли, при этом еще и первое правило (которое проверяется сначала) должно быть дочерним ко второму

Сергей
18.03.2018
21:05:35
У тебя надо ещё один пермишен, у которого будут твои два дочерними и проверять это новый пермишее

Matviy
18.03.2018
21:05:43
По суть, если правило сработало, то проверка пойдет двумя путми, и одним сразу придет к роли
То есть? Зачем мне еще один?
Если первое правило отработало, то второе не должно проверятся

Google

Сергей
18.03.2018
21:06:26
Если его не будет, тебе надо две проверки будет делать в коде

Matviy
18.03.2018
21:06:28
Они не равноправны, так сказать
Так а что там проверять тогда в новом пермишшине?

Сергей
18.03.2018
21:07:09
Ты путаешь правила и пермишена)
В пермишене ничего не проверяется, он либо есть, либо нет

Matviy
18.03.2018
21:07:30
Ну я имею ввиду пермишшн, который имеет правило)
Я не путаю, просто выразился неправильно
Я щас попробую набросать

Сергей
18.03.2018
21:08:54
Погоди, у тебя получается вообще один пермишен к одной роли. К пермишену надо прицепить правило, где и сделать твою логику проверки и все
Внутри одного правила сделать проверку А, если прошла вернуть тру, а если нет сделать проверку Б, если прошла вернуть тру, если нет - фальш.

Matviy
18.03.2018
21:10:33
Я так и сделал, но просто интересно, можно ли наследованием

Сергей
18.03.2018
21:11:26
Оно тут не нужно. Наследование подразумевает, что предыдущее выполнено

Matviy
18.03.2018
21:11:56
ТО есть, в любом случае, если правило не сработало. значит права нет, и все заканчивается сразу, а если отработало, значить путь к роли продолжается
Так?

Сергей
18.03.2018
21:12:04
Именно
Тут нет развилок)

Matviy
18.03.2018
21:12:11
Ок, ну вроде понятно
ага

Сергей
18.03.2018
21:12:44
Их можно сделать только с помощью правил, если внутри правил запускать проверку других пермишенов

Matviy
18.03.2018
21:13:03
Я собственно так и сделал. просто про наследование думаю

Google

Сергей
18.03.2018
21:13:16
Мне единственное не хватает иногда несколько правил к одному пермишену

Matviy
18.03.2018
21:13:59
Ну это такое, можно наклепать еще премишшнов. Может и хорошо, тчо нельзя так

Сергей
18.03.2018
21:15:05
Может быть)

Matviy
19.03.2018
00:30:48
Кстати, в том же RBAC в базе сохраняются сами правила, а как именно оно работает?

Mengi
19.03.2018
04:05:31
добрый день! а как прописать такую связь в модели?
hasOne
t1.id = t2.create_by,t2.user_id,t2.responsible_user_id

Andrey
19.03.2018
04:21:37
Разнести по трём разным методам

Mengi
19.03.2018
05:04:25

Kazakbala
19.03.2018
05:13:15

Тимур
19.03.2018
05:16:53
ребят привет. Подскажите ка крешить задачу. Пилю рест апи. Есть родительский контроллер и от него дочерние с бизнеслогикой. И есть РБАК. щас пытаюсь понять как управлять отображением списком итемов например по сценарию "Показывать менеджерам только те записи в которых они owner". Это через логику рбака делается или в контроллере свое писать или как?

Mengi
19.03.2018
05:17:26
покажи как получилось. тоже интересное, может на будущее пригодится.
public function getOtrscreatedusers()
{
return $this->hasOne(Otrsusers::className(), ['id' => 'create_by']);
}
public function getOtrsusers()
{
return $this->hasOne(Otrsusers::className(), ['id' => 'user_id']);
}
public function getOtrsresponusers()
{
return $this->hasOne(Otrsusers::className(), ['id' => 'responsible_user_id']);

Kazakbala
19.03.2018
05:27:29
я думал hasone к 3 параметрам сразу

Andrey
19.03.2018
05:39:17
Тогда такая связь теряет смысл как по мне. Если нужно к трём параметрам сразу - напишите обычный запрос через find()

Alexey
19.03.2018
05:40:11

Тимур
19.03.2018
05:51:13
ок. пасибо гляну.

Сергей
19.03.2018
06:06:01

Тимур
19.03.2018
06:10:48
это делается в prepareDataProvider
глянул. если я парально понял это придется мне каждый раз родительский экшен index переопределять. может есть какой behavior который это умеет? задача вроде типовая.

Максим
19.03.2018
06:19:19

Артур
19.03.2018
07:56:26
всем привет)
https://pastebin.com/JtUDYuJy

Google

Артур
19.03.2018
07:56:36
подскажите плиз почему возникает ошибка ?((
Creating default object from empty value
$house_product->in_warehouse = (float)$dat['quantity'];
вот тут((

Максим
19.03.2018
08:00:52
так текст ошибки говорит, почему она возникает

Антон
19.03.2018
08:00:57
ребята, как в yii1 можно цеплять ассеты с хешем?
нужно ли на стороне вебпака генерировать хеши

Артур
19.03.2018
08:01:32
так ведь сверху стоит условие
пустых значений там не может быть
if(!empty($dat['quantity'])){

Максим
19.03.2018
08:02:04

Артур
19.03.2018
08:02:11

Yan
19.03.2018
08:02:24

Максим
19.03.2018
08:02:26
количество
интересует больше конкретное значение в момент ошибки

Артур
19.03.2018
08:11:31
$house_product = WarehouseProduct::findOne(['product_id' => $product->id, 'warehouse_id' => 1]);
elseif (!empty($house_product)
вроде работает)
ошибка пропала(
походу не находило склад по ид для некоторых продуктов

Google

Андрей
19.03.2018
08:16:14
всем привет

Артур
19.03.2018
08:30:42
не могу понять )
https://pastebin.com/jfWK3zN7
мне нужно, что бы срабатывало по событию
задача добавляется но не выполняется
это косяк в коде или в кроне все равно прописывать нужно ?

Максим
19.03.2018
08:38:40
если запускать по событию, то в кроне по идее прописывать не надо
либо одну задачу для всех действий, вызываемых по событию, раз в минуту которая чекает новые задания
А это уже зависит от реализации

Артур
19.03.2018
08:45:28
хм
)
у меня в прайсе 14 товара это 860кб файлик)
при загрузке и обновление цен скрипт падает мол памяти не хватает(
как поступить тут)