Torihaji's Growth Diary

Little by little, no hurry.

Rails7でdevise-token-authを使って登録するまでの奮闘記-最終章

はじめに

こんにちは、torihaziです。

最終章になって欲しいです。

はい、続き。

現状。

device-token-auth使って登録まではいけました。

あとは確認の時にDBのエラーログが出てたのでそれの確認と

解消ができたらいいかなと。

これは登録した後に飛んでくる認証メールに付随している

リンクをクリックしたときのログです。

DeviseTokenAuth::ConfirmationsController#show

に飛んでいってなんかやってるみたいですね。

ほどほどに探検してみます。

github.com

qiita.com

なんとなくわかったような。

とりあえず試しにcurlで飛ばしてみる。

あれ、てかなんかconfirm_success_urlのエラーが消えてる。

あ、そうか。curlにconfirm_success_urlつけてないからか。

納得。

で話は戻って、さっきのConfirmationsControllerの件

いろいろやっているとどうやら全ての処理が終わった後に

after_confirmationという処理をオーバライドすることで

カスタマイズできるらしい、

今回は認証が終わったらuserをアクティベートさせる予定で

それ用のis_active (default: false)もつけているので

それをtrueにするような処理を加える。

以下、user.rb

# frozen_string_literal: true

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable,
         :confirmable
  include DeviseTokenAuth::Concerns::User

  scope :active, -> { where(is_active: true) }
  scope :inactive, -> { where(is_active: false) }

  def deactivate!
    update!(is_active: false)
  end

  def activate!
    update!(is_active: true)
  end

  def after_confirmation
    self.activate!
  end
end

この状態で、届いたメールをクリックすると

2つ目のとこがその処理が入って見事にis_active: trueという

userが出来上がり。

退会するときはis_active: falseにして論理削除みたいなことしようかなと。

そういうふうに考えている。

赤字はいろいろ出てるけど、なんとかなると思うのでとりあえず

これにてapi側の探検は終了。

ということで終わり。次のフロントはかける気力があったら書こうと思う。

終わりに

長旅お疲れ様でした。

疲れました。

まだまだコードリーディングに慣れていないと感じました。

何はともあれ、ちゃんちゃん。