class Teneo::DataModel::User

noinspection RailsParamDefResolve

Public Class Methods

from_hash(hash) click to toggle source

@param [Hash] hash

Calls superclass method Teneo::DataModel::Base::from_hash
# File lib/teneo/data_model/user.rb, line 34
def self.from_hash(hash)
  roles = hash.delete(:roles)
  item = super(hash, [:email])
  item.memberships.clear
  if roles
    roles.each do |role|
      organization_name = role[:organization]
      org = Teneo::DataModel::Organization.find_by(name: organization_name)
      puts "Could not find organization '#{organization_name}'" unless org
      role_code = role[:role]
      if Teneo::DataModel::Membership::ROLE_LIST.include? role_code
        item.add_role(role_code, org) if org
      else
        puts "Invalid role '#{role_code}'"
      end
    end
    item.save!
  end
  item
end

Public Instance Methods

add_role(role, organization) click to toggle source

@param [String] role @param [Organization] organization @return [Membership]

# File lib/teneo/data_model/user.rb, line 86
def add_role(role, organization)
  self.memberships.build(organization: organization, role: role)
end
del_role(role, organization) click to toggle source

@param [String] role @param [Organization] organization

# File lib/teneo/data_model/user.rb, line 92
def del_role(role, organization)
  m = self.memberships.find_by(organization: organization, role: role)
  m&.destroy!
end
init() click to toggle source
# File lib/teneo/data_model/user.rb, line 24
def init
  self.uuid ||= SecureRandom.uuid
end
is_authorized?(role, organization) click to toggle source

@param [String] role @param [Organization] organization @return [boolean]

# File lib/teneo/data_model/user.rb, line 79
def is_authorized?(role, organization)
  self.roles_for(organization).include?(role)
end
member_organizations() click to toggle source

@return [Hash<Organization, Array<String>>]

# File lib/teneo/data_model/user.rb, line 98
def member_organizations
  # noinspection RubyResolve
  self.memberships.reduce({}) do |h, m|
    h[m.organization] ||= []
    h[m.organization].push(m.role)
    h
  end
end
name() click to toggle source
# File lib/teneo/data_model/user.rb, line 29
def name
  "#{first_name} #{last_name}"
end
organizations_for(role) click to toggle source

@param [String] role @return [Array<Organization>]

# File lib/teneo/data_model/user.rb, line 72
def organizations_for(role)
  self.memberships.where(role: role).map(&:organization) rescue []
end
roles_for(organization) click to toggle source

@param [Organization] organization @return [Array<String>]

# File lib/teneo/data_model/user.rb, line 66
def roles_for(organization)
  self.memberships.where(organization: organization).map(&:role) rescue []
end