Module: Url2pdfRails::Authentication::ClassMethods

Defined in:
lib/url2pdf_rails/authentication.rb

Instance Method Summary collapse

Instance Method Details

#authenticate_as_pdf_request!(options = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/url2pdf_rails/authentication.rb', line 9

def authenticate_as_pdf_request!(options = {})
  skip_filter = options.delete(:skip_filter)
  devise_fallback = options.delete(:devise_fallback)

  # should skip any before filters?
  skip_before_filter skip_filter, options if skip_filter.present?

  # skip devise authentication filters if present
  devise_fallback.each do |devise_auth_model|
    devise_auth_method = "authenticate_#{devise_auth_model}!"
    skip_before_filter devise_auth_method.to_sym, options
  end if devise_fallback.present?

  # try authenticate as pdf request and then fallback to devise if supplied
  authenticate_as_icanhazpdf_or_devise = -> do
    if valid_icanhazpdf_request?
      @authenticated_pdf_request = true
      return
    end
    head 401 and return unless devise_fallback.present?
    devise_fallback.each do |devise_auth_model|
      devise_signed_in_method = "#{devise_auth_model}_signed_in?"
      if self.respond_to?(devise_signed_in_method) && self.send(devise_signed_in_method)
        @authenticated_devise_request = true
        return
      end
    end
    head 401
  end
  prepend_before_filter authenticate_as_icanhazpdf_or_devise, options
end