module ZuoraConnect::Controllers::Helpers
def authenticate_app_api_request
def authenticate_app_api_request authenticate_or_request_with_http_basic do |username, password| @appinstance = ZuoraConnect::AppInstance.where(:refresh_token => password).first if !@appinstance.blank? @appinstance.new_session(:session => {}) else render text: "Access Denied", status: :unauthorized end end end
def authenticate_connect_app_request
def authenticate_connect_app_request if ZuoraConnect.configuration.mode == "Production" if request["data"] setup_instance_via_data else setup_instance_via_session end @appinstance.new_session(:session =>instance_data_lookup(@appinstance.id, @appinstance.access_token)) I18n.locale = session["#{@appinstance.id}::user::locale"] ? session["#{@appinstance.id}::user::locale"] : ZuoraConnect.configuration.default_locale Time.zone = session["#{@appinstance.id}::user::timezone"] ? session["#{@appinstance.id}::user::timezone"] : ZuoraConnect.configuration.default_time_zone else setup_instance_via_dev_mode I18n.locale = session["#{@appinstance.id}::user::locale"] ? session["#{@appinstance.id}::user::locale"] : ZuoraConnect.configuration.default_locale Time.zone = session["#{@appinstance.id}::user::timezone"] ? session["#{@appinstance.id}::user::timezone"] : ZuoraConnect.configuration.default_time_zone end end
def check_connect_admin
def check_connect_admin return session["#{@appinstance.id}::admin"] end
def check_connect_admin!
def check_connect_admin! raise ZuoraConnect::Exceptions::AccessDenied.new("User is not an authorized admin for this application") if !session["#{@appinstance.id}::admin"] end
def instance_data_lookup(id = nil, user = nil)
def instance_data_lookup(id = nil, user = nil) return session.blank? ? {} : session end
def persist_connect_app_session
def persist_connect_app_session session.merge!(@appinstance.save_data) end
def setup_instance_via_data
def setup_instance_via_data session["valid"] |= false reset_session 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"]}::destroy"] = values["destroy"] session["#{values["appInstance"]}::valid"] = false session["appInstance"] = values["appInstance"] if values["current_user"] session["#{values["appInstance"]}::admin"] = values["current_user"]["admin"] ? values["current_user"]["admin"] : false session["#{values["appInstance"]}::user::timezone"] = values["current_user"]["timezone"] session["#{values["appInstance"]}::user::locale"] = values["current_user"]["locale"] session["#{values["appInstance"]}::user::email"] = values["current_user"]["email"] end @appinstance = ZuoraConnect::AppInstance.where(:id => values["appInstance"].to_i).first if @appinstance.blank? Apartment::Tenant.switch!("public") Apartment::Tenant.create(values["appInstance"].to_i) @appinstance = ZuoraConnect::AppInstance.create!(:id => values["appInstance"].to_i, :access_token => values["user"], :refresh_token => values["key"]) end if @appinstance.access_token.blank? || @appinstance.refresh_token.blank? @appinstance.update_attributes(:access_token => values["user"], :refresh_token => values["key"]) end end
def setup_instance_via_dev_mode
def setup_instance_via_dev_mode session["appInstance"] = "1" session["valid"] = true values = {:user => "test" , :key => "test", :appinstance => "1"} @appinstance = ZuoraConnect::AppInstance.where(:id => values[:appinstance].to_i).first if @appinstance.blank? Apartment::Tenant.switch!("public") Apartment::Tenant.create(values[:appinstance].to_i) @appinstance = ZuoraConnect::AppInstance.create!(:id => values[:appinstance].to_i, :access_token => values[:user], :refresh_token => values[:key]) end if @appinstance.access_token.blank? || @appinstance.refresh_token.blank? @appinstance.update_attributes(:access_token => values["user"], :refresh_token => values["key"]) end end
def setup_instance_via_session
def setup_instance_via_session if !session["appInstance"].blank? @appinstance = ZuoraConnect::AppInstance.where(:id => session["appInstance"]).first else raise ZuoraConnect::Exceptions::SessionInvalid.new("Session Blank -- Relaunch Application") end end