Списки контроля доступа как код

Я в курсе Discourse Patreon. Хотя мой вопрос касается Patreon, решение «плагин Patreon» — не то, что я ищу.

Есть ли удобный способ расширить класс Ruby и через код задать список контроля доступа (ACL)?

Например: я хочу, чтобы только члены Patreon могли публиковать сообщения в определённом форуме, а отвечать могли только пользователи определённого уровня доверия и т. д., но я не хочу настраивать это через переключатели в каком-либо графическом интерфейсе. Я хочу иметь возможность расширять класс в Ruby и через код задавать список контроля доступа.

Легко ли это реализовать в Discourse или это сложно?

В плагине можно делать всё, что угодно.

Однако я не рекомендую управлять списками контроля доступа (ACL) в коде. Конечно, вы можете изменять поведение и правила, но управление доступом должно быть максимально прозрачным и интуитивно понятным для администратора, верно? Кроме того, бывают ситуации, когда нужно срочно внести изменения. Вы же не хотите зависеть от выпуска новой версии кода для этого!

Постарайтесь полностью понять существующую модель и посмотрите, можно ли достичь желаемого без изменения кода. Безопасность — очень важный, но сложный аспект. Если вы используете существующий фреймворк, команда Discourse поддержит вас. Если же вы вносите изменения, вы берёте на себя больший риск и остаётесь наедине с проблемами.

Также имейте в виду, что изменения в вашем плагине должны быть устойчивы к эволюции ядра. Переопределения должны быть написаны так, чтобы с наибольшей вероятностью продолжать работать по мере изменения исходного кода. Это тонкий баланс и создаёт дополнительные затраты на поддержку. Невозможность обновить вашу инсталляцию из-за того, что плагин сломается, сама по себе представляет угрозу безопасности.

В конечном счёте, плагины особенно подходят для поверхностных и безвредных изменений, но их применение к уровню безопасности должно производиться только после серьёзного обдумывания. Однако есть исключения, например, плагины OAuth, которые работают с функциями платформы, позволяющими безопасно подключать новых провайдеров.

Всё сказанное выше — и удачи!

1 лайк