Last active
September 5, 2024 21:06
-
-
Save jasonheecs/9f44f9a0a90a6c446e4316b675d85eb6 to your computer and use it in GitHub Desktop.
Revisions
-
jasonheecs revised this gist
Mar 11, 2021 . 1 changed file with 0 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,4 @@ class SessionTimeoutController < Devise::SessionsController prepend_before_action :skip_timeout, only: [:check_session_timeout, :render_timeout] def check_session_timeout -
jasonheecs created this gist
Mar 11, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,36 @@ class SessionTimeoutController < Devise::SessionsController include SkipTimeouttable prepend_before_action :skip_timeout, only: [:check_session_timeout, :render_timeout] def check_session_timeout response.headers["Etag"] = "" # clear etags to prevent caching render plain: ttl_to_timeout, status: :ok end def render_timeout if current_user.present? && user_signed_in? reset_session sign_out(current_user) end flash[:alert] = t("devise.failure.timeout", default: "Your session has timed out.") redirect_to login_path end private def ttl_to_timeout return 0 if user_session.blank? Devise.timeout_in - (Time.now.utc - last_request_time).to_i end def last_request_time user_session["last_request_at"].presence || 0 end def skip_timeout request.env["devise.skip_trackable"] = true end end