Module: Clowk::Authenticable
- Extended by:
- ActiveSupport::Concern
- Included in:
- BaseController
- Defined in:
- lib/clowk/authenticable.rb
Class Method Summary collapse
Instance Method Summary collapse
- #clowk_authenticate! ⇒ Object
- #clowk_current_resource ⇒ Object
- #clowk_enforce_session! ⇒ Object
- #clowk_session_active? ⇒ Boolean
- #clowk_session_status ⇒ Object
- #clowk_sign_out! ⇒ Object
- #clowk_signed_in? ⇒ Boolean
- #current_token ⇒ Object
Class Method Details
.install_dynamic_methods(base) ⇒ 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 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/clowk/authenticable.rb', line 9 def self.install_dynamic_methods(base) scope = Clowk.config.prefix_by.to_s current_method = :"current_#{scope}" authenticate_method = :"authenticate_#{scope}!" signed_in_method = :"#{scope}_signed_in?" enforce_session_method = :"#{scope}_enforce_session!" sign_out_method = :"#{scope}_sign_out!" base.class_eval do unless current_method == :clowk_current_resource define_method(current_method) do clowk_current_resource end end unless authenticate_method == :clowk_authenticate! define_method(authenticate_method) do clowk_authenticate! end end unless signed_in_method == :clowk_signed_in? define_method(signed_in_method) do clowk_signed_in? end end unless enforce_session_method == :clowk_enforce_session! define_method(enforce_session_method) do clowk_enforce_session! end end unless sign_out_method == :clowk_sign_out! define_method(sign_out_method) do clowk_sign_out! end end helper_method current_method, authenticate_method, signed_in_method, :current_token if respond_to?(:helper_method) end end |
Instance Method Details
#clowk_authenticate! ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/clowk/authenticable.rb', line 95 def clowk_authenticate! return clowk_handle_unauthenticated unless clowk_signed_in? # A valid token proves who signed in, not that the session still stands — # revocation lives server-side. Opt in with config.enforce_active_session # to pay a lookup (cached for session_status_ttl) on every authentication. if Clowk.config.enforce_active_session clowk_enforce_session! return if respond_to?(:performed?) && performed? end clowk_current_resource end |
#clowk_current_resource ⇒ Object
57 58 59 60 61 62 |
# File 'lib/clowk/authenticable.rb', line 57 def clowk_current_resource @clowk_current_resource ||= begin payload = stored_user_payload || verified_request_payload payload ? Current.new(payload) : nil end end |
#clowk_enforce_session! ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/clowk/authenticable.rb', line 80 def clowk_enforce_session! return if clowk_session_active? session_info = clowk_session_status callback = Clowk.config.on_session_expired if callback.respond_to?(:call) callback.call(self, session_info) return end clowk_handle_expired_session(session_info) end |
#clowk_session_active? ⇒ Boolean
76 77 78 |
# File 'lib/clowk/authenticable.rb', line 76 def clowk_session_active? clowk_session_status&.dig(:status) == "active" end |
#clowk_session_status ⇒ Object
72 73 74 |
# File 'lib/clowk/authenticable.rb', line 72 def clowk_session_status @clowk_session_status ||= resolve_session_status end |
#clowk_sign_out! ⇒ Object
109 110 111 112 113 114 |
# File 'lib/clowk/authenticable.rb', line 109 def clowk_sign_out! session.delete(Clowk.config.session_key) .delete(Clowk.config.) @clowk_current_resource = nil end |
#clowk_signed_in? ⇒ Boolean
68 69 70 |
# File 'lib/clowk/authenticable.rb', line 68 def clowk_signed_in? clowk_current_resource.present? end |
#current_token ⇒ Object
64 65 66 |
# File 'lib/clowk/authenticable.rb', line 64 def current_token stored_session&.dig("token") || extracted_token end |