Class: Sorcery::Adapters::DataMapperAdapter
- Inherits:
-
BaseAdapter
- Object
- BaseAdapter
- Sorcery::Adapters::DataMapperAdapter
- Defined in:
- lib/sorcery/adapters/data_mapper_adapter.rb
Defined Under Namespace
Modules: Wrapper
Class Method Summary collapse
- .define_callback(time, event, method_name, options = {}) ⇒ Object
- .define_field(name, type, options = {}) ⇒ Object
- .delete_all ⇒ Object
- .find(id) ⇒ Object
- .find_by_activation_token(token) ⇒ Object
-
.find_by_credentials(credentials) ⇒ Object
NOTE DM Adapter dependent DM creates MySQL tables case insensitive by default datamapper.lighthouseapp.com/projects/20609-datamapper/tickets/1105.
- .find_by_email(email) ⇒ Object
- .find_by_id(id) ⇒ Object
- .find_by_oauth_credentials(provider, uid) ⇒ Object
- .find_by_remember_me_token(token) ⇒ Object
- .find_by_sorcery_token(token_attr_name, token) ⇒ Object
- .find_by_token(token_attr_name, token) ⇒ Object
- .find_by_username(username) ⇒ Object
-
.get_current_users ⇒ Object
NOTE DM Adapter dependent.
- .transaction(&blk) ⇒ Object
- .verify_submodules_compatibility! ⇒ Object
Instance Method Summary collapse
- #increment(attr) ⇒ Object
- #save(options = {}) ⇒ Object
- #update_attribute(name, value) ⇒ Object
- #update_attributes(attrs) ⇒ Object
Methods inherited from BaseAdapter
Constructor Details
This class inherits a constructor from Sorcery::Adapters::BaseAdapter
Class Method Details
.define_callback(time, event, method_name, options = {}) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 62 def define_callback(time, event, method_name, ={}) event = :valid? if event == :validation condition = [:if] user_klass = @klass block = Proc.new do |record| if condition.nil? send(method_name) elsif condition.respond_to?(:call) send(method_name) if condition.call(self) elsif condition.is_a? Symbol send(method_name) if send(condition) end end @klass.send(time, event, &block) end |
.define_field(name, type, options = {}) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 49 def define_field(name, type, ={}) @klass.property name, type, .slice(:length, :default) # Workaround local timezone retrieval problem NOTE dm-core issue #193 if type == Time @klass.send(:alias_method, "orig_#{name}", name) @klass.send :define_method, name do t = send("orig_#{name}") t && Time.new(t.year, t.month, t.day, t.hour, t.min, t.sec, 0) end end end |
.delete_all ⇒ Object
85 86 87 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 85 def delete_all @klass.destroy end |
.find(id) ⇒ Object
81 82 83 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 81 def find(id) @klass.get(id) end |
.find_by_activation_token(token) ⇒ Object
119 120 121 122 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 119 def find_by_activation_token(token) user = @klass.first(@klass.sorcery_config.activation_token_attribute_name => token) !!user ? @klass.get(user.id) : nil end |
.find_by_credentials(credentials) ⇒ Object
NOTE DM Adapter dependent DM creates MySQL tables case insensitive by default datamapper.lighthouseapp.com/projects/20609-datamapper/tickets/1105
93 94 95 96 97 98 99 100 101 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 93 def find_by_credentials(credentials) credential = credentials[0].dup credential.downcase! if @klass.sorcery_config.downcase_username_before_authenticating @klass.sorcery_config.username_attribute_names.each do |name| @user = @klass.first(name => credential) break if @user end !!@user ? @klass.get(@user.id) : nil end |
.find_by_email(email) ⇒ Object
147 148 149 150 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 147 def find_by_email(email) user = @klass.first(@klass.sorcery_config.email_attribute_name => email) !!user ? @klass.get(user.id) : nil end |
.find_by_id(id) ⇒ Object
113 114 115 116 117 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 113 def find_by_id(id) @klass.get(id) rescue ::DataMapper::ObjectNotFoundError nil end |
.find_by_oauth_credentials(provider, uid) ⇒ Object
103 104 105 106 107 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 103 def find_by_oauth_credentials(provider, uid) @user_config = ::Sorcery::Controller::Config.user_class.to_s.constantize.sorcery_config user = @klass.first(@user_config.provider_attribute_name => provider, @user_config.provider_uid_attribute_name => uid) !!user ? @klass.get(user.id) : nil end |
.find_by_remember_me_token(token) ⇒ Object
124 125 126 127 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 124 def find_by_remember_me_token(token) user = @klass.first(@klass.sorcery_config.remember_me_token_attribute_name => token) !!user ? @klass.get(user.id) : nil end |
.find_by_sorcery_token(token_attr_name, token) ⇒ Object
142 143 144 145 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 142 def find_by_sorcery_token(token_attr_name, token) user = @klass.first(token_attr_name => token) !!user ? @klass.get(user.id) : nil end |
.find_by_token(token_attr_name, token) ⇒ Object
109 110 111 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 109 def find_by_token(token_attr_name, token) @klass.first(token_attr_name => token) end |
.find_by_username(username) ⇒ Object
129 130 131 132 133 134 135 136 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 129 def find_by_username(username) user = nil @klass.sorcery_config.username_attribute_names.each do |name| user = @klass.first(name => username) break if user end !!user ? @klass.get(user.id) : nil end |
.get_current_users ⇒ Object
NOTE DM Adapter dependent
154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 154 def get_current_users unless @klass.repository.adapter.is_a?(::DataMapper::Adapters::MysqlAdapter) raise 'Unsupported DataMapper Adapter' end config = @klass.sorcery_config ret = @klass.all(config.last_logout_at_attribute_name => nil) | @klass.all(config.last_activity_at_attribute_name.gt => config.last_logout_at_attribute_name) ret = ret.all(config.last_activity_at_attribute_name.not => nil) ret = ret.all(config.last_activity_at_attribute_name.gt => config.activity_timeout.seconds.ago.utc) ret end |
.transaction(&blk) ⇒ Object
138 139 140 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 138 def transaction(&blk) @klass.tap(&blk) end |
.verify_submodules_compatibility! ⇒ Object
166 167 168 169 170 171 172 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 166 def verify_submodules_compatibility! active_submodules = [::Sorcery::Controller::Config.submodules].flatten if active_submodules.include?(:activity_logging) && !repository.adapter.is_a?(::DataMapper::Adapters::MysqlAdapter) raise "DataMapper adapter compatibility error, please check documentation" end end |
Instance Method Details
#increment(attr) ⇒ Object
22 23 24 25 26 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 22 def increment(attr) @model[attr] ||= 0 @model[attr] += 1 @model end |
#save(options = {}) ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 40 def save( = {}) if .key?(:validate) && ![:validate] @model.save! else @model.save end end |
#update_attribute(name, value) ⇒ Object
36 37 38 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 36 def update_attribute(name, value) update_attributes(name => value) end |
#update_attributes(attrs) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/sorcery/adapters/data_mapper_adapter.rb', line 28 def update_attributes(attrs) attrs.each do |name, value| value = value.utc if value.is_a?(ActiveSupport::TimeWithZone) @model.send(:"#{name}=", value) end @model.class.get(@model.id).update(attrs) end |