module PrxAuth::Rails::Controller
Constants
- PRX_AUTH_ENV_KEY
- PRX_JWT_REFRESH_TTL
- PRX_JWT_SESSION_KEY
- PRX_REFRESH_BACK_KEY
Public Instance Methods
Source
# File lib/prx_auth/rails/ext/controller.rb, line 72 def after_sign_in_user_redirect session[PRX_REFRESH_BACK_KEY] end
Source
# File lib/prx_auth/rails/ext/controller.rb, line 45 def authenticate! if !current_user set_after_sign_in_path redirect_to new_sessions_path elsif !current_user_access? redirect_to access_error_sessions_path else true end end
Source
# File lib/prx_auth/rails/ext/controller.rb, line 57 def prx_auth_needs_refresh?(jwt_ttl) if jwt_ttl < 0 true elsif jwt_ttl < PRX_JWT_REFRESH_TTL request.get? && !request.headers["Turbo-Frame"] else false end end
trigger refresh on a non-turbo GET request, if possible
Source
# File lib/prx_auth/rails/ext/controller.rb, line 24 def prx_auth_token env_token || session_token rescue SessionTokenExpiredError session.delete(PRX_JWT_SESSION_KEY) session.delete(PRX_ACCOUNT_MAPPING_SESSION_KEY) session.delete(PRX_USER_INFO_SESSION_KEY) nil end
Source
# File lib/prx_auth/rails/ext/controller.rb, line 41 def prx_authenticated? !!prx_auth_token end
Source
# File lib/prx_auth/rails/ext/controller.rb, line 37 def prx_jwt session[PRX_JWT_SESSION_KEY] end
Source
# File lib/prx_auth/rails/ext/controller.rb, line 33 def set_after_sign_in_path(path = nil) session[PRX_REFRESH_BACK_KEY] = path || request.fullpath end
Source
# File lib/prx_auth/rails/ext/controller.rb, line 67 def sign_in_user(token) session[PRX_JWT_SESSION_KEY] = token accounts_for(current_user.resources) end
Source
# File lib/prx_auth/rails/ext/controller.rb, line 76 def sign_out_user reset_session end
Private Instance Methods
Source
# File lib/prx_auth/rails/ext/controller.rb, line 83 def env_token @env_token_data ||= if request.env[PRX_AUTH_ENV_KEY] token_data = request.env[PRX_AUTH_ENV_KEY] PrxAuth::Rails::Token.new(token_data) end end
token from data set by prx_auth rack middleware
Source
# File lib/prx_auth/rails/ext/controller.rb, line 91 def session_token @session_prx_auth_token ||= if prx_jwt # NOTE: we already validated this jwt - so just decode it validator = Rack::PrxAuth::AuthValidator.new(prx_jwt) # does this jwt need to be refreshed? if prx_auth_needs_refresh?(validator.time_to_live) raise SessionTokenExpiredError.new end # create new data/token from access claims token_data = Rack::PrxAuth::TokenData.new(validator.claims) PrxAuth::Rails::Token.new(token_data) end end
token from jwt stored in session