module DoorMat::Controller

Public Instance Methods

config_url_redirect(url_token) click to toggle source
# File lib/door_mat/controller.rb, line 101
def config_url_redirect(url_token)
  config_url = DoorMat.configuration.send(url_token)
  config_url.inject(self) { |lhs, rhs| lhs.send(rhs) } || main_app_root_url
end
handle_unverified_request() click to toggle source
Calls superclass method
# File lib/door_mat/controller.rb, line 28
def handle_unverified_request
  super
rescue ActionController::InvalidAuthenticityToken => e
  raise e
ensure
  lockdown(log_level: :warn, log_message: 'WARN: handle_unverified_request')
end
lockdown(**options) click to toggle source
# File lib/door_mat/controller.rb, line 13
def lockdown(**options)
  o = {
      log_level: :error,
      log_message: "LOCKDOWN: No log message specified",
      redirect_to: nil
  }
  options = o.merge(options.to_h)

  DoorMat.configuration.logger.send(options[:log_level] , options[:log_message])

  sign_out

  redirect_to options[:redirect_to] || config_url_redirect(:lockdown_default_redirect_url)
end
main_app_root_url() click to toggle source
# File lib/door_mat/controller.rb, line 97
def main_app_root_url
  [:main_app, :root_url].inject(self) { |lhs, rhs| lhs.send(rhs) }
end
protected_by_password_less_session(pls_symbols) click to toggle source
# File lib/door_mat/controller.rb, line 67
def protected_by_password_less_session(pls_symbols)
  pls_symbols = Array(pls_symbols)
  redirect_url = send("#{pls_symbols.first}_url".to_sym)

  if DoorMat::AccessToken.is_cookie_present? cookies
    DoorMat::AccessToken.validate_from_cookie(cookies, request)
    if DoorMat::AccessToken.current_access_token.valid? && pls_symbols.include?(DoorMat::AccessToken.current_access_token.token_for.to_sym)
      return if DoorMat::AccessToken.current_access_token.used? || DoorMat::AccessToken.current_access_token.multiple_use?
    end
    DoorMat::AccessToken.destroy_if_linked_to(cookies)
  end

  set_session_redirect_to
  redirect_to redirect_url
end
require_confirmed_email() click to toggle source
# File lib/door_mat/controller.rb, line 49
def require_confirmed_email
  unless DoorMat::Session.current_session.valid? && (DoorMat::Session.current_session.email.confirmed? || DoorMat::Session.current_session.email.primary?)
    redirect_to door_mat.email_confirmation_required_url
  end
end
require_password_reconfirm(minutes_old=nil) click to toggle source

To assign a custom amount of delay for a specific filter, use as follow for a delay of 1 minute: before_filter -> {require_password_reconfirm(1)}

# File lib/door_mat/controller.rb, line 58
def require_password_reconfirm(minutes_old=nil)
  minutes_old ||= DoorMat.configuration.password_reconfirm_delay

  if DoorMat::Session.current_session.invalid? || DoorMat::Session.current_session.is_older_than(minutes_old)
    set_session_redirect_to
    redirect_to door_mat.reconfirm_password_url
  end
end
require_valid_session() click to toggle source
# File lib/door_mat/controller.rb, line 36
def require_valid_session
  unless DoorMat::Session.current_session.valid?
    DoorMat::Session.from(cookies, request)
  else
    DoorMat.configuration.logger.error "ERROR: are you calling require_valid_session more than once?"
  end
  unless DoorMat::Session.current_session.valid?
    set_session_redirect_to

    redirect_to door_mat.sign_in_url
  end
end
sign_out() click to toggle source
# File lib/door_mat/controller.rb, line 5
def sign_out
  DoorMat::Session.clear_current_session
  DoorMat::Session.destroy_if_linked_to(cookies)

  DoorMat::AccessToken.clear_current_access_token
  DoorMat::AccessToken.destroy_if_linked_to(cookies)
end
update_session_last_activity_time() click to toggle source
# File lib/door_mat/controller.rb, line 83
def update_session_last_activity_time

  if DoorMat::Session.current_session.valid?
    DoorMat::Session.current_session.updated_at = DateTime.current
    DoorMat::Session.current_session.save
  end

  if DoorMat::AccessToken.current_access_token.valid?
    DoorMat::AccessToken.current_access_token.updated_at = DateTime.current
    DoorMat::AccessToken.current_access_token.save
  end

end

Private Instance Methods

set_session_redirect_to() click to toggle source
# File lib/door_mat/controller.rb, line 108
def set_session_redirect_to
  if request.get? && DoorMat.configuration.allow_redirect_to_requested_url
    session[:redirect_to] = request.url
  else
    session.delete(:redirect_to)
  end
end