class Mkxms::Mssql::PermissionGroup

Constants

ACTION_STATEMENT_PROLOG_TEMPLATES

Attributes

action[RW]
permissions[R]
subject[RW]

Public Class Methods

new(action, subject) click to toggle source
# File lib/mkxms/mssql/permission_handler.rb, line 12
def initialize(action, subject)
  @action = action
  @subject = subject
  @permissions = []
end

Public Instance Methods

is_super_permission?(p) click to toggle source
# File lib/mkxms/mssql/permission_handler.rb, line 39
def is_super_permission?(p)
  action != 'granted' || p.grant_option?
end
regular_permissions() click to toggle source
# File lib/mkxms/mssql/permission_handler.rb, line 47
def regular_permissions
  permissions.select {|p| !is_super_permission? p}
end
regular_permissions_graph() click to toggle source
# File lib/mkxms/mssql/permission_handler.rb, line 31
def regular_permissions_graph
  Hash.new.tap do |result|
    regular_permissions.sort {|a, b| a.target <=> b.target}.group_by {|p| p.target}.each_pair do |target, perms|
      result[target] = perms.map(&:name)
    end
  end
end
super_permissions() click to toggle source
# File lib/mkxms/mssql/permission_handler.rb, line 43
def super_permissions
  permissions.select {|p| is_super_permission? p}
end
super_permissions_sql() click to toggle source
# File lib/mkxms/mssql/permission_handler.rb, line 21
def super_permissions_sql
  super_permissions.map do |p|
    ''.tap do |sql|
      sql << ACTION_STATEMENT_PROLOG_TEMPLATES[action] % [p.name, p.target, subject]
      sql << ' WITH GRANT OPTION' if p.grant_option?
      sql << ';'
    end
  end
end