module OrbitCoreLib module Preview def self.included(base) base.class_eval (" def to_preview raise 'Developer,please override to_preview method' end ") end end module ObjectDisable def self.included(base) base.instance_eval("field :disable,type: Boolean,:default => false") base.instance_eval("scope :all, ->{ where(:disable.in => [false, nil, '']) }") base.instance_eval("scope :admin_manager_all, ->{ find(:all) }") base.define_singleton_method :find do |*args| if args ==[:all] unscoped else res = unscoped.find(args) res.count == 1 ? res[0] : res end end base.define_singleton_method :first do |*args| all.first end base.define_singleton_method :last do |*args| all.last end end end module Authorize def self.included(base) base.class_eval do before_filter :can_use send :include, InstanceMethods end end module InstanceMethods protected def can_use @app_title ||= controller_path.split('/')[1].singularize rescue nil @module_app ||= ModuleApp.find_by(key: @app_title) rescue nil @module_app = ModuleApp.find(params[:module_app_id]) if @module_app.key == "category" || "tag" rescue nil if @module_app.nil? o = OrbitApp::Module::Registration.find_by_url(controller_path) @app_title = o.key rescue nil @module_app ||= ModuleApp.find_by(key: @app_title) rescue nil end @module_authorized_users ||= Authorization.module_authorized_users(@module_app.id).pluck(:user_id) rescue nil if current_user.nil? redirect_to new_session_path return end if !@module_app.nil? check_user_can_use else if !current_user.is_admin? render "public/401" end end end def check_user_can_use permissions = {} @module_app.get_registration.get_side_bar.get_context_links.each do |link| l = (Rails.application.routes.url_helpers.send(link.path) rescue Rails.application.routes.url_helpers.send(link.path, {:module_app_id => @module_app.id})) if l == request.path.sub("/" + I18n.locale.to_s,"") permissions["link"] = l permissions["available_for"] = link.available_for break end end if !permissions.empty? if !allow?(permissions["available_for"] || ["admin"]) render "public/401" , layout: "back_end" if !current_user.nil? end end end def allow?(af) if !current_user.nil? status = "users" if current_user.is_admin? status = "admin" elsif current_user.is_manager?(@module_app) status = "managers" elsif current_user.is_manager_with_role?(@module_app) status = "managers" elsif current_user.is_sub_manager?(@module_app) status = "sub_managers" elsif current_user.is_sub_manager_with_role?(@module_app) status = "sub_managers" elsif current_user.is_normal_user? status = "users" end return af.include?status else return false end end end end end