Подтвердить что ты не робот

Авторизация санкционирования с использованием служебных объектов

Инструменты

** Проект **

Репо-проект находится на Github; что находится под контролем в разделе pundit-1.

Я следил за учебником Pundit и получил авторизацию, используя "традиционные" пухлые контроллеры; см

Все хорошо и хорошо. И затем мы переходим к SessionController, чьи действия #new и #destroy, соответственно, управляют входом и выходом журнала.

текущий код и spec Работает Just Fine с использованием логики контроллера традиционного типа (см. #new вызывает частные методы, которые используют Pundit для авторизации активного (текущего) пользователя с помощью SessionDataPolicy..

Затем я пытаюсь инкапсулировать эту логику в ActiveInteraction DSO (см. код с комментариями в SessionsController#new), и все ад разрывается.

В частности, версия SessionsController spec в этом Gist вызывает Pundit::AuthorizationNotPerformedError в точке, где spec вызывает метод #new.

Виски. Танго. FOX?!?!?

Кто-нибудь смог получить аналогичный код, работающий без Pundit, живущего прямо внутри кода контроллера, в идеале используя @billychan pull request (лучший альтернативный вариант будет с радостью рассмотрен)

Это меня полностью смущает.

4b9b3361

Ответ 1

Вы можете создать политику HeadLess на уровне DSOs, например

Struct.new(:user)

а затем подтвердите авторизацию методов для пользователей.