
Bohdan
21.03.2018
20:49:25
воутер на одну, воутер на другую...
как вариант какой-то общий брать и искать клиентский ид вверх

Sergey
21.03.2018
20:49:36
а что если делать по воутеру на роль?
по воутеру на роль + контекст?

Google

Bohdan
21.03.2018
20:49:58
контекст в разрезе домена?

Sergey
21.03.2018
20:49:59

Bohdan
21.03.2018
20:50:10
не позволяет, ты прав

Sergey
21.03.2018
20:50:14
мое например не особо позволяет)

Bohdan
21.03.2018
20:50:17
то так было, идея в воздух
теоретически можно писать один общий + много меньших
т.к.

Sergey
21.03.2018
20:50:37
- тормозной, у меня сотни миллионы обьектов (хотя их подход интересный в плане оптимизации нагрузок)
- разграничивать права по пользователям - гуд, но мне нужно развести права еще на группы. В принципе, любой объект может быть владельцем других объектов

Bohdan
21.03.2018
20:50:57
у меня часть воутеров имеет свитч-кейс по действиям на них, а часть просто проверяет принадлежность и кидает 403 при ошибке
и, возможно, проверку на 403 имеет смысл вынести "наверх"

Sergey
21.03.2018
20:54:02

Bohdan
21.03.2018
20:55:25
403, т.к. проверяю по is_granted аннотации (ну или дергаю напрямую в коде, я еще не решил, как лучше)
ну и дальше уже хендлер обрабатывает исключение и отдает страничку с мессенджем

Google

Sergey
21.03.2018
20:55:42
а ну это ж не сам воутер, это уже AuthorizationChecker делает

Bohdan
21.03.2018
20:56:07
дергается воутером оно)
тьфу
чекер дергает воутер

Sergey
21.03.2018
20:56:54
нет. Не гружу сотни лямов объектов в вотеры.
Наверно не совсем корректно выразился.
У меня есть
- классические пользователи
- классические группы
- классические роли
В целом, все хорошо.
Но как обычно, всегда есть но.
Я должен навешивать разрешения не только на пользователя/группу/роль, но и на любой произвольный объект, коих очень много и они все разные

Sergey
21.03.2018
20:57:33
и тогда все довольтно просто и тривиально

Sergey
21.03.2018
20:58:15
к примеру как?

Sergey
21.03.2018
20:58:30
что-то типа хранить спецификации доступа для сущностей. Ну и как правило у тебя будут дефолтные которые можно расширять (вайт лист пользователей какой-нибудь)
ну то есть вот вообще отдельно все это. ОТдельные таблички, никаких FK, тип сущности, айдишка, кому и чего можно

Sergey
21.03.2018
20:59:48
хм, заманчиво. Есть примеры решений?

Sergey
21.03.2018
21:00:02
хз но делается за вечер
если без UI

Sergey
21.03.2018
21:00:38
он особо и не нужен, этот UI )

Sergey
21.03.2018
21:00:49
а как ты будешь "гибко настраивать что кому можно?"

Sergey
21.03.2018
21:01:05
эх )))

Sergey
21.03.2018
21:01:07
или речь не идет о том что бы можно было для каждой отдельной штуки асайнить права доступа
?

Sergey
21.03.2018
21:01:50
я не буду настраивать. Права бдут подтягиваться из 1C, редмайна, лдап и раздаваться автоматом)))

Google

Sergey
21.03.2018
21:03:01

Sergey
21.03.2018
21:04:00
не совсем. Мозг ломает сильно тк никто и никогда не думал о разграничении доступов в этих подсистемах и все они живут своей отдельной жизнью )

Sergey
21.03.2018
21:04:27
вот по этому воутеры это офигенно.... ты можешь просто по началу всем все разрешать но делать проверки)
а потом все так вот вжух и разрулил)
но конечно для этого надо уже понимать что "проверки прав доступа делать надо всегда". Конечно если ты не личный блог пишешь

Sergey
21.03.2018
21:05:34
так и было. Но потом количество вотеров, исключений и правилл накопилось столько, что просто мракобесие. Хочется все причесать и упорядочить

Sergey
21.03.2018
21:06:49
воутеры - это просто механизм позволяющий тебе организовать какие хочешь проверки. Если тебе не удобно с воутерами, то попробуй перегруппировать проверки

Sergey
21.03.2018
21:07:54

Sergey
21.03.2018
21:07:56
если все еще не удобно - придумываем новые типы проверок (как случай когда нам надо отдельно хранить кто куда ходить может)

Bohdan
21.03.2018
21:08:53
подумай еще над моей идеей
разделить проверки на воутерах по уровням

Sergey
21.03.2018
21:08:57
ну то есть формализовать правила не особо сложно если посидеть, порисовать и подумать

Bohdan
21.03.2018
21:09:28
то бишь, если у тебя есть возможность группировать их (как говорит Сергей) - возможно, получится разложить их "по полочкам" и сделать "конвеер"

Sergey
21.03.2018
21:09:33
люди могут входить в группы, группы могут быть вложенными, люди в группах пересекаются... А еще у людей есть есть индивидуальные роли...

Sergey
21.03.2018
21:09:48

Bohdan
21.03.2018
21:10:07

Sergey
21.03.2018
21:10:13
ну то есть... ясно что "сложна", но это к воутерам никакого отношения не имеет.

Bohdan
21.03.2018
21:10:33
то, о чем мы говорили - я не могу выделить контекст "биллинг" или "инвентарь" как в примерах всяких

Google

Bohdan
21.03.2018
21:10:48
и это усложняется еще и иерархичностью сущностей

Sergey
21.03.2018
21:11:05
там где у тебя "вложенные сущности" часто не сущности а только их айдишки на самом деле

Bohdan
21.03.2018
21:11:46
границы функций, ими выполняемых?

Sergey
21.03.2018
21:12:08
ты разбирался что такое агрегаты сущностей? корень агрегата там всякий, границы бизнес транзакций и т.д.

Sergey
21.03.2018
21:12:24
вот пример.
есть обект А
есть лярд, обектов Б, С, Д....
Нужно получить список обектов, которые может редактировать обьекта А.
Вотеры тут не особо помогут (

Bohdan
21.03.2018
21:12:38
окей, гугл
как определить, где у меня сущности, а где их айдишки?)
идея с shared айдишками?

Admin
ERROR: S client not available

Sergey
21.03.2018
21:12:48

Bohdan
21.03.2018
21:12:53
плаваю

Sergey
21.03.2018
21:13:06
и это сильно развязывает руки в плане того что и как можно разделить

Sergey
21.03.2018
21:13:38
К примеру удалили обект А. Нужно удалить все разрешения - это просто пример

Sergey
21.03.2018
21:14:02

Sergey
21.03.2018
21:14:11
или просто просмотреть в UI куда имеет доступ обект А

Bohdan
21.03.2018
21:14:19

Sergey
21.03.2018
21:14:32

Sergey
21.03.2018
21:14:58
нет, не имеет, но очень рядом)

Google

Sergey
21.03.2018
21:15:17
а еще - часто то что ты думаешь должно происходить в рамках одной бизнес транзакции на самом деле две разных
и очень много "проблем" в том что бы видеть границы вызывают привычки и UI
последнее чаще всего приводит к добавлению непонятных связей в сущностях которые даже не нужны

Sergey
21.03.2018
21:16:23

Bohdan
21.03.2018
21:16:51

Sergey
21.03.2018
21:17:03

Bohdan
21.03.2018
21:17:10
нужно посмотреть и еще раз подумать

Sergey
21.03.2018
21:17:19
блин я плохо помню что там у тебя за штуки
+ у тебя там тоже NDA....

Bohdan
21.03.2018
21:17:37
я не особо описывал детали того, что где происходит
да я думаю себе выписать на листок куда-то схему действий, которые можно выполнять в системе
и желательно со связями, какие действия что затрагивают
типа сущность и для нее рисуем звездочку, где на каждом конце - действие и его зависимости
пожалуй, даже не прокидывать линии к самим зависимостям, т.к. будет трешак

Andrew
21.03.2018
21:26:28

Sergey
21.03.2018
21:26:41
ну то есть обычная логика приложения, фреймворк тут мало чем поможет

Sergey
21.03.2018
21:27:56
да как бы дело и не во фреймворке. Изначально то я хотел найти и посмотреть альтернативы симфонийскому ACL )
У всех своя специфика, если конечно речь не о личном блоге)
Спасибо, коллеги. Натолкнули меня на пару интересных идей. Пойду думать)