Module: DeviseTokenAuth::Concerns::SetUserByToken
- Extended by:
- ActiveSupport::Concern
- Included in:
- ApplicationController
- Defined in:
- app/controllers/devise_token_auth/concerns/set_user_by_token.rb
Instance Method Summary collapse
Instance Method Details
#set_user_by_token ⇒ Object
user auth
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'app/controllers/devise_token_auth/concerns/set_user_by_token.rb', line 10 def set_user_by_token auth_header = request.headers["Authorization"] # missing auth token return false unless auth_header token = auth_header[/token=(.*?) /,1] uid = auth_header[/uid=(.*?)$/,1] # mitigate timing attacks by finding by uid instead of auth token @user = @current_user = uid && User.find_by_uid(uid) if @user && @user.valid_password?(token) sign_in(@user, store: false) else @user = @current_user = nil end end |
#update_auth_header ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'app/controllers/devise_token_auth/concerns/set_user_by_token.rb', line 29 def update_auth_header if @user # update user's auth token (should happen on each request) token = SecureRandom.urlsafe_base64(nil, false) @user.password = token @user.password_confirmation = token @user.save! # update Authorization response header with new token response.headers["Authorization"] = "token=#{token} uid=#{@user.uid}" end end |