Метод псевдонима CanCanCan для контроллера - PullRequest
0 голосов
/ 24 мая 2018

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

can :read, Journey
can :destroy, Journey
can :update, Journey

И у меня есть такие контроллеры:

class JourneyController < ApplicationController

  authorize_resource class: :journey

  def index; end

  def show; end

end

module Journeys
  class VoidJourneyController < ApplicationController

    authorize_resource class: :journey

    def show; end

    def destroy; end

  end
end

Это основано на том, как DHH делает егоконтроллеры: http://jeromedalbert.com/how-dhh-organizes-his-rails-controllers/

Теперь у меня проблема в том, что, поскольку у меня есть метод show внутри контроллера VoidJourney (это для отображения пользователю некоторой дополнительной информации, когда мы говорим с API), это означает, что пользовательу него нет разрешения на уничтожение пути, он может получить к нему доступ, потому что show имеет псевдоним для чтения, и в этом контроллере защищено только уничтожение.

CanCanCan имеет метод alias_action, но это позволяет использовать псевдоним метода только длядругой для всех контроллеров, а не только один.

Единственный способ, которым я мог подумать, чтобы справиться с этим, это сделать:

def show
  authorize! :destroy, :journey
end

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

Возможно ли наложение псевдонима метода только в одном контроллере на другой?И не псевдоним для всех контроллеров.Глядя на документы, я не вижу этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...