Doiya’s blog

日々の進捗を書く雑記ブログ(メインはエンジニアやプログラミング関連)

sorceryの説明

少しsorceryを勉強する機会があったので いい機会なのでまとめてみる。 (ざっくりとなので、不充分なところが多々あるのはご了承ください。)

DB

00テーブル。
crypted_password パスワード流出を防ぐための暗号化されたパスワード
unique:true 重複を防ぐ。

ルーティング

get 'login' getリクエスト ログインページ
post 'login' postリクエスト ログインするという動作

コントローラ

require_login  ログインを強制する。

def create
  (params[:email],params[:password])
(ユーザーが入ってきたemailやpassword)
   if @user
      redirect_back_or_to root_path    # trueならこっちに入る。
  else
      render:new       #@userがnilだった場合(間違ったメールやパスワード)
end

ビューファイル

ログインのフォームに関してはモデルと紐づかないので
(ユーザーと紐づくと思われがちだが、あくまでも「ログイン/セッション」
というリソースに紐づくとという考え方)
form_with model:@userのようにする必要はない
ただ、フォームの送信先は/loginになって欲しいので
url(URL): login_pathの指定をします。

sorceryに関するメソッド 基本的に親玉のapplication_controller.rbにつける。

before_action :require_login

not_authenticated
ログインしてなかった場合に呼ばれるメソッド
ex 
「ログインしていなければフラッシュメッセージ」
「ログインしてなければこのページにリダイレクトする」

logged_in? ログインしているかどうか

もしgemを使わない場合 current_userをどう表現するのか?

current_userとは? <span style="color: #ff5252">ログインしているユーザーのインスタンス</span>
def current_user
    User.find_by(id:session[:user_id])
end

Userテーブルからfindしてセッションの中のuser_idをもとに検索する

参照: pikawaka.com