Sha256: 8642135001d447d34c1e4d83488ac522458a56e860c245c944be8d1c35841503
Contents?: true
Size: 1.09 KB
Versions: 1
Compression:
Stored size: 1.09 KB
Contents
module DeviseTokenAuth::Concerns::SetUserByToken extend ActiveSupport::Concern included do before_action :set_user_by_token after_action :update_auth_header end # user auth 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 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 end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
devise_token_auth-0.1.4 | app/controllers/devise_token_auth/concerns/set_user_by_token.rb |