現在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】離脱率を下げる!かんたんログイン機能の実装