Sha256: f3c06dc44b01805d825f28ef9753b708bb16df5f6a7cae59a93a41dc4e8b1d27

Contents?: true

Size: 1.87 KB

Versions: 2

Compression:

Stored size: 1.87 KB

Contents

module DeviseAuthy
  module Controllers
    module Helpers
      extend ActiveSupport::Concern

      included do
        before_filter :check_request_and_redirect_to_verify_token, :if => :is_signing_in?
      end

      private
      def remember_device
        cookies.signed[:remember_device] = {
          :value => Time.now.to_i,
          :secure => !(Rails.env.test? || Rails.env.development?)
        }
      end

      def require_token?
        if cookies.signed[:remember_device].present? &&
          (Time.now.to_i - cookies.signed[:remember_device].to_i) < \
          resource_class.authy_remember_device.to_i
          return false
        end

        return true
      end

      def is_signing_in?
        if devise_controller? && signed_in?(resource_name) &&
           self.class == Devise::SessionsController || self.class.ancestors.include?(Devise::SessionsController) && 
           self.action_name == "create"
          return true
        end

        return false
      end

      def check_request_and_redirect_to_verify_token
        if signed_in?(resource_name) &&
           warden.session(resource_name)[:with_authy_authentication] &&
           require_token?
          # login with 2fa
          id = warden.session(resource_name)[:id]
          warden.logout
          warden.reset_session! # make sure the session resetted
          session["#{resource_name}_id"] = id
          # this is safe to put in the session because the cookie is signed
          session["#{resource_name}_password_checked"] = true
          session["#{resource_name}_return_to"] = request.path if request.get?

          redirect_to verify_authy_path_for(resource_name)
          return
        end
      end

      def verify_authy_path_for(resource_or_scope = nil)
        scope = Devise::Mapping.find_scope!(resource_or_scope)
        send("#{scope}_verify_authy_path")
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
devise-authy-1.3.0 lib/devise-authy/controllers/helpers.rb
devise-authy-1.2.2 lib/devise-authy/controllers/helpers.rb