Kirill
Да хромдрайвер
Good
Ребята, а у всех миграции трансакциями нормально работают?
Good
У меня че-то нифига, если ошибка - так не возвращется ничего назад
PowerAxis
Что-то я где-то слышал что миграции не оборачиваются в транзакции
Good
Зашибись, а зачем тогда safeDown и safeUp?
Good
Должно ж работать, судя по документации
Good
Или это у меня только? Просто вроде ж там ничего сложного, должно бы работать
Илья
Не все базы данных поддерживают транзакции для DDL, думаю проблема в этом
Vladimir
Vladimir
Я отсюда и узнал о скедиторе
Good
Аааа
Good
Я не знал
Good
У меня MySQL, если что
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
И еще AI в мускуле независимо от транзакции инкрементирует/
Павел
Бывает.
Павел
Нукто тебя здесь за это не осудит
Vladimir
Good
Есть тут, кто хорошо RBAC шарит?
Сергей
Вопрос-то какой?
Good
Не совсем понимаю по наследованию: допустим, есть такой код:
$auth->addChild($role, $permission);
Если проверяется правило, рбак сначала смотрит не на него, а на родителький пермишн/элемент, а уже потом на сам пермишшн? И так по всей иерархии? Или как?
Сергей
Эээ, а разве так можно?
Good
Потому как с наследованием ролей понятно - родитель может все. что могут потомки. А с правилами не совсем - родитель может все правила?
Good
Можно точно
Good
В доке ж написано - пермишшн должен быть унаследован или от роли, или от другого пермишшна
Good
По крайней мере, я так понимаю
Good
То есть, проверка идет по иерархии сверху вних, пока не будет первого попадания?
Good
Подразумевается, что пермишшны имеют правила
Good
Извиняюсь, там должен быть пермишшн, а не правило) Запутлася)
Сергей
В addchild передается item, а rule не является потомком item
Сергей
Ну вот да)
Сергей
Наследование также как в ролях, просто если у пермишена есть правило - оно будет отраьотано
Good
Отредактировал, чтоб понятно было
Good
С правилом понятно, это как бы одно целое с пермишшном
Сергей
Правило работает на пермишен
Good
Да
Good
Я просто в наследовании немного путаюсь
Сергей
Когда нет правил понятно наследование?
Good
Если есть, допустим, два пермишшна, с правилами, и должен сначала проверятся первый, а потом второй, то второй должен быть унаследован от первого, или наоборот?
Сергей
Когда есть правило у пермишена, то оно всегда отрабатывает и если будет false, то считай, что у сотрудника нет этого пермишена
Good
Когда нет правил понятно наследование?
Если по простому - есть роли, у них есть пермишшны, то да. А вот если некоторые пермишны при этом наследуютс еще друг от друга - тогда не совсем понятно
Сергей
Также как роли с пермишенами)
Сергей
Ровно также самая логика
Good
Ето если простая иерархия, тогда да, понятно
Сергей
Что значит сложная иерархи? Когда несколько наследников?
Good
Когда у пермишшна, например, два предка
Good
Хотя. я кажется начинаю понимать
Сергей
Есть роль у нее может быть много прав, у каждого из прав ещё куча прав
Good
Да. но если право иммет больше одного прдка. тогда как?
Good
Так же может быть
Сергей
Нарисуй дерево и тогда сразу понятно. Я всегда rbac паралельно визуализирую
Сергей
Да, может
Сергей
Во время проверки идёт поиск пути по дереву rbac от проверяемого пермишена, до роли пользователя. Если находится такой путь - значит можно, если нет - нельзя
Good
То есть, по сути, проверка идет от самого права, и вверх по предкам, и на каждом этапе проверяется, да? Если проверка прошла (то есть, или правило отработало в true), или это роль, которая присвоена пользователю, то все ок. Есл нет - то проверка идет дальше вверх по родителях
Good
Правильно?
Сергей
Да
Good
Ок, вроде прояснилось
Сергей
Пока не придет к роли, которая есть у этого пользователя
Good
А. н уда
Сергей
Наример, ты проверяешь пермишен "удалить запись", у нее могут быть дочерние удалить старые записи, удалить мои записи, удалить все записи , которые уже могут вести к полям каким-то
Good
А если правило не сработало? Сразу прерывается?
Сергей
Да
Сергей
Должен быть непрерывный путь от проверяемого пермишена до роли пользователя
Good
Ну вот есть у меня два правила, соответственно, два пермишшна, оба ведут к одной роли. При этом, нужно сделать так, чтоб сначала проверялось одно правило, и если провера прошла, то тогда к роли сразу, а если не прошла - тогда ко второму правилу, и там уже или не прошла (тогда нельзя), или к роли
Good
Кто тут кого должен наследовать? Я так понимаю, оба правила должны быть дочерними от роли, при этом еще и первое правило (которое проверяется сначала) должно быть дочерним ко второму
Сергей
У тебя надо ещё один пермишен, у которого будут твои два дочерними и проверять это новый пермишее
Good
По суть, если правило сработало, то проверка пойдет двумя путми, и одним сразу придет к роли
Good
То есть? Зачем мне еще один?
Good
Если первое правило отработало, то второе не должно проверятся
Сергей
Если его не будет, тебе надо две проверки будет делать в коде
Good
Они не равноправны, так сказать
Good
Так а что там проверять тогда в новом пермишшине?
Сергей
Ты путаешь правила и пермишена)
Сергей
В пермишене ничего не проверяется, он либо есть, либо нет
Good
Ну я имею ввиду пермишшн, который имеет правило)
Good
Я не путаю, просто выразился неправильно
Good
Я щас попробую набросать
Сергей
Погоди, у тебя получается вообще один пермишен к одной роли. К пермишену надо прицепить правило, где и сделать твою логику проверки и все
Сергей
Внутри одного правила сделать проверку А, если прошла вернуть тру, а если нет сделать проверку Б, если прошла вернуть тру, если нет - фальш.