2016-04-06 8 views
0

Ich mache ein PUT "/api/shipments/H10372375236/ready_for_pickup", aber das hält in Spree::BaseController#authenticate_user. Meine PUT-Anfrage enthält keine X-Spree-Token-Header wie BaseController#api_key erforderlichWie vermeide ich 401 (nicht autorisiert) beim Erstellen eines neuen API-Endpunkt für Solidus/Spree?

Dies ist der Code für meine Taste ist:

<%= form_tag(spree.api_ready_for_pickup_path(shipment), { method: "PUT", remote: true, id: "admin-ship-shipment" }) do %> 
    <%= submit_tag Spree.t(:ready_for_pickup), class: "ship-shipment-button" %> 
<% end %> 

Dies ist meine Routen:

Spree::Core::Engine.routes.draw do 
    namespace :api, defaults: { format: 'json' } do 
    put '/shipments/:id/ready_for_pickup' => 'shipments#ready_for_pickup', as: :ready_for_pickup 
    end 
end 

Rails.application.routes.draw do  
    mount Spree::Core::Engine, :at => '/' 
end 

rake routes verfügbar als Gist here. Ich habe einen API-Schlüssel für den aktuellen Benutzer in der Admin-Schnittstelle erstellt. Wie stelle ich sicher, dass die PUT-Anfrage das fehlende X-Spree-Token enthält?

Antwort

0

ich für that SO answer sein würde, die den Header in der Update-Aktion des Controllers wie so eingestellt ist:

response.headers["X-Spree-Token"] = auth_token 
+0

'auth_token' ist nicht in' Spree :: Api :: ShipmentsController' – martins

+0

Hier 'auth_token' ist mit "X-Spree-Token" ersetzt werden;) – born4new

+0

Ja, aber, wie ich schreibe Im ersten Post habe ich kein X-Spree-Token. :-( – martins

0

ich es durch das Senden spree_api_key als Zeichen param auf dem Formular festgelegt.

<%= form_tag(spree.api_ready_for_pickup_path(shipment), { method: "PUT", remote: true, id: "admin-ship-shipment" }) do %> 
     <%= hidden_field_tag :token, try_spree_current_user.spree_api_key %> 
     <%= submit_tag Spree.t(:ready_for_pickup), class: "ship-shipment-button" %> 
    <% end %> 
Verwandte Themen