devise_token_authでのcontrollerのカスタマイズについて
devise_token_authを用いて認証処理を実装しています。
現在、Userインスタンスを保存する際、Stripeという決済サービスのアカウントも同時に作りたいためにStripeアカウントのトークンをUserインスタンスに保存してからUser.save()を実行したいためにdevise_token_authのregistartionsControllerのcreateアクションをカスタマイズする必要が出てきました。
試しに以下のコードのようにdevise_token_auth本家のコードを感コピーして見ました。
namespace :api do
scope :v1 do
mount_devise_token_auth_for 'User', at: 'auth', controllers: {
registrations: 'api/v1/auth/registrations'
}
end
end
class Api::V1::Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController
def create
build_resource
unless @resource.present?
raise DeviseTokenAuth::Errors::NoResourceDefinedError,
"#{self.class.name} #build_resource does not define @resource,"\
' execution stopped.'
end
if @resource.save
yield @resource if block_given?
unless @resource.confirmed?
# user will require email authentication
@resource.send_confirmation_instructions({
client_config: params[:config_name],
redirect_url: @redirect_url
})
end
if active_for_authentication?
# email auth has been bypassed, authenticate user
@token = @resource.create_token
@resource.save!
update_auth_header
binding.pry
end
render_create_success
else
clean_up_passwords @resource
render_create_error
end
end
end
しかし、実際にユーザー登録を行ってみると
data:
data:
allow_password_change: false
created_at: "2019-09-08T22:43:07.601+09:00"
email: "test100@example.com"
id: 28
name: "tester"
provider: "email"
uid: "test100@example.com"
updated_at: "2019-09-08T22:43:07.930+09:00"
status: "success"
headers:
cache-control: "max-age=0, private, must-revalidate"
content-type: "application/json; charset=utf-8"
このようにUserの保存は成功するのですが、headersに付与されるはずのaccess-token
client
uid
などの情報が与えられてきませんでした。
どういった原因が考えられるでしょうか?