module Operations

Constants

VERSION

Public Class Methods

allowed_int_roles_for(scope) click to toggle source
# File lib/operations.rb, line 61
def allowed_int_roles_for(scope)
  allowed_named_roles_for(scope)
      .map{|named_scope| user_role_int_from(named_scope)}
end
allowed_named_roles_for(scope) click to toggle source
# File lib/operations.rb, line 48
def allowed_named_roles_for(scope)
  current_value = user_role_value_from(scope)
  user_roles
      .select{|role| role[:name] == :all ||
          !role[:value].nil? && role[:value] <= current_value}
      .map{|role| role[:name]}
end
allowed_value_roles_for(scope) click to toggle source
# File lib/operations.rb, line 66
def allowed_value_roles_for(scope)
  allowed_named_roles_for(scope)
      .map{|named_scope| user_role_value_from(named_scope)}
end
allowing(scope) click to toggle source

Returns the operations that have scope scope

# File lib/operations.rb, line 43
def allowing(scope)
  return nil if scope.blank?
  operations_list.select{|operation| operation > scope}
end
allows?(user, name) click to toggle source

Determines if the user is allowed to execute the operation name

# File lib/operations.rb, line 72
def allows?(user, name)
  operation = from_string(name)
  return false if operation.nil?
  operation.users.map{|u| u.id}.include?(user.id)
end
from_string(name) click to toggle source

Returns the operation associated with the passed in name

# File lib/operations.rb, line 38
def from_string(name)
  operations_list.select{|operation| operation.name.to_s == name.to_s}[0]
end
from_user_type(scope) click to toggle source
# File lib/operations.rb, line 56
def from_user_type(scope)
  value = allowed_named_roles_for(scope.to_sym)
  scopes = value.reject{|role| role.nil?}
end
from_uuid(uuid) click to toggle source

Returns the operation associated with the passed in UUID

# File lib/operations.rb, line 33
def from_uuid(uuid)
  operations_list.select{|operation| operation.uuid == uuid}[0]
end
named_user_roles(all: false) click to toggle source
# File lib/operations.rb, line 22
def named_user_roles(all: false)
  roles = Operations::Config.user_roles
  roles = roles.reject{|role| role[:db_value].nil?} unless all
  roles.map{|role| role[:name]}
end
operations_for(scope) click to toggle source
# File lib/operations.rb, line 114
def operations_for(scope)
  scopes = scopes_as(scope)
  list = operations_list
  if %w{all nobody}.include?(scope.to_s)
    list.select{|op| op == scope}.uniq
  else
    list.select{|op| op >= scope}.uniq
  end
end
operations_list() click to toggle source
# File lib/operations.rb, line 14
def operations_list
  Operations::Config.get_operations_list
end
operations_list_by_uuid() click to toggle source
# File lib/operations.rb, line 28
def operations_list_by_uuid
  operations_list.map{|op| {operation: op, uuid: op.uuid}}
end
scopes_as(scope) click to toggle source
# File lib/operations.rb, line 105
def scopes_as(scope)
  value = user_role_value_from(scope)
  return [] if value.nil?
  return [scope] if %w{all nobody}.include?(scope.to_s)
  user_roles
      .select{|role| role[:value] && role[:value] >= value}
      .map{|role| role[:name]}
end
user_role_int_from(role_name) click to toggle source
# File lib/operations.rb, line 134
def user_role_int_from(role_name)
  result = user_roles.select{|role| role[:name] == role_name}[0]
  return nil if result.nil?
  result[:db_value]
end
user_role_name_from(role_int) click to toggle source
# File lib/operations.rb, line 146
def user_role_name_from(role_int)
  result = user_roles.select{|role| role[:db_value] == role_int}[0]
  return nil if result.nil?
  result[:name]
end
user_role_value_from(role_name) click to toggle source
# File lib/operations.rb, line 140
def user_role_value_from(role_name)
  result = user_roles.select{|role| role[:name] == role_name}[0]
  return nil if result.nil?
  result[:value]
end
user_roles() click to toggle source
# File lib/operations.rb, line 18
def user_roles
  Operations::Config.user_roles
end
user_roles_from(role_name, select_only: false) click to toggle source

Returns a list of users roles that qualify as role_name

# File lib/operations.rb, line 84
def user_roles_from(role_name, select_only: false)
  value = user_role_value_from(role_name)
  return [] if value.nil?
  compare =-> (role, value) do
    select_only ? role[:value] == value : role[:value] <= value
  end
  user_roles
      .select{|role| role[:value] && compare.call(role, value)}
      .map{|role| role[:db_value]}
      .reject{|res| res.nil?}
end
user_roles_names() click to toggle source

Returns a list of user roles names straight from the config file

# File lib/operations.rb, line 79
def user_roles_names
  user_roles.map{|ur| ur[:name]}
end
user_roles_until(role_name) click to toggle source

Returns a list of users roles that do not qualify as role_name

# File lib/operations.rb, line 97
def user_roles_until(role_name)
  value = user_role_value_from(role_name)
  return [] if value.nil?
  user_roles
      .select{|role| role[:value] && role[:value] > value}
      .map{|role| role[:db_value]}
end
users_acting_as(role_name, select_only: false) click to toggle source

Returns a list of users that have roles user_roles_from

# File lib/operations.rb, line 125
def users_acting_as(role_name, select_only: false)
  User.where(role: user_roles_from(role_name, select_only: select_only))
end
users_denied_from(role_name) click to toggle source

Returns a list of users that have roles user_roles_until

# File lib/operations.rb, line 130
def users_denied_from(role_name)
  User.where(role: user_roles_until(role_name))
end