Spree customize/extend user roles and permissions
- by swapnil
I am trying to specify some custom roles in Spree for example role 'client' and extend the permissions to access the admin section for this role.
This user will be able to access only those Product created by that user. Concept is letting a user with role 'client' manage only products and other certain Models.
To start with I added CanCan plugin and defined a RoleAbility Class in role_ability.rb
Just following this post : Spree Custom Roles Permissions
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
Added this to an initializer : config/initializers/spree.rb
Ability.register_ability(RetailerAbility)
Also extended 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
But I am getting flash message 'Authorisation Failure'
Trying to find some luck, I referred following links
A github gist for Customizing Spree Roles : https://gist.github.com/1277326
Here's a similar issue what I am facing : http://groups.google.com/group/spree-user/browse_thread/thread/1e819e10410d03c5/23b269e09c7ed47e
All efforts in vain...
Any pointers of what is going on here highly appreciated ?
Thanks in advance.