sorcery 0.9.1 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sorcery might be problematic. Click here for more details.

Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +29 -104
  3. data/CHANGELOG.md +13 -1
  4. data/Gemfile +2 -16
  5. data/README.md +124 -272
  6. data/Rakefile +2 -2
  7. data/gemfiles/{mongoid-rails40.gemfile → active_record-rails42.gemfile} +1 -3
  8. data/lib/generators/sorcery/helpers.rb +4 -4
  9. data/lib/generators/sorcery/install_generator.rb +25 -19
  10. data/lib/generators/sorcery/templates/initializer.rb +27 -52
  11. data/lib/generators/sorcery/templates/migration/activity_logging.rb +2 -2
  12. data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +1 -1
  13. data/lib/generators/sorcery/templates/migration/core.rb +3 -3
  14. data/lib/generators/sorcery/templates/migration/external.rb +2 -2
  15. data/lib/generators/sorcery/templates/migration/remember_me.rb +2 -2
  16. data/lib/generators/sorcery/templates/migration/reset_password.rb +2 -2
  17. data/lib/generators/sorcery/templates/migration/user_activation.rb +2 -2
  18. data/lib/sorcery.rb +0 -28
  19. data/lib/sorcery/adapters/active_record_adapter.rb +7 -18
  20. data/lib/sorcery/controller.rb +19 -21
  21. data/lib/sorcery/controller/config.rb +20 -18
  22. data/lib/sorcery/controller/submodules/activity_logging.rb +7 -15
  23. data/lib/sorcery/controller/submodules/brute_force_protection.rb +1 -2
  24. data/lib/sorcery/controller/submodules/external.rb +22 -14
  25. data/lib/sorcery/controller/submodules/http_basic_auth.rb +16 -19
  26. data/lib/sorcery/controller/submodules/remember_me.rb +15 -10
  27. data/lib/sorcery/controller/submodules/session_timeout.rb +7 -8
  28. data/lib/sorcery/crypto_providers/aes256.rb +15 -15
  29. data/lib/sorcery/crypto_providers/bcrypt.rb +19 -21
  30. data/lib/sorcery/crypto_providers/common.rb +1 -1
  31. data/lib/sorcery/crypto_providers/md5.rb +5 -5
  32. data/lib/sorcery/crypto_providers/sha1.rb +5 -5
  33. data/lib/sorcery/crypto_providers/sha256.rb +2 -2
  34. data/lib/sorcery/crypto_providers/sha512.rb +3 -3
  35. data/lib/sorcery/engine.rb +3 -8
  36. data/lib/sorcery/model.rb +24 -32
  37. data/lib/sorcery/model/config.rb +64 -49
  38. data/lib/sorcery/model/submodules/activity_logging.rb +31 -12
  39. data/lib/sorcery/model/submodules/brute_force_protection.rb +23 -23
  40. data/lib/sorcery/model/submodules/external.rb +3 -7
  41. data/lib/sorcery/model/submodules/remember_me.rb +19 -7
  42. data/lib/sorcery/model/submodules/reset_password.rb +32 -36
  43. data/lib/sorcery/model/submodules/user_activation.rb +38 -50
  44. data/lib/sorcery/model/temporary_token.rb +2 -2
  45. data/lib/sorcery/protocols/oauth.rb +3 -9
  46. data/lib/sorcery/protocols/oauth2.rb +0 -2
  47. data/lib/sorcery/providers/base.rb +4 -4
  48. data/lib/sorcery/providers/facebook.rb +5 -8
  49. data/lib/sorcery/providers/github.rb +5 -7
  50. data/lib/sorcery/providers/google.rb +3 -5
  51. data/lib/sorcery/providers/heroku.rb +6 -8
  52. data/lib/sorcery/providers/jira.rb +12 -17
  53. data/lib/sorcery/providers/linkedin.rb +6 -8
  54. data/lib/sorcery/providers/liveid.rb +4 -7
  55. data/lib/sorcery/providers/paypal.rb +60 -0
  56. data/lib/sorcery/providers/salesforce.rb +3 -5
  57. data/lib/sorcery/providers/slack.rb +45 -0
  58. data/lib/sorcery/providers/twitter.rb +4 -6
  59. data/lib/sorcery/providers/vk.rb +3 -5
  60. data/lib/sorcery/providers/wechat.rb +79 -0
  61. data/lib/sorcery/providers/xing.rb +7 -10
  62. data/lib/sorcery/test_helpers/internal.rb +10 -10
  63. data/lib/sorcery/test_helpers/internal/rails.rb +16 -8
  64. data/lib/sorcery/test_helpers/rails/controller.rb +1 -1
  65. data/lib/sorcery/test_helpers/rails/integration.rb +5 -6
  66. data/lib/sorcery/version.rb +1 -1
  67. data/sorcery.gemspec +25 -27
  68. data/spec/active_record/user_activation_spec.rb +2 -3
  69. data/spec/active_record/user_activity_logging_spec.rb +2 -4
  70. data/spec/active_record/user_brute_force_protection_spec.rb +3 -4
  71. data/spec/active_record/user_oauth_spec.rb +3 -4
  72. data/spec/active_record/user_remember_me_spec.rb +3 -4
  73. data/spec/active_record/user_reset_password_spec.rb +2 -3
  74. data/spec/active_record/user_spec.rb +7 -7
  75. data/spec/controllers/controller_activity_logging_spec.rb +13 -24
  76. data/spec/controllers/controller_brute_force_protection_spec.rb +6 -8
  77. data/spec/controllers/controller_http_basic_auth_spec.rb +19 -20
  78. data/spec/controllers/controller_oauth2_spec.rb +125 -100
  79. data/spec/controllers/controller_oauth_spec.rb +86 -66
  80. data/spec/controllers/controller_remember_me_spec.rb +35 -30
  81. data/spec/controllers/controller_session_timeout_spec.rb +14 -15
  82. data/spec/controllers/controller_spec.rb +77 -111
  83. data/spec/orm/active_record.rb +1 -1
  84. data/spec/rails_app/app/active_record/authentication.rb +1 -1
  85. data/spec/rails_app/app/active_record/user.rb +2 -2
  86. data/spec/rails_app/app/controllers/sorcery_controller.rb +89 -24
  87. data/spec/rails_app/app/mailers/sorcery_mailer.rb +16 -17
  88. data/spec/rails_app/config.ru +1 -1
  89. data/spec/rails_app/config/application.rb +7 -7
  90. data/spec/rails_app/config/boot.rb +1 -1
  91. data/spec/rails_app/config/environments/test.rb +1 -1
  92. data/spec/rails_app/config/initializers/compatible_legacy_migration.rb +11 -0
  93. data/spec/rails_app/config/initializers/session_store.rb +3 -3
  94. data/spec/rails_app/config/routes.rb +11 -1
  95. data/spec/rails_app/db/migrate/activation/20101224223622_add_activation_to_users.rb +4 -4
  96. data/spec/rails_app/db/migrate/activity_logging/20101224223624_add_activity_logging_to_users.rb +8 -8
  97. data/spec/rails_app/db/migrate/brute_force_protection/20101224223626_add_brute_force_protection_to_users.rb +5 -5
  98. data/spec/rails_app/db/migrate/core/20101224223620_create_users.rb +5 -5
  99. data/spec/rails_app/db/migrate/external/20101224223628_create_authentications_and_user_providers.rb +3 -3
  100. data/spec/rails_app/db/migrate/remember_me/20101224223623_add_remember_me_token_to_users.rb +6 -6
  101. data/spec/rails_app/db/migrate/reset_password/20101224223622_add_reset_password_to_users.rb +5 -5
  102. data/spec/shared_examples/user_activation_shared_examples.rb +99 -58
  103. data/spec/shared_examples/user_activity_logging_shared_examples.rb +47 -41
  104. data/spec/shared_examples/user_brute_force_protection_shared_examples.rb +19 -24
  105. data/spec/shared_examples/user_oauth_shared_examples.rb +7 -10
  106. data/spec/shared_examples/user_remember_me_shared_examples.rb +90 -21
  107. data/spec/shared_examples/user_reset_password_shared_examples.rb +52 -54
  108. data/spec/shared_examples/user_shared_examples.rb +215 -118
  109. data/spec/sorcery_crypto_providers_spec.rb +63 -76
  110. data/spec/spec_helper.rb +17 -13
  111. metadata +28 -83
  112. data/gemfiles/mongo_mapper-rails40.gemfile +0 -9
  113. data/gemfiles/mongo_mapper-rails41.gemfile +0 -9
  114. data/gemfiles/mongoid-rails41.gemfile +0 -9
  115. data/gemfiles/mongoid3-rails32.gemfile +0 -9
  116. data/lib/sorcery/adapters/data_mapper_adapter.rb +0 -176
  117. data/lib/sorcery/adapters/mongo_mapper_adapter.rb +0 -110
  118. data/lib/sorcery/adapters/mongoid_adapter.rb +0 -97
  119. data/lib/sorcery/railties/tasks.rake +0 -6
  120. data/spec/data_mapper/user_activation_spec.rb +0 -10
  121. data/spec/data_mapper/user_activity_logging_spec.rb +0 -14
  122. data/spec/data_mapper/user_brute_force_protection_spec.rb +0 -9
  123. data/spec/data_mapper/user_oauth_spec.rb +0 -9
  124. data/spec/data_mapper/user_remember_me_spec.rb +0 -8
  125. data/spec/data_mapper/user_reset_password_spec.rb +0 -8
  126. data/spec/data_mapper/user_spec.rb +0 -27
  127. data/spec/mongo_mapper/user_activation_spec.rb +0 -9
  128. data/spec/mongo_mapper/user_activity_logging_spec.rb +0 -8
  129. data/spec/mongo_mapper/user_brute_force_protection_spec.rb +0 -8
  130. data/spec/mongo_mapper/user_oauth_spec.rb +0 -8
  131. data/spec/mongo_mapper/user_remember_me_spec.rb +0 -8
  132. data/spec/mongo_mapper/user_reset_password_spec.rb +0 -8
  133. data/spec/mongo_mapper/user_spec.rb +0 -37
  134. data/spec/mongoid/user_activation_spec.rb +0 -9
  135. data/spec/mongoid/user_activity_logging_spec.rb +0 -8
  136. data/spec/mongoid/user_brute_force_protection_spec.rb +0 -8
  137. data/spec/mongoid/user_oauth_spec.rb +0 -8
  138. data/spec/mongoid/user_remember_me_spec.rb +0 -8
  139. data/spec/mongoid/user_reset_password_spec.rb +0 -8
  140. data/spec/mongoid/user_spec.rb +0 -51
  141. data/spec/orm/data_mapper.rb +0 -48
  142. data/spec/orm/mongo_mapper.rb +0 -10
  143. data/spec/orm/mongoid.rb +0 -22
  144. data/spec/rails_app/app/data_mapper/authentication.rb +0 -8
  145. data/spec/rails_app/app/data_mapper/user.rb +0 -7
  146. data/spec/rails_app/app/mongo_mapper/authentication.rb +0 -6
  147. data/spec/rails_app/app/mongo_mapper/user.rb +0 -7
  148. data/spec/rails_app/app/mongoid/authentication.rb +0 -7
  149. data/spec/rails_app/app/mongoid/user.rb +0 -7
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'shared_examples/user_brute_force_protection_shared_examples'
4
-
5
- describe User, "with brute_force_protection submodule", :data_mapper => true do
6
-
7
- it_behaves_like "rails_3_brute_force_protection_model"
8
-
9
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'shared_examples/user_oauth_shared_examples'
4
-
5
- describe User, "with oauth submodule", :data_mapper => true do
6
-
7
- it_behaves_like "rails_3_oauth_model"
8
-
9
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_remember_me_shared_examples'
3
-
4
- describe User, "with remember_me submodule", :data_mapper => true do
5
-
6
- it_behaves_like "rails_3_remember_me_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_reset_password_shared_examples'
3
-
4
- describe User, "with reset_password submodule", :data_mapper => true do
5
-
6
- it_behaves_like "rails_3_reset_password_model"
7
-
8
- end
@@ -1,27 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'rails_app/app/mailers/sorcery_mailer'
4
- require 'shared_examples/user_shared_examples'
5
-
6
- describe User, "with no submodules (core)", :data_mapper => true do
7
- before(:all) do
8
- sorcery_reload!
9
- end
10
-
11
- context "when app has plugin loaded" do
12
- it "User responds to .authenticates_with_sorcery!" do
13
- expect(User).to respond_to :authenticates_with_sorcery!
14
- end
15
- end
16
-
17
- # ----------------- PLUGIN CONFIGURATION -----------------------
18
-
19
- it_should_behave_like "rails_3_core_model"
20
-
21
- describe "external users" do
22
-
23
- it_should_behave_like "external_user"
24
-
25
- end
26
-
27
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
- require 'rails_app/app/mailers/sorcery_mailer'
3
- require 'shared_examples/user_activation_shared_examples'
4
-
5
- describe User, "with activation submodule", :mongo_mapper => true do
6
-
7
- it_behaves_like "rails_3_activation_model"
8
-
9
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_activity_logging_shared_examples'
3
-
4
- describe User, "with activity logging submodule", :mongo_mapper => true do
5
-
6
- it_behaves_like "rails_3_activity_logging_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_brute_force_protection_shared_examples'
3
-
4
- describe User, "with brute_force_protection submodule", :mongo_mapper => true do
5
-
6
- it_behaves_like "rails_3_brute_force_protection_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_oauth_shared_examples'
3
-
4
- describe User, "with oauth submodule", :mongo_mapper => true do
5
-
6
- it_behaves_like "rails_3_oauth_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_remember_me_shared_examples'
3
-
4
- describe User, "with remember_me submodule", :mongo_mapper => true do
5
-
6
- it_behaves_like "rails_3_remember_me_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_reset_password_shared_examples'
3
-
4
- describe User, "with reset_password submodule", :mongo_mapper => true do
5
-
6
- it_behaves_like "rails_3_reset_password_model"
7
-
8
- end
@@ -1,37 +0,0 @@
1
- require 'spec_helper'
2
- require 'rails_app/app/mailers/sorcery_mailer'
3
- require 'shared_examples/user_shared_examples'
4
-
5
- describe User, "with no submodules (core)", :mongo_mapper => true do
6
- before(:all) do
7
- sorcery_reload!
8
- end
9
-
10
- describe User, "when app has plugin loaded" do
11
- it "User responds to .authenticates_with_sorcery!" do
12
- expect(User).to respond_to :authenticates_with_sorcery!
13
- end
14
- end
15
-
16
- # ----------------- PLUGIN CONFIGURATION -----------------------
17
-
18
- it_should_behave_like "rails_3_core_model"
19
-
20
- describe "external users" do
21
-
22
- it_should_behave_like "external_user"
23
-
24
- end
25
-
26
- context "when inherited" do
27
- it "inherits mongo_mapper keys" do
28
- User.class_eval do
29
- key :blabla
30
- end
31
- class SubUser < User
32
- end
33
-
34
- expect(SubUser.keys).to include("blabla")
35
- end
36
- end
37
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
- require 'rails_app/app/mailers/sorcery_mailer'
3
- require 'shared_examples/user_activation_shared_examples'
4
-
5
- describe User, "with activation submodule", :mongoid => true do
6
-
7
- it_behaves_like "rails_3_activation_model"
8
-
9
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_activity_logging_shared_examples'
3
-
4
- describe User, "with activity logging submodule", :mongoid => true do
5
-
6
- it_behaves_like "rails_3_activity_logging_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_brute_force_protection_shared_examples'
3
-
4
- describe User, "with brute_force_protection submodule", :mongoid => true do
5
-
6
- it_behaves_like "rails_3_brute_force_protection_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_oauth_shared_examples'
3
-
4
- describe User, "with oauth submodule", :mongoid => true do
5
-
6
- it_behaves_like "rails_3_oauth_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_remember_me_shared_examples'
3
-
4
- describe User, "with remember_me submodule", :mongoid => true do
5
-
6
- it_behaves_like "rails_3_remember_me_model"
7
-
8
- end
@@ -1,8 +0,0 @@
1
- require 'spec_helper'
2
- require 'shared_examples/user_reset_password_shared_examples'
3
-
4
- describe User, "with reset_password submodule", :mongoid => true do
5
-
6
- it_behaves_like "rails_3_reset_password_model"
7
-
8
- end
@@ -1,51 +0,0 @@
1
- require 'spec_helper'
2
- require 'rails_app/app/mailers/sorcery_mailer'
3
- require 'shared_examples/user_shared_examples'
4
-
5
- describe User, "with no submodules (core)", :mongoid => true do
6
- before(:all) do
7
- sorcery_reload!
8
- end
9
-
10
- context "when app has plugin loaded" do
11
- it "User responds to .authenticates_with_sorcery!" do
12
- expect(User).to respond_to :authenticates_with_sorcery!
13
- end
14
- end
15
-
16
- # ----------------- PLUGIN CONFIGURATION -----------------------
17
-
18
- it_should_behave_like "rails_3_core_model"
19
-
20
- describe "external users" do
21
-
22
- it_should_behave_like "external_user"
23
-
24
- end
25
-
26
- context "when inherited" do
27
- it "inherits mongoid fields" do
28
- User.class_eval do
29
- field :blabla
30
- end
31
- class SubUser < User
32
- end
33
-
34
- expect(SubUser.fields).to include("blabla")
35
- end
36
- end
37
-
38
- describe "increment" do
39
- it "increments attribute" do
40
- User.class_eval do
41
- field :some_number, type: Integer
42
- end
43
-
44
- user = User.new(some_number: 3)
45
- user.sorcery_adapter.increment(:some_number)
46
-
47
- expect(user.some_number).to eql 4
48
- end
49
- end
50
-
51
- end
@@ -1,48 +0,0 @@
1
- require 'data_mapper'
2
- require 'dm-migrations'
3
- require 'sorcery'
4
-
5
- #DataMapper.setup(:default, 'sqlite::memory:')
6
- # NOTE
7
- # 1. Problems with Time fields, hh mm ss values.
8
- #DataMapper.setup(:default, "sqlite3://#{File.dirname(__FILE__)}/../rails_app/test.sqlite3")
9
-
10
- # MySQL
11
- # NOTE
12
- # 1. Create test database.
13
- # 2. DM creates tables case insensitive by default.
14
- # -
15
- #DataMapper.setup(:default, "mysql://root:<password>@localhost/sorcery_test")
16
- DataMapper.setup(:default, "mysql://root@127.0.0.1/sorcery_test")
17
-
18
- # Redis
19
- # NOTE
20
- # 1. Submodule activity_logging is not supported.
21
- # 2. case sensitive.
22
- #DataMapper.setup(:default, {
23
- # :adapter => 'redis',
24
- # :host => 'localhost',
25
- # :port => 6379,
26
- #})
27
-
28
- class TestUser
29
- include DataMapper::Resource
30
- property :id, Serial
31
- authenticates_with_sorcery!
32
- end
33
-
34
- def setup_orm
35
- TestUser.finalize
36
- DataMapper.auto_migrate!
37
- end
38
-
39
- module Sorcery
40
- module TestHelpers
41
- module Internal
42
- def update_model(&block)
43
- User.class_exec(&block)
44
- User.finalize
45
- end
46
- end
47
- end
48
- end
@@ -1,10 +0,0 @@
1
- require 'mongo_mapper'
2
- require 'sorcery'
3
-
4
- MongoMapper.connection = Mongo::Connection.new('localhost', 27017)
5
- MongoMapper.database = "sorcery_mongomapper_test"
6
-
7
- class TestUser
8
- include MongoMapper::Document
9
- authenticates_with_sorcery!
10
- end
@@ -1,22 +0,0 @@
1
- require 'mongoid'
2
- require 'sorcery'
3
-
4
- Mongoid.configure do |config|
5
- database = "sorcery_mongoid_test"
6
- if config.respond_to?(:connect_to)
7
- config.connect_to(database)
8
- else
9
- config.master = Mongo::Connection.new.db(database)
10
- end
11
-
12
- config.use_utc = true
13
- config.include_root_in_json = true
14
- end
15
-
16
- class TestUser
17
- include Mongoid::Document
18
- end
19
-
20
- def setup_orm
21
- Mongoid.purge!
22
- end
@@ -1,8 +0,0 @@
1
- class Authentication
2
- include DataMapper::Resource
3
-
4
- property :id, Serial
5
- property :uid, Integer
6
- property :provider, String
7
- belongs_to :user
8
- end
@@ -1,7 +0,0 @@
1
- class User
2
- include DataMapper::Resource
3
- property :id, Serial
4
- property :username, String
5
-
6
- has n, :authentications, :constraint => :destroy
7
- end
@@ -1,6 +0,0 @@
1
- class Authentication
2
- include MongoMapper::Document
3
- key :provider, String
4
- key :uid, Integer
5
- belongs_to :user
6
- end
@@ -1,7 +0,0 @@
1
- class User
2
- include MongoMapper::Document
3
-
4
- key :username
5
-
6
- many :authentications, :dependent => :destroy
7
- end
@@ -1,7 +0,0 @@
1
- class Authentication
2
- include Mongoid::Document
3
- field :user_id, :type => Integer
4
- field :provider, :type => String
5
- field :uid, :type => Integer
6
- belongs_to :user
7
- end
@@ -1,7 +0,0 @@
1
- class User
2
- include Mongoid::Document
3
-
4
- field :username, type: String
5
-
6
- has_many :authentications, :dependent => :destroy
7
- end