fix object auth. show error message if user try to do object auth in a wrong way.

This commit is contained in:
Fu Matthew 2013-01-02 14:34:34 +08:00
parent 9937b4ac9b
commit 32c6f17613
7 changed files with 68 additions and 6 deletions

View File

@ -4,7 +4,6 @@ class Admin::ObjectAuthsNewInterfaceController < OrbitBackendController
def setting def setting
@sys_users = User.all(conditions: {admin: false}).includes(:avatar).not_guest_user @sys_users = User.all(conditions: {admin: false}).includes(:avatar).not_guest_user
@ob_auth = ObjectAuth.find params[:object_auth_id] @ob_auth = ObjectAuth.find params[:object_auth_id]
@options_from_collection_for_select_ob_auth = @ob_auth.siblings.collect{|oa| [oa.auth_obj.pp_object,oa.id] } @options_from_collection_for_select_ob_auth = @ob_auth.siblings.collect{|oa| [oa.auth_obj.pp_object,oa.id] }
@ -60,6 +59,7 @@ class Admin::ObjectAuthsNewInterfaceController < OrbitBackendController
def force_order def force_order
authenticate_user! authenticate_user!
setup_vars
check_if_user_can_do_object_auth check_if_user_can_do_object_auth
end end
@ -76,15 +76,25 @@ class Admin::ObjectAuthsNewInterfaceController < OrbitBackendController
end end
def setup_vars def setup_vars
if request.env['HTTP_REFERER'].split('/')[4] == "object_auths" http_referer = request.env['HTTP_REFERER'] || ''
if http_referer.split('/')[4] == "object_auths"
@app_key = params[:app_key] @app_key = params[:app_key]
else else
@app_key = request.env['HTTP_REFERER'].split('/')[4] @app_key = http_referer.split('/')[4]
end end
#@app_key = request.fullpath.split('/')[1] if(@app_key == "back_end") #@app_key = request.fullpath.split('/')[1] if(@app_key == "back_end")
if @app_key
@app_key.gsub!(/[?].*/,'') @app_key.gsub!(/[?].*/,'')
@module_app = ModuleApp.first(conditions: {:key => @app_key} ) @module_app = ModuleApp.first(conditions: {:key => @app_key} )
if @module_app.nil?
raise ObjectAuthError, 'Auth procress failed, module_app not exist '
end
else
raise ObjectAuthError, 'Auth procress failed, pls redo your sop'
end
end end
end end

View File

@ -2,6 +2,8 @@ class ApplicationController < ActionController::Base
protect_from_forgery protect_from_forgery
include ParserFrontEnd, ParserBackEnd, ApplicationHelper include ParserFrontEnd, ParserBackEnd, ApplicationHelper
include OrbitApp::ErrorHandlers::ObjectAuthErrorHandler
rescue_from ObjectAuthError, :with => :render_object_auth_error
layout :layout_by_resource layout :layout_by_resource
@ -10,6 +12,8 @@ class ApplicationController < ActionController::Base
helper_attr :site_valid_locales helper_attr :site_valid_locales
def set_current_user def set_current_user
User.current = current_or_guest_user User.current = current_or_guest_user
end end

View File

@ -0,0 +1,3 @@
class ObjectAuthError < StandardError
end

View File

@ -0,0 +1,11 @@
module Admin::PagePartsHelper
def support_link
url_method = @module_app.get_default_widget[:url_method]
unless url_method.nil?
res = "Link:"
res << select_tag( "page_part[widget_field_is_link][]", options_for_select([["NotLink",false],["Link1",url_method]]))
res.html_safe
end
end
end

View File

@ -0,0 +1,14 @@
module DefaultWidgetsHelper
def get_row_data(row_data,field)
field_is_link = (field[0][1]== 'false' ? false : true )
field_setting = {:class=>field[0][1],:method=>field[0][0]}
if field_is_link
field_link = field[0][1].to_s + '_path'
binding.pry
link = link_to(row_data.send(field_setting[:method]),field_link.send(row_data))
content_tag(:span,link,:class=>field_setting[:class])
else
content_tag(:span,row_data.send(field_setting[:method]),:class=>field_setting[:class])
end
end
end

View File

@ -0,0 +1,16 @@
module OrbitApp
module ErrorHandlers
module ObjectAuthErrorHandler
def render_object_auth_error(exception = nil)
default_message = 'This is a render_object_auth_error'
meaasge = ''
if exception
meaasge = default_message + exception.message
end
render :text=>meaasge
end
end
end
end

View File

@ -328,4 +328,8 @@ namespace :migrate do
end end
task :clean_object_auth => :environment do
ObjectAuth.destroy_all
end
end end