質問するログイン新規登録

質問編集履歴

1

user.rbがsessions_controller.rbとなっていたため、user.rbの内容に修正

2020/05/05 09:08

投稿

masa95814
masa95814

スコア22

title CHANGED
File without changes
body CHANGED
@@ -11,27 +11,50 @@
11
11
  app/models/user.rb
12
12
 
13
13
  ```ruby
14
- class SessionsController < ApplicationController
14
+ class User < ApplicationRecord
15
+ attr_accessor :remember_token
16
+ before_save { email.downcase! }
17
+ validates :name, presence: true, length: { maximum: 50 }
18
+ VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(.[a-z\d\-]+)*.[a-z]+\z/i
19
+ validates :email, presence: true, length: { maximum: 255 },
20
+ format: { with: VALID_EMAIL_REGEX },
21
+ uniqueness: { case_sensitive: false }
15
- def new
22
+ has_secure_password
16
- end
23
+ validates :password, presence: true, length: { minimum: 6 }
17
24
 
18
- def create
19
- user = User.find_by(email: params[:session][:email].downcase)
20
- if user && user.authenticate(params[:session][:password])
21
- log_in user
22
- remember user
23
- redirect_to user
25
+ class << self
24
- else
26
+
25
- flash.now[:danger] = 'Invalid email/password combination'
27
+ # 渡された文字列のハッシュ値を返す
26
- render 'new'
28
+ def User.digest(string)
29
+ cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
30
+ BCrypt::Engine.cost
31
+ BCrypt::Password.create(string, cost: cost)
27
32
  end
28
- end
29
33
 
34
+ # ランダムなトークンを返す
35
+ def User.new_token
36
+ SecureRandom.urlsafe_base64
37
+ end
38
+
39
+ # 永続セッションのためにユーザーをデータベースに記憶する
30
- def destroy
40
+ def remember
41
+ self.remember_token = User.new_token
42
+ self.update_attribute(:remember_digest, User.digest(remember_token))
43
+ end
44
+
45
+ # 渡されたトークンがダイジェストと一致したらtrueを返す
46
+ def authenticated?(remember_token)
31
- log_out if logged_in?
47
+ return false if remember_digest.nil?
48
+ BCrypt::Password.new(self.remember_digest).is_password?(remember_token)
49
+ end
50
+
51
+ # ユーザーのログイン情報を破棄する
32
- redirect_to root_url
52
+ def forget
53
+ self.update_attribute(:remember_digest, nil)
54
+ end
33
55
  end
34
56
  end
57
+
35
58
  ```
36
59
 
37
60
  app/controllers/users_controller.rb