Sha256: 003ab9da975853538a473d120be3fcf91c1b562aa3c749ff74d008dd5b7fd0fe
Contents?: true
Size: 1.29 KB
Versions: 1
Compression:
Stored size: 1.29 KB
Contents
module SwitchUser class DataSources attr_reader :sources def initialize(sources) @sources = sources end def all sources.flat_map { |source| source.all } end def find_scope_id(scope_id) sources.map {|source| source.find_scope_id(scope_id) }.compact.first end end class DataSource attr_reader :loader, :scope, :identifier, :name def initialize(loader, scope, identifier, name) @loader = loader @scope = scope @identifier = identifier @name = name end def all loader.call.select(identifier, name).map { |user| Record.new(user, self) } end def find_scope_id(scope_id) user = loader.call.find_by identifier => scope_id.delete("#{scope}_") Record.new(user, self) end end class GuestDataSource def users [ GuestRecord.new ] end def find_scope_id(scope_id) end end class Record attr_reader :user, :source def initialize(user, source) @user = user @source = source end def label user.send(source.name) end def scope source.scope end def scope_id "#{source.scope}_#{user.send(source.identifier)}" end end class GuestRecord def label "Guest" end def scope_id end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
switch_user-1.0.0 | lib/switch_user/data_source.rb |