Commit 7d2dd9d67681629ef24ba321340a7c599a2e7c78

Authored by Arthur Neves
1 parent f53baa7c
Exists in master and in 1 other branch production

Update devise to 3.1.1, and remove token_authenticatable module

Gemfile.lock
... ... @@ -94,7 +94,7 @@ GEM
94 94 debugger-linecache (1.2.0)
95 95 debugger-ruby_core_source (1.2.3)
96 96 decent_exposure (2.3.0)
97   - devise (3.1.0)
  97 + devise (3.1.1)
98 98 bcrypt-ruby (~> 3.0)
99 99 orm_adapter (~> 0.1)
100 100 railties (>= 3.2.6, < 5)
... ... @@ -187,7 +187,7 @@ GEM
187 187 rails (>= 3.2.0)
188 188 railties (>= 3.2.0)
189 189 moped (1.5.1)
190   - multi_json (1.8.0)
  190 + multi_json (1.8.1)
191 191 multi_xml (0.5.5)
192 192 multipart-post (1.2.0)
193 193 net-scp (1.1.2)
... ...
app/controllers/application_controller.rb
1 1 class ApplicationController < ActionController::Base
2 2 protect_from_forgery
3 3  
  4 + before_filter :authenticate_user_from_token!
4 5 before_filter :authenticate_user!
5 6 before_filter :set_time_zone
6 7  
... ... @@ -45,4 +46,12 @@ protected
45 46 Time.zone = current_user.time_zone if user_signed_in?
46 47 end
47 48  
  49 + def authenticate_user_from_token!
  50 + user_token = params[User.token_authentication_key].presence
  51 + user = user_token && User.find_by(authentication_token: user_token)
  52 +
  53 + if user
  54 + sign_in user, store: false
  55 + end
  56 + end
48 57 end
... ...
app/models/user.rb
... ... @@ -34,6 +34,7 @@ class User
34 34 ### Token_authenticatable
35 35 field :authentication_token, :type => String
36 36  
  37 + index :authentication_token => 1
37 38  
38 39 before_save :ensure_authentication_token
39 40  
... ... @@ -78,5 +79,22 @@ class User
78 79 self[:github_login] = login
79 80 end
80 81  
81   -end
  82 + def ensure_authentication_token
  83 + if authentication_token.blank?
  84 + self.authentication_token = generate_authentication_token
  85 + end
  86 + end
  87 +
  88 + def self.token_authentication_key
  89 + :auth_token
  90 + end
82 91  
  92 + private
  93 +
  94 + def generate_authentication_token
  95 + loop do
  96 + token = Devise.friendly_token
  97 + break token unless User.where(authentication_token: token).first
  98 + end
  99 + end
  100 +end
... ...
config/initializers/_load_config.rb
... ... @@ -53,7 +53,7 @@ unless defined?(Errbit::Config)
53 53 # Set default devise modules
54 54 Errbit::Config.devise_modules = [:database_authenticatable,
55 55 :recoverable, :rememberable, :trackable,
56   - :validatable, :token_authenticatable, :omniauthable]
  56 + :validatable, :omniauthable]
57 57 end
58 58  
59 59 # Set default settings from config.example.yml if key is missing from config.yml
... ...
config/initializers/devise.rb
... ... @@ -185,10 +185,6 @@ Devise.setup do |config|
185 185 # Require the `devise-encryptable` gem when using anything other than bcrypt
186 186 # config.encryptor = :sha512
187 187  
188   - # ==> Configuration for :token_authenticatable
189   - # Defines name of the authentication token params key
190   - config.token_authentication_key = :auth_token
191   -
192 188 # ==> Scopes configuration
193 189 # Turn scoped views on. Before rendering "sessions/new", it will first check for
194 190 # "users/sessions/new". It's turned off by default because it's slower if you
... ...