Class: Sorcery::Adapters::MongoMapperAdapter

Inherits:
BaseAdapter
  • Object
show all
Defined in:
lib/sorcery/adapters/mongo_mapper_adapter.rb

Defined Under Namespace

Modules: Wrapper

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseAdapter

delete_all, find, from, #initialize, #update_attribute

Constructor Details

This class inherits a constructor from Sorcery::Adapters::BaseAdapter

Class Method Details

.credential_regex(credential) ⇒ Object



49
50
51
52
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 49

def credential_regex(credential)
  return { :$regex =>  /^#{Regexp.escape(credential)}$/i } if (@klass.sorcery_config.downcase_username_before_authenticating)
  return credential
end

.define_callback(time, event, method_name, options = {}) ⇒ Object



45
46
47
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 45

def define_callback(time, event, method_name, options={})
  @klass.send "#{time}_#{event}", method_name, options.slice(:if)
end

.define_field(name, type, options = {}) ⇒ Object



41
42
43
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 41

def define_field(name, type, options={})
  @klass.key name, type, options.slice(:default)
end

.find_by_activation_token(token) ⇒ Object



83
84
85
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 83

def find_by_activation_token(token)
  @klass.where(@klass.sorcery_config.activation_token_attribute_name => token).first
end

.find_by_credentials(credentials) ⇒ Object



54
55
56
57
58
59
60
61
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 54

def find_by_credentials(credentials)
  user = nil
  @klass.sorcery_config.username_attribute_names.each do |attribute|
    user = @klass.where(attribute => credential_regex(credentials[0])).first
    break if user
  end
  user
end

.find_by_email(email) ⇒ Object



87
88
89
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 87

def find_by_email(email)
  @klass.where(@klass.sorcery_config.email_attribute_name => email).first
end

.find_by_id(id) ⇒ Object



68
69
70
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 68

def find_by_id(id)
  @klass.find(id)
end

.find_by_oauth_credentials(provider, uid) ⇒ Object



63
64
65
66
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 63

def find_by_oauth_credentials(provider, uid)
  @user_config ||= ::Sorcery::Controller::Config.user_class.to_s.constantize.sorcery_config
  @klass.where(@user_config.provider_attribute_name => provider, @user_config.provider_uid_attribute_name => uid).first
end

.find_by_sorcery_token(token_attr_name, token) ⇒ Object



99
100
101
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 99

def find_by_sorcery_token(token_attr_name, token)
  @klass.where(token_attr_name => token).first
end

.find_by_token(token_attr_name, token) ⇒ Object



91
92
93
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 91

def find_by_token(token_attr_name, token)
  @klass.where(token_attr_name => token).first
end

.find_by_username(username) ⇒ Object



72
73
74
75
76
77
78
79
80
81
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 72

def find_by_username(username)
  if @klass.sorcery_config.downcase_username_before_authenticating
    username = username.downcase
  end

  @klass.sorcery_config.username_attribute_names.each do |attribute|
    result = @klass.where(attribute => username).first
    return result if result
  end
end

.get_current_usersObject



103
104
105
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 103

def get_current_users
  raise "this method is unavailable for MongoMapper"
end

.transaction(&blk) ⇒ Object



95
96
97
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 95

def transaction(&blk)
  @klass.tap(&blk)
end

Instance Method Details

#increment(attr) ⇒ Object



22
23
24
25
26
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 22

def increment(attr)
  @model[attr] ||= 0
  @model[attr] += 1
  @model.class.increment(@model.id, attr => 1)
end

#save(options = {}) ⇒ Object



28
29
30
31
32
33
34
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 28

def save(options = {})
  if options.delete(:raise_on_failure) && options[:validate] != false
    @model.save! options
  else
    @model.save options
  end
end

#update_attributes(attrs) ⇒ Object



36
37
38
# File 'lib/sorcery/adapters/mongo_mapper_adapter.rb', line 36

def update_attributes(attrs)
  @model.update_attributes(attrs)
end