Method: GoodData::Project#whitelist_users

Defined in:
lib/gooddata/models/project.rb

#whitelist_users(new_users, users_list, whitelist, mode = :exclude) ⇒ Object



1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
# File 'lib/gooddata/models/project.rb', line 1823

def whitelist_users(new_users, users_list, whitelist, mode = :exclude)
  return [new_users, users_list] unless whitelist

  new_whitelist_proc = proc do |user|
    whitelist.any? do |wl|
      if wl.is_a?(Regexp)
        user[:login] =~ wl
      else
        user[:login] && user[:login] == wl
      end
    end
  end

  whitelist_proc = proc do |user|
    whitelist.any? do |wl|
      if wl.is_a?(Regexp)
        user. =~ wl
      else
        user. && user. == wl
      end
    end
  end

  if mode == :include
    [new_users.select(&new_whitelist_proc), users_list.select(&whitelist_proc)]
  elsif mode == :exclude
    [new_users.reject(&new_whitelist_proc), users_list.reject(&whitelist_proc)]
  end
end