✉️

Deviseのパスワードリセット機能を本番環境に設定する

2024/06/29に公開

開発環境

  • macOS
  • VSCode
  • Rails 7.1.3.3
  • ruby-3.2.3
  • PostgreSQL 16.2

行いたいこと

  • 本番環境でDeviseのパスワードリセット機能を使い、指定されたメールアドレスに
    パスワードリセットのメールを送信する。

前提として...

  • 開発環境でDeviseによるパスワードリセット機能の実装が済んでいる。
  • アプリのデプロイ先はHerokuです。

実装内容

  • Googleアプリパスワードを生成する。
  • 生成したアプリパスワードを使いSMTPを設定する。
  • Heroku側で環境変数を設定する。





Googleでアプリパスワードの生成

・今回はアプリ用に新規でGmailを作成しました。まずGoogleのアカウントにログインします。

・2段階承認をオンにする

セキュリティGoogleにログインする方法2段階承認プロセス
Image from Gyazo                    ↓Image from Gyazo

・アプリパスワードの生成

・検索欄に「アプリパスワード」と入力する。⇨アプリパスワード(セキュリティ)こちらから生成する

[ページを翻訳機能で日本語にしている場合は検索欄からは以下のように表示されない]
Image from Gyazo

アプリパスワードを使い SMTP を設定する

・以下のファイルにそれぞれ追記と修正をする

・.env(隠しファイル)

・他のファイルで直接メールアドレスパスワードの記載をしないように隠しファイルに記載する。
・他のファイルではGMAIL_USERNAMEGMAIL_PASSWORDと記載する

.env
GMAIL_USERNAME = メールアドレス
GMAIL_PASSWORD = ・・・・・・・(空欄は開けず詰めて記載)

・ .gitignore(.envファイルの読み込み)

.gitignore
/.env

・ config/environments/production.rb

config/environments/production.rb
host = 'デプロイ先のアプリのURL'
  config.action_mailer.default_url_options = { protocol: 'https', host: host } 
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    port: 587,
    domain: 'デプロイ先のアプリのURLのドメイン',
    address: "smtp.gmail.com",
    user_name: ENV["GMAIL_USERNAME"] ,
    password: ENV["GMAIL_PASSWORD"] ,
    authentication: :plain,
    enable_starttls_auto: true
  }

・ config/environments/development.rb

config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: 'smtp.gmail.com',
    port: 587,
    domain: 'localhost', 
    user_name: ENV['GMAIL_USERNAME'],
    password: ENV['GMAIL_PASSWORD'],
    authentication: 'plain',
    enable_starttls_auto: true
  }

・ config/initializers/devise.rb(差出人のメールアドレス)

config/initializers/devise.rb
config.mailer_sender = ENV['GMAIL_USERNAME']

・ Gemfile(環境変数の読み込み)

.envファイルに記載された環境変数を自動的に読み込み、Railsアプリケーション内で変数を利用できるようになる。

Gemfile
gem 'dotenv-rails'

Heroku側で環境変数の設定

・ 環境変数の設定手順

・環境変数を設定したいアプリのダッシュボードから、
設定設定変数設定変数を表示する
Image from Gyazo

Image from Gyazo
価値に入力して追加する。

Image from Gyazo
・今回は以下の2つを登録しました。
[鍵]GMAIL_USERNAME  [価値]メールアドレス
[鍵]GMAIL_PASSWORD  [価値]パスワード16桁

以上でDeviseのパスワードリセット機能の本番環境設定は完了です。






GitHubで編集を提案

Discussion