Files
docuseal/lib/auth_with_token_strategy.rb
T

22 lines
464 B
Ruby
Raw Normal View History

2023-08-04 00:40:13 +03:00
# frozen_string_literal: true
class AuthWithTokenStrategy < Devise::Strategies::Base
def valid?
request.headers['X-Auth-Token'].present?
end
def authenticate!
2023-08-06 17:33:08 +03:00
sha256 = Digest::SHA256.hexdigest(request.headers['X-Auth-Token'])
2023-08-04 00:40:13 +03:00
2023-08-06 17:33:08 +03:00
user = User.joins(:access_token).find_by(access_token: { sha256: })
2023-08-04 00:40:13 +03:00
if user
success!(user)
else
fail!('Invalid token')
end
rescue JWT::VerificationError
fail!('Invalid token')
end
end