class AppBaseController
Public Class Methods
add_create_stub(model)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 55 def add_create_stub(model) add_create_or_update_stub :create, model, %- obj = #{model.name}.new(params.except(:action, :controller, :id).permit(#{permits(model, true)})) - end
add_delete_stub(model)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 69 def add_delete_stub(model) m = model.name self.class_eval %- def delete_#{AppBase.underscore m} obj = #{m}.find(params[:id]) if obj.nil? return render json: { status: 'error', msg: 'not_found' } end if !#{m}.allow_delete?(current_user, obj) render json: { status: "error", msg: "unauthorized" } else obj.delete render json: { status: 'ok' } end rescue Exception => e render json: { status: 'error', msg: e.to_s } end - end
add_query_stub(model)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 89 def add_query_stub(model) m = model.name self.class_eval %- def query_#{AppBase.underscore m} query = #{m}.accessible_by(current_user) params.except(:action, :controller, :p, :ps).each { |k, v| op = 'eq' k = k.to_s if k.index('.') && k.split('.').count == 2 k, op = k.split('.') end k = k.to_sym operators = #{m}.appbase_queryable_operators[k] unless #{m}.appbase_queryable_columns.index(k).nil? case op when 'eq' query = query.where "\#{k} = ?", v if operators.nil? || !operators.index(:equal).nil? when 'lt' query = query.where "\#{k} < ?", v if operators.nil? || !operators.index(:compare).nil? when 'le' query = query.where "\#{k} <= ?", v if operators.nil? || !operators.index(:compare).nil? when 'gt' query = query.where "\#{k} > ?", v if operators.nil? || !operators.index(:compare).nil? when 'ge' query = query.where "\#{k} >= ?", v if operators.nil? || !operators.index(:compare).nil? when 'n' query = query.where "\#{k} IS NULL" if operators.nil? || !operators.index(:equal).nil? when 'nn' query = query.where "\#{k} IS NOT NULL" if operators.nil? || !operators.index(:equal).nil? when 'in' if operators.nil? || !operators.index(:in).nil? values = JSON.parse v query = query.where "\#{k} IN (?)", values end when 'nin' if operators.nil? || !operators.index(:in).nil? values = JSON.parse v query = query.where "\#{k} NOT IN (?)", values end else end end } page_size = [1, (params[:ps]||20).to_i].max start = [0, (params[:p]||1).to_i.pred].max * page_size render json: { status: 'ok', data: query.offset(start).limit(page_size) } rescue Exception => e render json: { status: 'error', msg: e.to_s } end - end
add_rpc_method_stub(bound_method, auth=false)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 141 def add_rpc_method_stub(bound_method, auth=false) RpcMethodStubHelper.new(bound_method, auth).add_stub(self) end
add_update_stub(model)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 61 def add_update_stub(model) add_create_or_update_stub :update, model, %- obj = #{model.name}.find(params[:id]) raise 'not_found' if obj.nil? obj.update_attributes(params.except(:action, :controller, :id).permit(#{permits(model, true)})) - end
define_useridentity(user_identity, token_store, token_key_user, token_key_session)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 13 def define_useridentity(user_identity, token_store, token_key_user, token_key_session) self.class_eval %- def current_user(options={}) if #{token_store}[:#{token_key_user}].nil? || #{token_store}[:#{token_key_session}].nil? return options[:default] if options.has_key? :default raise "unauthenticated" end user = #{user_identity}.authenticate_by_token(#{token_store}[:#{token_key_user}], #{token_store}[:#{token_key_session}]) if user.nil? return options[:default] if options.has_key? :default raise "unauthenticated" end user end - end
permits(model, arg_str=false)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 30 def permits(model, arg_str=false) if arg_str "[#{model.columns.map { |item| ":" + item.name }.join(", ")}]" else model.columns.map { |item| item.name.to_sym } end end
Private Class Methods
add_create_or_update_stub(op, model, prepare)
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 38 def add_create_or_update_stub(op, model, prepare) m = model.name self.class_eval %- def #{op}_#{AppBase.underscore m} #{prepare} raise "unauthorized" if !#{m}.allow_#{op}?(current_user, obj) obj.save! rs = { status: 'ok' } #{ 'rs[:id] = obj.id' if op == :create } render json: rs rescue Exception => e render json: { status: 'error', msg: e.to_s } end - end
Public Instance Methods
current_user()
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 7 def current_user nil end
version()
click to toggle source
# File lib/appbase/controllers/app_base_controller.rb, line 3 def version render json: AppBase::VERSION end