class Ez::Permissions::DSL
Attributes
resources[R]
Public Class Methods
define() { |instance| ... }
click to toggle source
# File lib/ez/permissions/dsl.rb, line 10 def self.define yield DSL.instance end
new()
click to toggle source
# File lib/ez/permissions/dsl.rb, line 31 def initialize @resources = [] end
resource(name)
click to toggle source
# File lib/ez/permissions/dsl.rb, line 18 def self.resource(name) DSL.instance.resources.find { |r| r.name.to_sym == name.to_sym } end
resource_action?(resource_name, action_name)
click to toggle source
# File lib/ez/permissions/dsl.rb, line 22 def self.resource_action?(resource_name, action_name) registed_resource = resource(resource_name) action = registed_resource.actions.include?(action_name.to_sym) if registed_resource registed_resource && action ? true : false end
resources()
click to toggle source
# File lib/ez/permissions/dsl.rb, line 14 def self.resources DSL.instance.resources end
Public Instance Methods
add(name, options = {})
click to toggle source
# File lib/ez/permissions/dsl.rb, line 35 def add(name, options = {}) return message("Resource [#{name}] has been already defined!") if self.class.resource(name) resource = Ez::Permissions::Resource.new(name, options) @resources << resource return unless seed_to_db(resource) message( "Resource [#{name}] has been successfully registered with actions: [#{resource.actions.join(', ')}]", 'SUCCESS' ) end
Private Instance Methods
check_permissions_table()
click to toggle source
# File lib/ez/permissions/dsl.rb, line 77 def check_permissions_table permissions_table = Ez::Permissions.config.permissions_table_name return true if ActiveRecord::Base.connection.data_source_exists?(permissions_table) message("Table #{permissions_table} does not exists. Please, check migrations") false end
message(txt, level = 'WARN')
click to toggle source
# File lib/ez/permissions/dsl.rb, line 52 def message(txt, level = 'WARN') return if Ez::Permissions.config.mute_stdout $stdout.puts("[#{level}] Ez::Permissions: #{txt}") end
seed_to_db(resource)
click to toggle source
# File lib/ez/permissions/dsl.rb, line 58 def seed_to_db(resource) return unless try_db_connection return unless check_permissions_table resource.actions.each do |action| Ez::Permissions::Permission.where( resource: resource.name, action: action ).first_or_create! end end
try_db_connection()
click to toggle source
# File lib/ez/permissions/dsl.rb, line 70 def try_db_connection ActiveRecord::Base.connection rescue ActiveRecord::NoDatabaseError message('Database does not exist') false end