#author("2018-03-09T15:07:24+09:00","default:wikiwriter","wikiwriter")
#author("2018-03-09T16:07:50+09:00","default:wikiwriter","wikiwriter")
&tag(Devise/最もシンプルな認証機能);
*目次 [#pa418ddf]
#contents
*関連ページ [#la52c80f]
-[[Devise]]

*参考情報 [#l97408fd]

*概要 [#f0db1c67]
-基本的な認証機能を実装する。
-電子メールとパスワードで登録。
-確認メールの送信なし。

*Userモデルの生成 [#we170e46]
*使用準備[#we170e46]
-deviseをインストールする
 bundle exec rails g devise:install
-Userモデルを生成する
 $ bundle exec rails g devise User
 bundle exec rails g devise user
-migration実行
 bundle exec rake db:migrate
-デフォルトのUserモデルの内容
#pre{{
class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end

}}
-デフォルトのマイグレーションファイルの内容
#pre{{
class DeviseCreateUsers < ActiveRecord::Migration[5.1]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""

      ## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at

      ## Rememberable
      t.datetime :remember_created_at

      ## Trackable
      t.integer  :sign_in_count, default: 0, null: false
      t.datetime :current_sign_in_at
      t.datetime :last_sign_in_at
      t.string   :current_sign_in_ip
      t.string   :last_sign_in_ip

      ## Confirmable
      # t.string   :confirmation_token
      # t.datetime :confirmed_at
      # t.datetime :confirmation_sent_at
      # t.string   :unconfirmed_email # Only if using reconfirmable

      ## Lockable
      # t.integer  :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
      # t.string   :unlock_token # Only if unlock strategy is :email or :both
      # t.datetime :locked_at


      t.timestamps null: false
    end

    add_index :users, :email,                unique: true
    add_index :users, :reset_password_token, unique: true
    # add_index :users, :confirmation_token,   unique: true
    # add_index :users, :unlock_token,         unique: true
  end
end
}}
-migration実行
 bundle exec rake db:migrate

*ビューの編集 [#a4859cdf]
-application.html.rbを編集
#pre{{
  <div class="row">
    <% if user_signed_in? %>
        <strong><%= current_user.id %></strong> /
        <%= link_to("ログアウト", destroy_user_session_path, method: :delete) %>
    <% else %>
        <%= link_to("登録", new_user_registration_path) %> /
        <%= link_to("ログイン", new_user_session_path) %>
  <% end %>
}}
-ログインしていないときは「登録 / ログイン」。ログインしているときは「ID / ログアウト」が表示される。
#ref(list.png)


*処理の流れ [#s6458e18]

**登録処理 [#a194c415]
-メールアドレスとパスワードを入力し「Sign up」を押すと即座に登録される。既存のメールアドレスを入力するとログイン画面に遷移する。
#ref(regist.png)

**ログイン処理 [#b94949d7]
-登録済みユーザーの場合はログインできる。
#ref(login.png)

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS