module Challah::UserProvideable
Public Instance Methods
method_missing(method, *args)
click to toggle source
Calls superclass method
# File lib/challah/concerns/user/provideable.rb, line 10 def method_missing(method, *args) method_name = method.to_s if method_name =~ /^([a-z]*)_provider\?$/ return provider?($1) elsif method_name =~ /^([a-z]*)_provider$/ return provider($1) end super end
provider(provider_name)
click to toggle source
# File lib/challah/concerns/user/provideable.rb, line 50 def provider(provider_name) providers[provider_name.to_sym] end
provider?(provider_name)
click to toggle source
Does this user have the given provider name
# File lib/challah/concerns/user/provideable.rb, line 46 def provider?(provider_name) !!provider(provider_name) end
provider_attributes()
click to toggle source
# File lib/challah/concerns/user/provideable.rb, line 54 def provider_attributes @provider_attributes ||= Challah.providers.keys.inject({}) { |h, m| h[m] = nil; h } end
provider_attributes=(value)
click to toggle source
# File lib/challah/concerns/user/provideable.rb, line 58 def provider_attributes=(value) if Hash === value @provider_attributes = value.keys.inject({}) do |h, m| h[m.to_sym] = (value[m].respond_to?(:symbolize_keys) ? value[m].symbolize_keys : value[m]) h end end end
providers()
click to toggle source
# File lib/challah/concerns/user/provideable.rb, line 22 def providers return @providers if @providers @providers = {} attributes = self.class.authorization_model.hashable_attributes # Grab providers from existing authorization records @providers = authorizations.inject({}) do |hash, m| hash[m.provider.to_sym] = attributes.inject({}) { |p, a| p[a.to_sym] = m.send(a); p } hash end # Then, grab any provider attributes provided provider_attributes.each do |k, v| if v.respond_to?(:fetch) @providers[k] = v end end @providers end
valid_provider?(provider_name)
click to toggle source
# File lib/challah/concerns/user/provideable.rb, line 67 def valid_provider?(provider_name) name = provider_name.to_sym if Challah.providers.keys.include?(name) Challah.providers[name].valid?(self) else false end end
Protected Instance Methods
clear_cached_providers_after_save()
click to toggle source
# File lib/challah/concerns/user/provideable.rb, line 79 def clear_cached_providers_after_save @providers = nil end
update_modified_providers_after_save()
click to toggle source
If password or username was changed, update the authorization record
# File lib/challah/concerns/user/provideable.rb, line 84 def update_modified_providers_after_save # Save password provider if @password_updated or @username_updated Challah.providers[:password].save(self) @password_updated = false @username_updated = false @password = nil end # Save any other providers Challah.custom_providers.each do |name, klass| custom_provider_attributes = provider_attributes[name] if custom_provider_attributes.respond_to?(:fetch) if klass.valid?(self) klass.save(self) end end end end