Module: OmniAuth::Identity::Model
- Included in:
- OmniAuth::Identity::Models::ActiveRecord
- Defined in:
- lib/omniauth/identity/model.rb
Overview
This module provides an include-able interface for implementing the necessary API for OmniAuth Identity to properly locate identities and provide all necessary information.
All methods marked as abstract must be implemented in the including class for things to work properly.
Singleton API
-
locate(key)
-
create(*args) - Deprecated in v3.0.5; Will be removed in v4.0
Instance API
-
save
-
persisted?
-
authenticate(password)
Defined Under Namespace
Modules: ClassCreateApi, ClassMethods, InstancePersistedApi, InstanceSaveApi
Constant Summary collapse
- SCHEMA_ATTRIBUTES =
%w[name email nickname first_name last_name location description image phone].freeze
Class Method Summary collapse
Instance Method Summary collapse
-
#auth_key ⇒ String
Used to retrieve the user-supplied authentication key (e.g. a username or email).
-
#auth_key=(value) ⇒ Object
Used to set the user-supplied authentication key (e.g. a username or email. Determined using the ‘.auth_key` class method..
-
#authenticate(_password) ⇒ self or false
abstract
Returns self if the provided password is correct, false otherwise.
-
#info ⇒ Hash
A hash of as much of the standard OmniAuth schema as is stored in this particular model.
-
#uid ⇒ String
An identifying string that must be globally unique to the application.
Class Method Details
.included(base) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/omniauth/identity/model.rb', line 27 def included(base) base.extend(ClassMethods) base.extend(ClassCreateApi) unless base.respond_to?(:create) i_methods = base.instance_methods base.include(InstanceSaveApi) unless i_methods.include?(:save) base.include(InstancePersistedApi) unless i_methods.include?(:persisted?) end |
Instance Method Details
#auth_key ⇒ String
Used to retrieve the user-supplied authentication key (e.g. a username or email). Determined using the class method of the same name, defaults to ‘:email`.
140 141 142 143 144 145 146 |
# File 'lib/omniauth/identity/model.rb', line 140 def auth_key if respond_to?(self.class.auth_key.to_sym) send(self.class.auth_key) else raise NotImplementedError end end |
#auth_key=(value) ⇒ Object
Used to set the user-supplied authentication key (e.g. a username or email. Determined using the ‘.auth_key` class method.
154 155 156 157 158 159 160 161 |
# File 'lib/omniauth/identity/model.rb', line 154 def auth_key=(value) auth_key_setter = "#{self.class.auth_key}=".to_sym if respond_to?(auth_key_setter) send(auth_key_setter, value) else raise NotImplementedError end end |
#authenticate(_password) ⇒ self or false
Returns self if the provided password is correct, false otherwise.
116 117 118 |
# File 'lib/omniauth/identity/model.rb', line 116 def authenticate(_password) raise NotImplementedError end |
#info ⇒ Hash
A hash of as much of the standard OmniAuth schema as is stored in this particular model. By default, this will call instance methods for each of the attributes it needs in turn, ignoring any for which ‘#respond_to?` is `false`.
If ‘first_name`, `nickname`, and/or `last_name` is provided but `name` is not, it will be automatically calculated.
172 173 174 175 176 177 178 179 180 |
# File 'lib/omniauth/identity/model.rb', line 172 def info info = {} SCHEMA_ATTRIBUTES.each_with_object(info) do |attribute, hash| hash[attribute] = send(attribute) if respond_to?(attribute) end info["name"] ||= [info["first_name"], info["last_name"]].join(" ").strip if info["first_name"] || info["last_name"] info["name"] ||= info["nickname"] info end |
#uid ⇒ String
An identifying string that must be globally unique to the application. Defaults to stringifying the ‘id` method.
124 125 126 127 128 129 130 131 132 |
# File 'lib/omniauth/identity/model.rb', line 124 def uid if respond_to?(:id) return if id.nil? id.to_s else raise NotImplementedError end end |