dm-devise 2.0.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +18 -0
- data/Gemfile +1 -1
- data/README.rdoc +10 -11
- data/lib/devise/orm/data_mapper.rb +0 -6
- data/lib/devise/orm/data_mapper/compatibility.rb +17 -0
- data/lib/dm-devise/version.rb +1 -1
- data/lib/generators/data_mapper/devise_generator.rb +3 -0
- data/lib/generators/data_mapper/devise_install_generator.rb +2 -8
- metadata +14 -17
- data/lib/devise/orm/data_mapper/schema.rb +0 -41
- data/lib/devise/orm/data_mapper/serializable.rb +0 -36
- data/test/data_mapper/schema_test.rb +0 -16
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
== 2.1.0
|
2
|
+
|
3
|
+
* deprecations
|
4
|
+
* Remove support for apply_schema
|
5
|
+
|
6
|
+
== 2.0.1
|
7
|
+
|
8
|
+
* enhancements
|
9
|
+
* DM 1.3.0.beta compatibility (snusnu)
|
10
|
+
|
11
|
+
== 2.0.0
|
12
|
+
|
13
|
+
* enhancements
|
14
|
+
* Improve Compatibility hook methods
|
15
|
+
* Add Compatibility#email_was
|
16
|
+
* Compatibility#save(:validate => false) - Use _persist instead of save!
|
17
|
+
* Include property statements in generated models
|
18
|
+
|
1
19
|
== 1.5.0
|
2
20
|
|
3
21
|
* enhancements
|
data/Gemfile
CHANGED
data/README.rdoc
CHANGED
@@ -1,17 +1,21 @@
|
|
1
|
+
*IMPORTANT:* The apply_schema option is removed in dm-devise 2.1. If you are upgrading, please read: https://github.com/jm81/dm-devise/wiki/How-to:-upgrade-to-devise-2.0-schema-style
|
2
|
+
|
3
|
+
*IMPORTANT:* Devise 2.1 is out. If you are upgrading, please read: https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.1
|
4
|
+
|
5
|
+
*IMPORTANT:* Devise 2.0 is out. If you are upgrading, please read: https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0
|
6
|
+
|
1
7
|
= dm-devise
|
2
8
|
|
3
9
|
dm-devise lets you use devise (http://github.com/plataformatec/devise) with
|
4
10
|
DataMapper.
|
5
11
|
|
6
|
-
dm-devise is intended for use with Rails 3 and devise >=
|
7
|
-
earlier versions, but it's not been tested (if you try, please let Jared Morgan
|
8
|
-
(http://github.com/jm81) know how it goes.)
|
12
|
+
dm-devise is intended for use with Rails >= 3.2 and devise >= 2.1.
|
9
13
|
|
10
14
|
This README only covers dm-devise specifics. Make sure to read the devise
|
11
15
|
README http://github.com/plataformatec/devise/blob/master/README.rdoc
|
12
16
|
|
13
|
-
Last tested against devise master: 2012-
|
14
|
-
Last tested against devise release 2.
|
17
|
+
Last tested against devise master: 2012-05-17, commit f6259531c36795be2766ffefd50de1f8803fc5cd
|
18
|
+
Last tested against devise release 2.1.0
|
15
19
|
|
16
20
|
== Installation
|
17
21
|
|
@@ -23,7 +27,7 @@ Add dm-devise and dm gems to your Gemfile. The following gems are required:
|
|
23
27
|
gem 'dm-timestamps', '~> 1.2.0'
|
24
28
|
gem 'dm-rails', '~> 1.2.0'
|
25
29
|
gem 'dm-validations', '~> 1.2.0' # Do not include if using data_mapper_active_model
|
26
|
-
gem 'dm-devise', '~> 2.0
|
30
|
+
gem 'dm-devise', '~> 2.1.0'
|
27
31
|
|
28
32
|
If you're using Active Model validations, do not include dm-validations in your
|
29
33
|
Gemfile.
|
@@ -75,11 +79,6 @@ active_model::
|
|
75
79
|
The advantage to this is Active Model's I18n support for error messages, and
|
76
80
|
it uses the same validations lib as devise does by default.
|
77
81
|
|
78
|
-
=== apply_schema
|
79
|
-
|
80
|
-
Tells if dm-devise should apply the devise database schema. You may want to
|
81
|
-
set this to false if working with a legacy schema.
|
82
|
-
|
83
82
|
=== data_mapper_validation_messages
|
84
83
|
|
85
84
|
Messages to use as the default DataMapper validation error messages. The
|
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'dm-devise'
|
2
2
|
require 'devise/orm/data_mapper/compatibility'
|
3
|
-
require 'devise/orm/data_mapper/schema'
|
4
3
|
require 'devise/orm/data_mapper/date_time'
|
5
|
-
require 'devise/orm/data_mapper/serializable'
|
6
4
|
require 'devise/orm/data_mapper/validations/dm-validations'
|
7
5
|
require 'devise/orm/data_mapper/validations/active_model'
|
8
6
|
require 'orm_adapter/adapters/data_mapper'
|
@@ -12,8 +10,6 @@ module Devise
|
|
12
10
|
module DataMapper
|
13
11
|
module Hook
|
14
12
|
def devise_modules_hook!
|
15
|
-
extend Schema
|
16
|
-
|
17
13
|
if Devise.data_mapper_validation_lib == 'active_model'
|
18
14
|
include ActiveModel::Validations
|
19
15
|
include ActiveModelCompatibility
|
@@ -23,8 +19,6 @@ module Devise
|
|
23
19
|
include Compatibility
|
24
20
|
|
25
21
|
yield
|
26
|
-
return unless Devise.apply_schema
|
27
|
-
devise_modules.each { |m| send(m) if respond_to?(m, true) }
|
28
22
|
end
|
29
23
|
end
|
30
24
|
end
|
@@ -64,6 +64,23 @@ module Devise
|
|
64
64
|
def email_was
|
65
65
|
original_attributes[:email]
|
66
66
|
end
|
67
|
+
|
68
|
+
# Redefine properties_to_serialize in models for more secure defaults.
|
69
|
+
# By default, it removes from the serializable model all attributes that
|
70
|
+
# are *not* accessible. You can remove this default by using :force_exclude
|
71
|
+
# and passing a new list of attributes you want to exempt. All attributes
|
72
|
+
# given to :exclude will simply add names to exempt to Devise internal list.
|
73
|
+
def properties_to_serialize(options=nil)
|
74
|
+
options ||= {}
|
75
|
+
if options.key?(:force_except) || options.key?(:force_exclude)
|
76
|
+
options[:exclude] = options.delete(:force_except) || options.delete(:force_exclude)
|
77
|
+
super(options)
|
78
|
+
else
|
79
|
+
blacklist = Devise::Models::Authenticatable.const_defined?(:BLACKLIST_FOR_SERIALIZATION) ? Devise::Models::Authenticatable::BLACKLIST_FOR_SERIALIZATION : []
|
80
|
+
except = Array(options[:exclude]) + Array(options[:except]) + blacklist
|
81
|
+
super(options.merge(:exclude => except))
|
82
|
+
end
|
83
|
+
end
|
67
84
|
end
|
68
85
|
end
|
69
86
|
end
|
data/lib/dm-devise/version.rb
CHANGED
@@ -19,13 +19,7 @@ module DataMapper
|
|
19
19
|
VALIDATIONS
|
20
20
|
inject_into_file devise_init_file, validations, :before => ' # ==> ORM configuration'
|
21
21
|
|
22
|
-
data_mapper_options = <<
|
23
|
-
|
24
|
-
# ==> Apply Schema
|
25
|
-
# Tells if dm-devise should apply the devise database schema via property
|
26
|
-
# declarations. You may want to set this to false if working with a legacy
|
27
|
-
# schema.
|
28
|
-
# config.apply_schema = true
|
22
|
+
data_mapper_options = <<OPTIONS
|
29
23
|
|
30
24
|
# ==> dm-validations Default Error Messages
|
31
25
|
# Messages to use as the default DataMapper validation error messages. The
|
@@ -35,7 +29,7 @@ VALIDATIONS
|
|
35
29
|
# :not_locked, and :expired). If set to false, the messages are left as
|
36
30
|
# defined by the dm-validations gem. See dm-devise.rb for default.
|
37
31
|
# config.data_mapper_validation_messages = {}
|
38
|
-
|
32
|
+
OPTIONS
|
39
33
|
inject_into_file devise_init_file, data_mapper_options, :after => "orm/data_mapper'\n"
|
40
34
|
end
|
41
35
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-devise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: dm-core
|
16
|
-
requirement: &
|
16
|
+
requirement: &84857470 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -24,10 +24,10 @@ dependencies:
|
|
24
24
|
version: '2.0'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *84857470
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: dm-migrations
|
30
|
-
requirement: &
|
30
|
+
requirement: &84857070 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ! '>='
|
@@ -38,10 +38,10 @@ dependencies:
|
|
38
38
|
version: '2.0'
|
39
39
|
type: :runtime
|
40
40
|
prerelease: false
|
41
|
-
version_requirements: *
|
41
|
+
version_requirements: *84857070
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: dm-serializer
|
44
|
-
requirement: &
|
44
|
+
requirement: &84856700 !ruby/object:Gem::Requirement
|
45
45
|
none: false
|
46
46
|
requirements:
|
47
47
|
- - ! '>='
|
@@ -52,10 +52,10 @@ dependencies:
|
|
52
52
|
version: '2.0'
|
53
53
|
type: :runtime
|
54
54
|
prerelease: false
|
55
|
-
version_requirements: *
|
55
|
+
version_requirements: *84856700
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: dm-timestamps
|
58
|
-
requirement: &
|
58
|
+
requirement: &84856330 !ruby/object:Gem::Requirement
|
59
59
|
none: false
|
60
60
|
requirements:
|
61
61
|
- - ! '>='
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: '2.0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *84856330
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: dm-rails
|
72
|
-
requirement: &
|
72
|
+
requirement: &84855950 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ! '>='
|
@@ -80,10 +80,10 @@ dependencies:
|
|
80
80
|
version: '2.0'
|
81
81
|
type: :runtime
|
82
82
|
prerelease: false
|
83
|
-
version_requirements: *
|
83
|
+
version_requirements: *84855950
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: devise
|
86
|
-
requirement: &
|
86
|
+
requirement: &84855550 !ruby/object:Gem::Requirement
|
87
87
|
none: false
|
88
88
|
requirements:
|
89
89
|
- - ! '>='
|
@@ -91,7 +91,7 @@ dependencies:
|
|
91
91
|
version: '1.3'
|
92
92
|
type: :runtime
|
93
93
|
prerelease: false
|
94
|
-
version_requirements: *
|
94
|
+
version_requirements: *84855550
|
95
95
|
description: dm-devise adds DataMapper support to devise (http://github.com/plataformatec/devise)
|
96
96
|
for authentication support for Rails
|
97
97
|
email: jmorgan@morgancreative.net
|
@@ -110,8 +110,6 @@ files:
|
|
110
110
|
- lib/devise/orm/data_mapper.rb
|
111
111
|
- lib/devise/orm/data_mapper/compatibility.rb
|
112
112
|
- lib/devise/orm/data_mapper/date_time.rb
|
113
|
-
- lib/devise/orm/data_mapper/schema.rb
|
114
|
-
- lib/devise/orm/data_mapper/serializable.rb
|
115
113
|
- lib/devise/orm/data_mapper/validations/active_model.rb
|
116
114
|
- lib/devise/orm/data_mapper/validations/dm-validations.rb
|
117
115
|
- lib/devise/orm/data_mapper_active_model.rb
|
@@ -120,7 +118,6 @@ files:
|
|
120
118
|
- lib/generators/data_mapper/devise_generator.rb
|
121
119
|
- lib/generators/data_mapper/devise_install_generator.rb
|
122
120
|
- test/data_mapper/compatibility_test.rb
|
123
|
-
- test/data_mapper/schema_test.rb
|
124
121
|
- test/generators/data_mapper_generator_test.rb
|
125
122
|
- test/orm/data_mapper.rb
|
126
123
|
- test/overrides/data_mapper_test.rb
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'dm-devise'
|
2
|
-
require 'devise/schema'
|
3
|
-
|
4
|
-
module Devise
|
5
|
-
module Orm
|
6
|
-
module DataMapper
|
7
|
-
module Schema
|
8
|
-
include Devise::Schema
|
9
|
-
|
10
|
-
SCHEMA_OPTIONS = {
|
11
|
-
:null => :required,
|
12
|
-
:limit => :length
|
13
|
-
}
|
14
|
-
|
15
|
-
# Tell how to apply schema methods. This automatically maps :limit to
|
16
|
-
# :length and :null to :required.
|
17
|
-
def apply_devise_schema(name, type, options={})
|
18
|
-
return false if properties[name]
|
19
|
-
SCHEMA_OPTIONS.each do |old_key, new_key|
|
20
|
-
next unless options.key?(old_key)
|
21
|
-
if :null == old_key
|
22
|
-
# :required is opposite of :null
|
23
|
-
options[new_key] = !options.delete(old_key)
|
24
|
-
else
|
25
|
-
options[new_key] = options.delete(old_key)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
if String == type && !options[:length]
|
30
|
-
options[:length] = 255
|
31
|
-
end
|
32
|
-
|
33
|
-
options[:required] ||= false
|
34
|
-
|
35
|
-
options.delete(:default) if options[:default].nil?
|
36
|
-
property name, type, options
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module Devise
|
2
|
-
module Models
|
3
|
-
# This module redefines properties_to_serialize in models for more
|
4
|
-
# secure defaults. By default, it removes from the serializable model
|
5
|
-
# all attributes whose writer or reader is *not* public. You can remove this default
|
6
|
-
# by using :force_except and passing a new list of attributes you want
|
7
|
-
# to exempt. All attributes given to :exclude will simply add names to
|
8
|
-
# exempt to Devise internal list.
|
9
|
-
module Serializable
|
10
|
-
extend ActiveSupport::Concern
|
11
|
-
|
12
|
-
def properties_to_serialize(options=nil)
|
13
|
-
options ||= {}
|
14
|
-
if options.key?(:force_except) || options.key?(:force_exclude)
|
15
|
-
options[:exclude] = options.delete(:force_except) || options.delete(:force_exclude)
|
16
|
-
super(options)
|
17
|
-
else
|
18
|
-
except = Array(options[:exclude]) + Array(options[:except])
|
19
|
-
super(options.merge(:exclude => except + self.class.blacklist_keys))
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
# Get back to DataMapper's #to_xml.
|
24
|
-
def to_xml(*args)
|
25
|
-
super
|
26
|
-
end
|
27
|
-
|
28
|
-
module ClassMethods
|
29
|
-
# Returns keys that should be removed when serializing the record.
|
30
|
-
def blacklist_keys
|
31
|
-
@blacklist_keys ||= properties.select { |property| property.reader_visibility != :public || property.writer_visibility != :public }.map(&:name)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class DataMapperSchemaTest < ActiveSupport::TestCase
|
4
|
-
test 'required explicitly set to false' do
|
5
|
-
begin
|
6
|
-
DataMapper::Property.required(true)
|
7
|
-
model = Class.new(User)
|
8
|
-
model.apply_devise_schema :required_string, String, :required => true
|
9
|
-
model.apply_devise_schema :not_required_string, String
|
10
|
-
assert model.properties['required_string'].required?
|
11
|
-
assert !model.properties['not_required_string'].required?
|
12
|
-
ensure
|
13
|
-
DataMapper::Property.required(false)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|