Module: DoorMat::Controller
- Included in:
- ApplicationController
- Defined in:
- lib/door_mat/controller.rb
Instance Method Summary collapse
- #config_url_redirect(url_token) ⇒ Object
- #handle_unverified_request ⇒ Object
- #lockdown(**options) ⇒ Object
- #main_app_root_url ⇒ Object
- #protected_by_password_less_session(pls_symbols) ⇒ Object
- #require_confirmed_email ⇒ Object
-
#require_password_reconfirm(minutes_old = nil) ⇒ Object
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).
- #require_valid_session ⇒ Object
- #sign_out ⇒ Object
- #update_session_last_activity_time ⇒ Object
Instance Method Details
#config_url_redirect(url_token) ⇒ Object
101 102 103 104 |
# 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 ⇒ Object
28 29 30 31 32 33 34 |
# 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) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/door_mat/controller.rb', line 13 def lockdown(**) o = { log_level: :error, log_message: "LOCKDOWN: No log message specified", redirect_to: nil } = o.merge(.to_h) DoorMat.configuration.logger.send([:log_level] , [:log_message]) sign_out redirect_to [:redirect_to] || config_url_redirect(:lockdown_default_redirect_url) end |
#main_app_root_url ⇒ Object
97 98 99 |
# 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) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# 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. DoorMat::AccessToken.(, 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() end set_session_redirect_to redirect_to redirect_url end |
#require_confirmed_email ⇒ Object
49 50 51 52 53 |
# 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) ⇒ Object
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)
58 59 60 61 62 63 64 65 |
# 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 ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/door_mat/controller.rb', line 36 def require_valid_session unless DoorMat::Session.current_session.valid? DoorMat::Session.from(, 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 ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/door_mat/controller.rb', line 5 def sign_out DoorMat::Session.clear_current_session DoorMat::Session.destroy_if_linked_to() DoorMat::AccessToken.clear_current_access_token DoorMat::AccessToken.destroy_if_linked_to() end |
#update_session_last_activity_time ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 |
# 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 |