Commit 7d2dd9d67681629ef24ba321340a7c599a2e7c78
1 parent
f53baa7c
Exists in
master
and in
1 other branch
Update devise to 3.1.1, and remove token_authenticatable module
Showing
5 changed files
with
31 additions
and
8 deletions
Show diff stats
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 | ... | ... |