class Mysqlman::Processor

Public Class Methods

new() click to toggle source
# File lib/mysqlman/processor.rb, line 3
def initialize
  @current_users = current_users
  @managed_users = managed_users
end

Public Instance Methods

apply(debug = false) click to toggle source
# File lib/mysqlman/processor.rb, line 8
def apply(debug = false)
  delete_unknown_user(debug)
  create_shortage_user(debug)
  revoke_extra_privileges(debug)
  grant_shortage_privileges(debug)
end

Private Instance Methods

create_shortage_user(_debug) click to toggle source
# File lib/mysqlman/processor.rb, line 55
def create_shortage_user(_debug)
  @managed_users.each do |user|
    user.create unless user.exists?
  end
end
current_users() click to toggle source
# File lib/mysqlman/processor.rb, line 17
def current_users
  User.all.map do |user|
    exclude_users.include?(user: user.user, host: user.host) ? nil : user
  end.compact
end
delete_unknown_user(_debug) click to toggle source

rubocop:enable Metrics/MethodLength

# File lib/mysqlman/processor.rb, line 47
def delete_unknown_user(_debug)
  @current_users.each do |cu|
    cu.drop unless @managed_users.any? do |mu|
      cu.user == mu.user && cu.host == mu.host
    end
  end
end
exclude_users() click to toggle source
# File lib/mysqlman/processor.rb, line 23
def exclude_users
  @exclude_users ||= Dir.glob("#{EXCLUDE_DIR}/*.yml").map do |file|
    YAML.load_file(file).map do |u|
      { user: u['user'], host: u['host'] || '%' }
    end
  end.flatten
end
grant_shortage_privileges(debug) click to toggle source
# File lib/mysqlman/processor.rb, line 69
def grant_shortage_privileges(debug)
  @managed_users.each do |user|
    (user.role.privs - user.privs.fetch).each do |priv|
      user.privs.grant(priv, debug)
    end
  end
end
managed_users() click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/mysqlman/processor.rb, line 32
def managed_users
  Dir.glob("#{USER_DIR}/*.yml").map do |file|
    YAML.load_file(file).map do |role, users|
      users.map do |user|
        User.new(
          role: role,
          user: user.keys.first,
          host: user['host'] || HOST_ALL
        )
      end
    end
  end.flatten
end
revoke_extra_privileges(debug) click to toggle source
# File lib/mysqlman/processor.rb, line 61
def revoke_extra_privileges(debug)
  @managed_users.each do |user|
    (user.privs.fetch - user.role.privs).each do |priv|
      user.privs.revoke(priv, debug)
    end
  end
end