Module: OmniAuth::Identity::Model

Included in:
OmniAuth::Identity::Models::ActiveRecord
Defined in:
lib/omniauth/identity/model.rb

Overview

This module provides an includable 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.

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

SCHEMA_ATTRIBUTES =
%w(name email nickname first_name last_name location description image phone)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



9
10
11
# File 'lib/omniauth/identity/model.rb', line 9

def self.included(base)
  base.extend ClassMethods
end

Instance Method Details

#auth_keyString

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`.

Returns:

  • (String)

    An identifying string that will be entered by users upon sign in.



92
93
94
95
96
97
98
# File 'lib/omniauth/identity/model.rb', line 92

def auth_key
  if respond_to?(self.class.auth_key)
    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.

Parameters:

  • value (String)

    The value to which the auth key should be set.



106
107
108
109
110
111
112
# File 'lib/omniauth/identity/model.rb', line 106

def auth_key=(value)
  if respond_to?(self.class.auth_key + '=')
    send(self.class.auth_key + '=', value)
  else
    raise NotImplementedError
  end
end

#authenticate(password) ⇒ self or false

This method is abstract.

Returns self if the provided password is correct, false otherwise.

Parameters:

  • password (String)

    The password to check.

Returns:

  • (self or false)

    Self if authenticated, false if not.

Raises:

  • (NotImplementedError)


51
52
53
# File 'lib/omniauth/identity/model.rb', line 51

def authenticate(password)
  raise NotImplementedError
end

#infoHash

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.

Returns:

  • (Hash)

    A string-keyed hash of user information.



65
66
67
68
69
70
71
# File 'lib/omniauth/identity/model.rb', line 65

def info
  info = SCHEMA_ATTRIBUTES.inject({}) do |hash,attribute|
    hash[attribute] = send(attribute) if respond_to?(attribute)
    hash
  end
  info
end

#uidString

An identifying string that must be globally unique to the application. Defaults to stringifying the ‘id` method.

Returns:

  • (String)

    An identifier string unique to this identity.



77
78
79
80
81
82
83
84
# File 'lib/omniauth/identity/model.rb', line 77

def uid
  if respond_to?('id')
    return nil if self.id.nil?
    self.id.to_s
  else
    raise NotImplementedError 
  end
end