2015-11-18 1 views
0

Я хотел бы создать роль, которая не является администратором, который может создать порядок в блендере spree, но я не смог найти комбинацию действий, которые мне нужно активировать для этого пользователя. Я попробовал добавить пользовательское разрешение по умолчанию и разрешить роль :manage Заказ, LineItem, Product, Variant без успеха. Сейчас роль может создать новый порядок, но когда я ищу продукт для добавления в корзину, контроллер API не позволит этого.Позволяет не-администратору создавать порядок в spree backend

Update: Я пытаюсь отключить аутентификацию для API Spree::Api::Config[:requires_authentication] = false и решить эту проблему. Таким образом, это определенно проблема с аутентификацией API.

Я использую solidus, который является ответвлением spree 2.4

can_be_like_customer 
can :manage, Spree::Order 
can :manage, Spree::LineItem 
can :manage, Spree::Product 
can :manage, Spree::Variant 

    def can_be_like_customer 
    can :display, Spree::Country 
    can :display, Spree::OptionType 
    can :display, Spree::OptionValue 
    can :create, Spree::Order 
    can [:read, :update], Spree::Order do |order, token| 
     order.user == user || order.guest_token && token == order.guest_token 
    end 
    can :display, Spree::Product 
    can :display, Spree::ProductProperty 
    can :display, Spree::Property 
    can :create, Spree.user_class 
    can :display, Spree::State 
    can :display, Spree::Taxon 
    can :display, Spree::Taxonomy 
    can :display, Spree::Variant 
    can :display, Spree::Zone 
    end 

Входа от терминала

Processing by Spree::Api::VariantsController#index as JSON 
    Parameters: {"q"=>{"product_name_or_sku_cont"=>"bag"}, "token"=>"", "in_stock_only"=>"true", "_"=>"1447839886731"} 
    Spree::User Load (0.4ms) SELECT "spree_users".* FROM "spree_users" WHERE "spree_users"."deleted_at" IS NULL AND "spree_users"."spree_api_key" = $1 LIMIT 1 [["spree_api_key", ""]] 
    Rendered /Users/harins/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/solidus_api-1.0.2/app/views/spree/api/errors/must_specify_api_key.v1.rabl (0.7ms) 
Filter chain halted as :authenticate_user rendered or redirected 
Completed 401 Unauthorized in 1778ms (Views: 1775.1ms | ActiveRecord: 0.4ms) 

ответ

0

Оказывается, пользователь администратора, который я создал не имею API генерируется. Пришлось перейти к этому пользователю в разделе admin и сгенерировать ключ API с помощью учетной записи superadmin ([email protected]).

2

Вам необходимо переопределить способность spree и добавить условие роли в метод инициализации. в этом методе добавить следующий код

# for orders 
can :admin, Order 
can [:modify, :display], Order 
can [:create, :cart], Order 
can [:admin, :display, :modify], LineItem 
can [:admin, :display, :modify], Adjustment 
can [:admin, :display, :modify], Payment 
can [:admin, :display, :modify], ReturnAuthorization 
can [:admin, :display, :modify], CustomerReturn 

# for products 

can :admin, Product 
can [:modify, :display, :stock], Product 
can :create, Product 
can [:admin, :manage], Image 
can [:admin, :manage], Variant 
can [:admin, :manage], ProductProperty 
can [:admin, :modify], OptionType