CanCan проблема авторизации - PullRequest
0 голосов
/ 26 мая 2011

Я использую канкан для своего приложения

Мой класс способности.rb

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user

    if user.role? :admin
      can :manage, :all
    elsif user.role? :operations
      can :manage, :all
    elsif user.role? :customer_support
      can :read, :all
    else
      user.role? :marketing
    can :read, :all
    end
 end
end

, и я добавляю метод в user.rb

def role?(role)
    self.roles.include? role.to_s
  end

Я такжедобавьте load_and_authorize_resource в моем контроллере, например, products_controller, который может авторизовать пользователя и разрешить ему выполнять определенные действия в этом контроллере, но моя проблема в том, что когда пользователь входит в систему с правами администратора, он не может добавить новый продукт, и доступ запрещеношибка cancan.

мой взгляд

<% if can? :create, Product %>
              <td class="action"><%= link_to 'Show', product %></td>
              <td class="action"><%= link_to 'Edit', edit_product_path( product) %></td>
              <td class="action"><%= link_to 'Destroy', product, :confirm => 'Are you sure?', :method => :delete %></td>
          <% end %>

он также не показывает эту ссылку для администратора, так как есть все права доступа администратора, но все же он не может получить доступ к этому действию?

что еще мне не хватает?

plz help?

1 Ответ

1 голос
/ 26 мая 2011

Следовали ли вы инструкциям в канканской вики? https://github.com/ryanb/cancan/wiki/Role-Based-Authorization.

Стратегия Cancan по умолчанию для хранения ролей для каждого пользователя использует битовую маску, но в вики здесь упоминается другое решение: https://github.com/ryanb/cancan/wiki/Separate-Role-Model.

...