LoginSignup
23
29

More than 3 years have passed since last update.

【rails】かんたんログイン機能導入方法

Last updated at Posted at 2019-10-28

現在railsでポートフォリを作成中ですが、よりスムーズに使っていただきたいためにこの機能を導入しました。

若干手抜き感が否めないですが、一応使えます。

これはdivise導入済みで進めていきます。

まずはテストユーザーで新規登録します。

name:テストユーザー
email:test@example.com
password:testtest

ログインを簡単にする機能なのでまずは登録ないと始まりません。

view側を編集

もともとviews/devise/sessions/new.html.slimというファイルがありますが中身を真似て、
views/devise/sessions/_testuser.html.slimというファイルを作ります。

_testuser.html.slim

    h2
      | かんたんログイン
    = form_for(resource, as: resource_name, url: session_path(resource_name)) do |f|
      .field
        =f.hidden_field :email ,value: "test@example.com"
        =f.hidden_field :password ,value: "testtest"
      .actions
        = f.submit "かんたんログイン"

このように書いてviews/devise/registrations/new.html.slim

new.html.slim
.......
= render 'devise/sessions/testuser'

これで新規登録画面にかんたんログインボタンが表示されるようになります。

編集ボタンを隠す

私の場合はviews/users/show.html.slimにユーザー詳細画面がありますがテストユーザーのみ編集ボタンをを隠したいと思います

show.html.slim
.....
 - unless @user.email == "test@example.com"
  = link_to "edit",edit_user_registration_path

これではurlに直接打ち込むとアクセスできてしまうのが注意です。

deviseに対応したコントローラーを導入

$ rails g devise:controllers users

ルーティングの編集

userのコントローラーを作ったので、そこにアクセスするようにルーティングを編集します。

routes.rb

  devise_for :users, controllers: {
    registrations: 'users/registrations'
  }

コントローラー内を編集

テストユーザーを編集、削除されてほしくないので制限する。

registrations_controller.rb

......
before_action :forbid_test_user, {only: [:edit,:update,:destroy]}
......

  private
  def forbid_test_user
      if @user.email == "test@example.com"
        flash[:notice] = "テストユーザーのため変更できません"
        redirect_to root_path
      end
  end
.......

これによりかんたんログイン機能ができるようになります。
参考:【学習アウトプット2】離脱率を下げる!かんたんログイン機能の実装

23
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
29