前提・実現したいこと
devise と devise_token_auth のgemを共存させたところ、管理画面から登録した時のみメールが飛ばない
【参考サイト】
[Rails5] devise_token_auth でAPIを作成する / 新規登録・ログイン
https://tackeyy.com/blog/posts/token-base-api-with-rails-and-devise-token-auth
devise_token_auth導入時、ユーザ登録確認メールが送られない事象の対応方法
https://qiita.com/ruby_kumagoro/items/e010ae5099d62335a3d6
→このサイトを参考にして追記したところ、管理画面からの登録でメールを送信することができました、APIでの登録でメールが2件送信されてしまいました。
【サーバーの前提条件】
・アカウントの管理画面はRailsのviewで作成。
・管理画面はgem『devise』をそのまま利用。
・アカウント作成時にURL認証付きのメールを送り、アドレスの存在チェックを行う
【使用gem】
・devise
・devise_token_auth
発生している問題・エラーメッセージ
参考サイトどおりに組んだところ、
APIにてユーザーを作成した時はURL認証付きのメールが送られ正しく処理されるが
Viewで作成した管理画面からユーザーを作成した時はURL認証付きのメールが送られない、
といった症状が発生している。
実現したい仕様
ユーザーを登録する時は必ずURL認証付きのメールを送るようにしたい。
コード
※ViewはDeviseのデフォルト画面をそのまま利用しております。
※ソース詳細は上に記載しました参考サイトをご参照ください。
[app/controllers/application_controller.rb]
Ruby
1class ApplicationController < ActionController::Base 2 protect_from_forgery with: :exception 3 before_action :set_host 4 5 def set_host 6 Rails.application.routes.default_url_options[:host] = request.host_with_port 7 end 8end
[app/controllers/api/v1/base_controller.rb]
※Devise専用親コントローラー
Ruby
1class Api::V1::BaseController < ActionController::Base 2 include DeviseTokenAuth::Concerns::SetUserByToken 3 protect_from_forgery with: :null_session # トークン認証のためCSRFは使わない 4end
[app/controllers/api/v1/auth/registrations_controller.rb]
※API利用時のDeviseコントローラー
Ruby
1class Api::V1::Auth::RegistrationsController < DeviseTokenAuth::RegistrationsController 2 before_action :configure_permitted_parameters, if: :devise_controller? 3 4 protected 5 6 def configure_permitted_parameters 7 devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) 8 end 9 end
[app/models/user.rb]
Ruby
1class User < ActiveRecord::Base 2 devise :database_authenticatable, :registerable, 3 :recoverable, :rememberable, :validatable, 4 :confirmable 5 include DeviseTokenAuth::Concerns::User 6end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。