module ZuoraConnect::Controllers::Helpers
def authenticate_connect_app_request
def authenticate_connect_app_request if ZuoraConnect.configuration.mode == "Production" instance_id = process_encrypted_response if session["appInstance"] if ZuoraConnect::AppInstance.where(:id => instance_id).size == 0 Apartment::Tenant.switch!("public") Apartment::Tenant.create(instance_id) ZuoraConnect::AppInstance.create!(:id => instance_id ) end @appinstance = ZuoraConnect::AppInstance.find(instance_id) begin @appinstance.new_session(session["#{instance_id}::user"], session["#{instance_id}::key"], session) I18n.locale = session["#{instance_id}::user::timezone"] ? session["#{instance_id}::user"] : ZuoraConnect.configuration.default_locale Time.zone = session["#{instance_id}::user::locale"] ? session["#{instance_id}::user"] : ZuoraConnect.configuration.default_time_zone rescue redirect_to ZuoraConnect.configuration.session_error_path end else redirect_to ZuoraConnect.configuration.invalid_app_instance_error_path end else dev_mode instance_id = session["appInstance"].to_i if session["appInstance"] if ZuoraConnect::AppInstance.where(:id => instance_id).size == 0 Apartment::Tenant.switch!("public") Apartment::Tenant.create(instance_id) ZuoraConnect::AppInstance.create!(:id => instance_id ) end @appinstance = ZuoraConnect::AppInstance.find(instance_id) else redirect_to "/500.html" end @appinstance.options = ZuoraConnect.configuration.dev_mode_options ZuoraConnect.configuration.dev_mode_logins.each do |k,v| tmp = ZuoraConnect::Login.new(v) tmp.client.current_session = session["#{self.id}::#{k}:session"] if !session.nil? && v["tenant_type"] == "Zuora" && session["#{self.id}::#{k}:session"] @appinstance.logins[k] = tmp @appinstance.attr_builder(k, tmp) end @appinstance.mode = ZuoraConnect.configuration.dev_mode_mode end end
def check_connect_admin
def check_connect_admin redirect_to "/500.html" if !session["#{@appinstance.id}::admin"] end
def dev_mode
def dev_mode session["appInstance"] = "1" session["1::user"] = "test" session["1::key"] = "test" session["1::valid"] = true end
def persist_connect_app_session
def persist_connect_app_session session.merge!(@appinstance.save_data) end
def process_encrypted_response
def process_encrypted_response session["valid"] |= false if request["data"] values = JSON.parse(ZuoraConnect::AppInstance.decrypt_response(Base64.urlsafe_decode64(request["data"]))) if values["param_data"] values["param_data"].each do |k ,v| params[k] = v end end session["#{values["appInstance"]}::user::timezone"] = values["timezone"] session["#{values["appInstance"]}::user::locale"] = values["local"] session["#{values["appInstance"]}::user"] = values["user"] session["#{values["appInstance"]}::key"] = values["key"] session["#{values["appInstance"]}::valid"] = false session["appInstance"] = values["appInstance"] session["#{values["appInstance"]}::admin"] = values["admin"] ? values["admin"] : false end return session["appInstance"] end