3

Spreeでいくつかのカスタムロール(たとえば、ロール'client')を指定し、このロールの管理セクションにアクセスするためのアクセス許可を拡張しようとしています。

このユーザーは、そのユーザーが作成した製品にのみアクセスできます。コンセプトは、ロール「クライアント」を持つユーザーが製品と他の特定のモデルのみを管理できるようにすることです。

まず、CanCanプラグインを追加し、role_ability.rbでRoleAbilityクラスを定義しました。

この投稿をフォローするだけです:Spree Custom RolesPermissions

class RoleAbility
  include CanCan::Ability

  def initialize(user)
    user ||= User.new
    if user.has_role? 'admin'
        can :manage, :all
    elsif user.has_role? 'client_admin'
      can :read, Product
      can :admin, Product
    end
  end
end

これを初期化子に追加しました:config / initializers / spree.rb

Ability.register_ability(RetailerAbility)

また、admin_products_controller_decorator.rb:app/controllersadmin_products_controller_decorator.rbを拡張しました

Admin::ProductsController.class_eval do
    def authorize_admin
        authorize! :admin, Product
        authorize! params[:action].to_sym, Product
    end
end

しかし、「認証の失敗」というフラッシュメッセージが表示されます

運を見つけようとして、私は次のリンクを参照しました

Spreeロールをカスタマイズするためのgithubの要点:https ://gist.github.com/1277326

これが私が直面している同様の問題です:http://groups.google.com/group/spree-user/browse_thread/thread/1e819e10410d03c5/23b269e09c7ed47e

無駄なすべての努力...

高く評価されているポインタはありますか?

前もって感謝します。

4

1 に答える 1

4

ついにそれを見つけました。

いくつかの注意深い調査を行った後、spree 1.1.1がすべてのクラスに「Spree」モジュールを追加することによってクラスを変更したことがわかりました。これにより、以前は「admin/overview」であった「spree/admin/overview」のようなURLになりました。

それでうまくいき、自分の役割の権限を制御することができました。

于 2012-07-06T06:41:18.733 に答える