sorcery 0.13.0 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +1 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +5 -0
- data/.github/workflows/ruby.yml +49 -0
- data/.rubocop.yml +2 -2
- data/.rubocop_todo.yml +157 -1
- data/CHANGELOG.md +49 -0
- data/CODE_OF_CONDUCT.md +14 -0
- data/Gemfile +1 -1
- data/README.md +4 -4
- data/Rakefile +3 -1
- data/SECURITY.md +19 -0
- data/gemfiles/rails_52.gemfile +7 -0
- data/gemfiles/rails_60.gemfile +7 -0
- data/lib/generators/sorcery/helpers.rb +4 -0
- data/lib/generators/sorcery/templates/initializer.rb +111 -85
- data/lib/generators/sorcery/templates/migration/activity_logging.rb +5 -5
- data/lib/generators/sorcery/templates/migration/brute_force_protection.rb +4 -4
- data/lib/generators/sorcery/templates/migration/core.rb +4 -4
- data/lib/generators/sorcery/templates/migration/external.rb +3 -3
- data/lib/generators/sorcery/templates/migration/magic_login.rb +4 -4
- data/lib/generators/sorcery/templates/migration/remember_me.rb +3 -3
- data/lib/generators/sorcery/templates/migration/reset_password.rb +5 -5
- data/lib/generators/sorcery/templates/migration/user_activation.rb +4 -4
- data/lib/sorcery/adapters/active_record_adapter.rb +2 -2
- data/lib/sorcery/controller.rb +4 -1
- data/lib/sorcery/controller/config.rb +6 -6
- data/lib/sorcery/controller/submodules/activity_logging.rb +5 -3
- data/lib/sorcery/controller/submodules/external.rb +4 -1
- data/lib/sorcery/controller/submodules/http_basic_auth.rb +1 -0
- data/lib/sorcery/controller/submodules/remember_me.rb +2 -1
- data/lib/sorcery/controller/submodules/session_timeout.rb +2 -0
- data/lib/sorcery/crypto_providers/aes256.rb +1 -1
- data/lib/sorcery/crypto_providers/bcrypt.rb +6 -1
- data/lib/sorcery/engine.rb +7 -1
- data/lib/sorcery/model.rb +6 -5
- data/lib/sorcery/model/config.rb +5 -0
- data/lib/sorcery/model/submodules/magic_login.rb +7 -4
- data/lib/sorcery/model/submodules/reset_password.rb +6 -2
- data/lib/sorcery/providers/battlenet.rb +51 -0
- data/lib/sorcery/providers/discord.rb +52 -0
- data/lib/sorcery/providers/line.rb +63 -0
- data/lib/sorcery/providers/linkedin.rb +45 -36
- data/lib/sorcery/providers/vk.rb +1 -1
- data/lib/sorcery/version.rb +1 -1
- data/sorcery.gemspec +5 -6
- data/spec/controllers/controller_oauth2_spec.rb +41 -6
- data/spec/controllers/controller_oauth_spec.rb +6 -0
- data/spec/controllers/controller_remember_me_spec.rb +15 -12
- data/spec/controllers/controller_spec.rb +11 -1
- data/spec/providers/example_provider_spec.rb +17 -0
- data/spec/providers/example_spec.rb +17 -0
- data/spec/rails_app/app/assets/config/manifest.js +1 -0
- data/spec/rails_app/app/controllers/application_controller.rb +2 -0
- data/spec/rails_app/app/controllers/sorcery_controller.rb +69 -1
- data/spec/rails_app/config/routes.rb +10 -0
- data/spec/shared_examples/user_reset_password_shared_examples.rb +18 -2
- data/spec/shared_examples/user_shared_examples.rb +63 -0
- data/spec/sorcery_crypto_providers_spec.rb +60 -0
- data/spec/support/migration_helper.rb +12 -2
- data/spec/support/providers/example.rb +11 -0
- data/spec/support/providers/example_provider.rb +11 -0
- metadata +25 -15
- data/.travis.yml +0 -38
- data/gemfiles/active_record_rails_40.gemfile +0 -6
- data/gemfiles/active_record_rails_41.gemfile +0 -6
- data/gemfiles/active_record_rails_42.gemfile +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f0614713fb5b564c7273b8f08b71547414613303b574156932f415dee83286e
|
4
|
+
data.tar.gz: aa2b3081950f5c5f4615dbb21f535fa90ade9a600b29a9d41e3449bdd8551c58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 781c5dd4d01ab49353464f4e8eb1f1990351f75e1acf307ef9fb83892e4304fd5a5876afa4b8091e4f4edad6661e1f6a4b6b226eb8cb1b290d0712e30826414b
|
7
|
+
data.tar.gz: 347e36c6b09f16eaa1028e8ae02eca140763d07c9981a74b867997994e32a968dcde6016b4b8aab61738ee5eaf463989775ae1c1d257bc561e20ec30ac7e4068
|
data/.github/FUNDING.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
github: athix
|
@@ -0,0 +1,49 @@
|
|
1
|
+
name: Test Suite
|
2
|
+
|
3
|
+
# Run against all commits and pull requests.
|
4
|
+
on: [ push, pull_request ]
|
5
|
+
|
6
|
+
jobs:
|
7
|
+
test_matrix:
|
8
|
+
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
|
11
|
+
strategy:
|
12
|
+
fail-fast: false
|
13
|
+
matrix:
|
14
|
+
ruby:
|
15
|
+
- 2.4
|
16
|
+
- 2.5
|
17
|
+
- 2.6
|
18
|
+
- 2.7
|
19
|
+
- 3.0
|
20
|
+
|
21
|
+
rails:
|
22
|
+
- '52'
|
23
|
+
- '60'
|
24
|
+
|
25
|
+
exclude:
|
26
|
+
- ruby: 2.4
|
27
|
+
rails: '60'
|
28
|
+
- ruby: 3.0
|
29
|
+
rails: '52'
|
30
|
+
|
31
|
+
env:
|
32
|
+
BUNDLE_GEMFILE: gemfiles/rails_${{ matrix.rails }}.gemfile
|
33
|
+
|
34
|
+
steps:
|
35
|
+
- uses: actions/checkout@v2
|
36
|
+
- name: Set up Ruby
|
37
|
+
uses: ruby/setup-ruby@v1
|
38
|
+
with:
|
39
|
+
ruby-version: ${{ matrix.ruby }}
|
40
|
+
bundler-cache: true
|
41
|
+
- name: Run tests
|
42
|
+
run: bundle exec rake spec
|
43
|
+
|
44
|
+
finish:
|
45
|
+
runs-on: ubuntu-latest
|
46
|
+
needs: [ test_matrix ]
|
47
|
+
steps:
|
48
|
+
- name: Wait for status checks
|
49
|
+
run: echo "All Green!"
|
data/.rubocop.yml
CHANGED
@@ -3,7 +3,7 @@ inherit_from: .rubocop_todo.yml
|
|
3
3
|
AllCops:
|
4
4
|
Exclude:
|
5
5
|
- 'lib/generators/sorcery/templates/**/*'
|
6
|
-
TargetRubyVersion: 2.
|
6
|
+
TargetRubyVersion: 2.6
|
7
7
|
|
8
8
|
# See: https://github.com/rubocop-hq/rubocop/issues/3344
|
9
9
|
Style/DoubleNegation:
|
@@ -21,7 +21,7 @@ Metrics/BlockLength:
|
|
21
21
|
Exclude:
|
22
22
|
- 'lib/**/*'
|
23
23
|
- 'spec/**/*'
|
24
|
-
|
24
|
+
Layout/LineLength:
|
25
25
|
Exclude:
|
26
26
|
- 'lib/**/*'
|
27
27
|
- 'spec/**/*'
|
data/.rubocop_todo.yml
CHANGED
@@ -1,7 +1,163 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
3
|
+
# on 2021-04-04 05:00:11 UTC using RuboCop version 0.88.0.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 1
|
10
|
+
# Configuration parameters: Include.
|
11
|
+
# Include: **/*.gemspec
|
12
|
+
Gemspec/RequiredRubyVersion:
|
13
|
+
Exclude:
|
14
|
+
- 'sorcery.gemspec'
|
15
|
+
|
16
|
+
# Offense count: 2
|
17
|
+
# Cop supports --auto-correct.
|
18
|
+
# Configuration parameters: IndentationWidth.
|
19
|
+
# SupportedStyles: special_inside_parentheses, consistent, align_braces
|
20
|
+
Layout/FirstHashElementIndentation:
|
21
|
+
EnforcedStyle: consistent
|
22
|
+
|
23
|
+
# Offense count: 83
|
24
|
+
# Cop supports --auto-correct.
|
25
|
+
# Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
|
26
|
+
# SupportedHashRocketStyles: key, separator, table
|
27
|
+
# SupportedColonStyles: key, separator, table
|
28
|
+
# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
|
29
|
+
Layout/HashAlignment:
|
30
|
+
Enabled: false
|
31
|
+
|
32
|
+
# Offense count: 3
|
33
|
+
# Cop supports --auto-correct.
|
34
|
+
# Configuration parameters: AllowInHeredoc.
|
35
|
+
Layout/TrailingWhitespace:
|
36
|
+
Exclude:
|
37
|
+
- 'lib/sorcery/controller/submodules/external.rb'
|
38
|
+
|
39
|
+
# Offense count: 2
|
40
|
+
# Configuration parameters: AllowSafeAssignment.
|
41
|
+
Lint/AssignmentInCondition:
|
42
|
+
Exclude:
|
43
|
+
- 'spec/rails_app/app/controllers/sorcery_controller.rb'
|
44
|
+
|
45
|
+
# Offense count: 1
|
46
|
+
# Cop supports --auto-correct.
|
47
|
+
Lint/NonDeterministicRequireOrder:
|
48
|
+
Exclude:
|
49
|
+
- 'spec/spec_helper.rb'
|
50
|
+
|
51
|
+
# Offense count: 4
|
52
|
+
# Cop supports --auto-correct.
|
53
|
+
Lint/RedundantCopDisableDirective:
|
54
|
+
Exclude:
|
55
|
+
- 'lib/sorcery/controller.rb'
|
56
|
+
- 'lib/sorcery/model.rb'
|
57
|
+
- 'spec/rails_app/config/application.rb'
|
58
|
+
- 'spec/shared_examples/user_shared_examples.rb'
|
59
|
+
|
60
|
+
# Offense count: 4
|
61
|
+
# Cop supports --auto-correct.
|
62
|
+
Lint/SendWithMixinArgument:
|
63
|
+
Exclude:
|
64
|
+
- 'lib/sorcery.rb'
|
65
|
+
- 'lib/sorcery/engine.rb'
|
66
|
+
- 'lib/sorcery/test_helpers/internal/rails.rb'
|
67
|
+
|
68
|
+
# Offense count: 2
|
69
|
+
# Cop supports --auto-correct.
|
70
|
+
# Configuration parameters: IgnoreEmptyBlocks, AllowUnusedKeywordArguments.
|
71
|
+
Lint/UnusedBlockArgument:
|
72
|
+
Exclude:
|
73
|
+
- 'spec/shared_examples/user_shared_examples.rb'
|
74
|
+
|
75
|
+
# Offense count: 1
|
76
|
+
# Cop supports --auto-correct.
|
77
|
+
# Configuration parameters: EnforcedStyle, SingleLineConditionsOnly, IncludeTernaryExpressions.
|
78
|
+
# SupportedStyles: assign_to_condition, assign_inside_condition
|
79
|
+
Style/ConditionalAssignment:
|
80
|
+
Exclude:
|
81
|
+
- 'lib/sorcery/adapters/active_record_adapter.rb'
|
82
|
+
|
83
|
+
# Offense count: 1
|
84
|
+
# Cop supports --auto-correct.
|
85
|
+
Style/ExpandPathArguments:
|
86
|
+
Exclude:
|
87
|
+
- 'spec/rails_app/config.ru'
|
88
|
+
|
89
|
+
# Offense count: 1
|
90
|
+
# Configuration parameters: EnforcedStyle.
|
91
|
+
# SupportedStyles: annotated, template, unannotated
|
92
|
+
Style/FormatStringToken:
|
93
|
+
Exclude:
|
94
|
+
- 'lib/generators/sorcery/install_generator.rb'
|
95
|
+
|
96
|
+
# Offense count: 125
|
97
|
+
# Cop supports --auto-correct.
|
98
|
+
# Configuration parameters: EnforcedStyle.
|
99
|
+
# SupportedStyles: always, always_true, never
|
100
|
+
Style/FrozenStringLiteralComment:
|
101
|
+
Enabled: false
|
102
|
+
|
103
|
+
# Offense count: 3
|
104
|
+
# Cop supports --auto-correct.
|
105
|
+
# Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
|
106
|
+
# SupportedStyles: ruby19, hash_rockets, no_mixed_keys, ruby19_no_mixed_keys
|
107
|
+
Style/HashSyntax:
|
108
|
+
Exclude:
|
109
|
+
- 'lib/sorcery/adapters/active_record_adapter.rb'
|
110
|
+
- 'lib/sorcery/test_helpers/rails/integration.rb'
|
111
|
+
|
112
|
+
# Offense count: 34
|
113
|
+
# Cop supports --auto-correct.
|
114
|
+
Style/IfUnlessModifier:
|
115
|
+
Enabled: false
|
116
|
+
|
117
|
+
# Offense count: 1
|
118
|
+
# Cop supports --auto-correct.
|
119
|
+
Style/MultilineIfModifier:
|
120
|
+
Exclude:
|
121
|
+
- 'lib/sorcery/providers/line.rb'
|
122
|
+
|
123
|
+
# Offense count: 2
|
124
|
+
# Cop supports --auto-correct.
|
125
|
+
Style/RedundantBegin:
|
126
|
+
Exclude:
|
127
|
+
- 'lib/sorcery/controller.rb'
|
128
|
+
- 'lib/sorcery/model.rb'
|
129
|
+
|
130
|
+
# Offense count: 4
|
131
|
+
# Cop supports --auto-correct.
|
132
|
+
# Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods.
|
133
|
+
# AllowedMethods: present?, blank?, presence, try, try!
|
134
|
+
Style/SafeNavigation:
|
135
|
+
Exclude:
|
136
|
+
- 'lib/sorcery/controller/config.rb'
|
137
|
+
- 'lib/sorcery/controller/submodules/brute_force_protection.rb'
|
138
|
+
- 'lib/sorcery/controller/submodules/remember_me.rb'
|
139
|
+
- 'lib/sorcery/model.rb'
|
140
|
+
|
141
|
+
# Offense count: 7
|
142
|
+
# Cop supports --auto-correct.
|
143
|
+
# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
|
144
|
+
# SupportedStyles: single_quotes, double_quotes
|
145
|
+
Style/StringLiterals:
|
146
|
+
Exclude:
|
147
|
+
- 'spec/controllers/controller_oauth2_spec.rb'
|
148
|
+
- 'spec/sorcery_crypto_providers_spec.rb'
|
149
|
+
|
150
|
+
# Offense count: 1
|
151
|
+
# Cop supports --auto-correct.
|
152
|
+
# Configuration parameters: EnforcedStyle, MinSize.
|
153
|
+
# SupportedStyles: percent, brackets
|
154
|
+
Style/SymbolArray:
|
155
|
+
Exclude:
|
156
|
+
- 'Rakefile'
|
157
|
+
|
158
|
+
# Offense count: 2
|
159
|
+
# Cop supports --auto-correct.
|
160
|
+
Style/UnpackFirst:
|
161
|
+
Exclude:
|
162
|
+
- 'lib/sorcery/crypto_providers/aes256.rb'
|
163
|
+
- 'spec/sorcery_crypto_providers_spec.rb'
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,55 @@
|
|
1
1
|
# Changelog
|
2
2
|
## HEAD
|
3
3
|
|
4
|
+
## 0.16.1
|
5
|
+
|
6
|
+
* Fix default table name being incorrect in migration generator [#274](https://github.com/Sorcery/sorcery/pull/274)
|
7
|
+
* Update `oauth` dependency per CVE-2016-11086
|
8
|
+
|
9
|
+
## 0.16.0
|
10
|
+
|
11
|
+
* Add BattleNet Provider [#260](https://github.com/Sorcery/sorcery/pull/260)
|
12
|
+
* Fix failing isolated tests [#249](https://github.com/Sorcery/sorcery/pull/249)
|
13
|
+
* Support LINE login v2.1 [#251](https://github.com/Sorcery/sorcery/pull/251)
|
14
|
+
* Update generators to better support namespaces [#237](https://github.com/Sorcery/sorcery/pull/237)
|
15
|
+
* Add support for Rails 6 [#238](https://github.com/Sorcery/sorcery/pull/238)
|
16
|
+
* Fix ruby 2.7 deprecation warnings [#241](https://github.com/Sorcery/sorcery/pull/241)
|
17
|
+
* Use set to ensure unique arrays [#233](https://github.com/Sorcery/sorcery/pull/233)
|
18
|
+
|
19
|
+
## 0.15.1
|
20
|
+
|
21
|
+
* Update `oauth` dependency per CVE-2016-11086
|
22
|
+
|
23
|
+
## 0.15.0
|
24
|
+
|
25
|
+
* Fix brute force vuln due to callbacks no being ran [#235](https://github.com/Sorcery/sorcery/pull/235)
|
26
|
+
* Revert on_load change due to breaking existing applications [#234](https://github.com/Sorcery/sorcery/pull/234)
|
27
|
+
* Add forget_me! and force_forget_me! test cases [#216](https://github.com/Sorcery/sorcery/pull/216)
|
28
|
+
* In `generic_send_email`, check responds_to [#211](https://github.com/Sorcery/sorcery/pull/211)
|
29
|
+
* Fix typo [#219](https://github.com/Sorcery/sorcery/pull/219)
|
30
|
+
* Fix deprecation warnings in Rails 6 [#209](https://github.com/Sorcery/sorcery/pull/209)
|
31
|
+
* Add ruby 2.6.5 to the travis build [#215](https://github.com/Sorcery/sorcery/pull/215)
|
32
|
+
* Add discord provider [#185](https://github.com/Sorcery/sorcery/pull/185)
|
33
|
+
* Remove MySQL database creation call [#214](https://github.com/Sorcery/sorcery/pull/214)
|
34
|
+
* Use id instead of uid for VK provider [#199](https://github.com/Sorcery/sorcery/pull/199)
|
35
|
+
* Don't :return_t JSON requests after login [#197](https://github.com/Sorcery/sorcery/pull/197)
|
36
|
+
* Fix email scope for LinkedIn Provider [#191](https://github.com/Sorcery/sorcery/pull/191)
|
37
|
+
* Ignore cookies when undefined cookies [#187](https://github.com/Sorcery/sorcery/pull/187)
|
38
|
+
* Allow for custom providers with multi-word class names. [#190](https://github.com/Sorcery/sorcery/pull/190)
|
39
|
+
|
40
|
+
## 0.14.0
|
41
|
+
|
42
|
+
* Update LinkedIn to use OAuth 2 [#189](https://github.com/Sorcery/sorcery/pull/189)
|
43
|
+
* Support the LINE login auth [#80](https://github.com/Sorcery/sorcery/pull/80)
|
44
|
+
* Allow BCrypt to have app-specific secret token [#173](https://github.com/Sorcery/sorcery/pull/173)
|
45
|
+
* Add #change_password method to reset_password module. [#165](https://github.com/Sorcery/sorcery/pull/165)
|
46
|
+
* Clean up initializer comments [#153](https://github.com/Sorcery/sorcery/pull/153)
|
47
|
+
* Allow load_from_magic_login_token to accept a block [#152](https://github.com/Sorcery/sorcery/pull/152)
|
48
|
+
* Fix CipherError class name [#142](https://github.com/Sorcery/sorcery/pull/142)
|
49
|
+
* Fix `update_failed_logins_count` being called twice when login failed [#163](https://github.com/Sorcery/sorcery/pull/163)
|
50
|
+
* Update migration templates to use new hash syntax [#170](https://github.com/Sorcery/sorcery/pull/170)
|
51
|
+
* Support for Rails 4.2 and lower soft-dropped [#171](https://github.com/Sorcery/sorcery/pull/171)
|
52
|
+
|
4
53
|
## 0.13.0
|
5
54
|
|
6
55
|
* Add support for Rails 5.2 / Ruby 2.5 [#129](https://github.com/Sorcery/sorcery/pull/129)
|
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# The Sorcery Community Code of Conduct
|
2
|
+
|
3
|
+
This document provides a few simple community guidelines for a safe, respectful,
|
4
|
+
productive, and collaborative place for any person who is willing to contribute
|
5
|
+
to the Sorcery community. It applies to all "collaborative spaces", which are
|
6
|
+
defined as community communications channels (such as mailing lists, submitted
|
7
|
+
patches, commit comments, etc.).
|
8
|
+
|
9
|
+
* Participants will be tolerant of opposing views.
|
10
|
+
* Participants must ensure that their language and actions are free of personal
|
11
|
+
attacks and disparaging personal remarks.
|
12
|
+
* When interpreting the words and actions of others, participants should always
|
13
|
+
assume good intentions.
|
14
|
+
* Behaviour which can be reasonably considered harassment will not be tolerated.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
[](https://rubygems.org/gems/sorcery)
|
5
5
|
[](https://travis-ci.org/Sorcery/sorcery)
|
6
6
|
[](https://codeclimate.com/github/Sorcery/sorcery)
|
7
|
-
[](http://inch-ci.org/github/Sorcery/sorcery)
|
8
7
|
[](https://gitter.im/Sorcery/sorcery?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
9
8
|
|
10
9
|
Magical Authentication for Rails. Supports ActiveRecord, DataMapper, Mongoid and MongoMapper.
|
@@ -99,7 +98,8 @@ force_forget_me! # Forgets all sessions by clearing the token, even if remember_
|
|
99
98
|
User.load_from_reset_password_token(token)
|
100
99
|
@user.generate_reset_password_token! # Use if you want to send the email by yourself
|
101
100
|
@user.deliver_reset_password_instructions! # Generates the token and sends the email
|
102
|
-
@user.change_password
|
101
|
+
@user.change_password(new_password)
|
102
|
+
@user.change_password!(new_password) # Same as change_password but raises exception on save
|
103
103
|
```
|
104
104
|
|
105
105
|
### Session Timeout
|
@@ -237,14 +237,14 @@ Feel free to ask questions using these contact details:
|
|
237
237
|
|
238
238
|
**Current Maintainers:**
|
239
239
|
|
240
|
-
-
|
241
|
-
- Josh Buker ([@athix](https://github.com/athix)) | [Email](mailto:jbuker@aeonsplice.com)
|
240
|
+
- Josh Buker ([@athix](https://github.com/athix)) | [Email](mailto:crypto+sorcery@joshbuker.com?subject=Sorcery)
|
242
241
|
|
243
242
|
**Past Maintainers:**
|
244
243
|
|
245
244
|
- Noam Ben-Ari ([@NoamB](https://github.com/NoamB)) | [Email](mailto:nbenari@gmail.com) | [Twitter](https://twitter.com/nbenari)
|
246
245
|
- Kir Shatrov ([@kirs](https://github.com/kirs)) | [Email](mailto:shatrov@me.com) | [Twitter](https://twitter.com/Kiiiir)
|
247
246
|
- Grzegorz Witek ([@arnvald](https://github.com/arnvald)) | [Email](mailto:arnvald.to@gmail.com) | [Twitter](https://twitter.com/arnvald)
|
247
|
+
- Chase Gilliam ([@Ch4s3](https://github.com/Ch4s3)) | [Email](mailto:chase.gilliam@gmail.com)
|
248
248
|
|
249
249
|
## License
|
250
250
|
|
data/Rakefile
CHANGED
data/SECURITY.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Security Policy
|
2
|
+
|
3
|
+
## Supported Versions
|
4
|
+
|
5
|
+
| Version | Supported |
|
6
|
+
| --------- | ------------------ |
|
7
|
+
| ~> 0.16.0 | :white_check_mark: |
|
8
|
+
| ~> 0.15.0 | :white_check_mark: |
|
9
|
+
| < 0.15.0 | :x: |
|
10
|
+
|
11
|
+
## Reporting a Vulnerability
|
12
|
+
|
13
|
+
Email the current maintainer(s) with a description of the vulnerability. You
|
14
|
+
should expect a response within 48 hours. If the vulnerability is accepted, a
|
15
|
+
Github advisory will be created and eventually released with a CVE corresponding
|
16
|
+
to the issue found.
|
17
|
+
|
18
|
+
A list of the current maintainers can be found on the README under the contact
|
19
|
+
section. See: [README.md](https://github.com/Sorcery/sorcery#contact)
|
@@ -12,6 +12,10 @@ module Sorcery
|
|
12
12
|
options[:model] ? options[:model].classify : 'User'
|
13
13
|
end
|
14
14
|
|
15
|
+
def tableized_model_class
|
16
|
+
options[:model] ? options[:model].gsub(/::/, '').tableize : 'users'
|
17
|
+
end
|
18
|
+
|
15
19
|
def model_path
|
16
20
|
@model_path ||= File.join('app', 'models', "#{file_path}.rb")
|
17
21
|
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
# The first thing you need to configure is which modules you need in your app.
|
2
2
|
# The default is nothing which will include only core features (password encryption, login/logout).
|
3
|
+
#
|
3
4
|
# Available submodules are: :user_activation, :http_basic_auth, :remember_me,
|
4
|
-
# :reset_password, :session_timeout, :brute_force_protection, :activity_logging,
|
5
|
+
# :reset_password, :session_timeout, :brute_force_protection, :activity_logging,
|
6
|
+
# :magic_login, :external
|
5
7
|
Rails.application.config.sorcery.submodules = []
|
6
8
|
|
7
9
|
# Here you can configure each submodule's features.
|
@@ -13,8 +15,8 @@ Rails.application.config.sorcery.configure do |config|
|
|
13
15
|
#
|
14
16
|
# config.not_authenticated_action =
|
15
17
|
|
16
|
-
# When a non logged
|
17
|
-
# the URL he
|
18
|
+
# When a non logged-in user tries to enter a page that requires login, save
|
19
|
+
# the URL he wants to reach, and send him there after login, using 'redirect_back_or_to'.
|
18
20
|
# Default: `true`
|
19
21
|
#
|
20
22
|
# config.save_return_to_url =
|
@@ -46,7 +48,7 @@ Rails.application.config.sorcery.configure do |config|
|
|
46
48
|
#
|
47
49
|
# config.session_timeout_from_last_action =
|
48
50
|
|
49
|
-
# Invalidate active sessions Requires an `invalidate_sessions_before` timestamp column
|
51
|
+
# Invalidate active sessions. Requires an `invalidate_sessions_before` timestamp column
|
50
52
|
# Default: `false`
|
51
53
|
#
|
52
54
|
# config.session_timeout_invalidate_active_sessions_enabled =
|
@@ -58,23 +60,24 @@ Rails.application.config.sorcery.configure do |config|
|
|
58
60
|
# config.controller_to_realm_map =
|
59
61
|
|
60
62
|
# -- activity logging --
|
61
|
-
#
|
63
|
+
# Will register the time of last user login, every login.
|
62
64
|
# Default: `true`
|
63
65
|
#
|
64
66
|
# config.register_login_time =
|
65
67
|
|
66
|
-
#
|
68
|
+
# Will register the time of last user logout, every logout.
|
67
69
|
# Default: `true`
|
68
70
|
#
|
69
71
|
# config.register_logout_time =
|
70
72
|
|
71
|
-
#
|
73
|
+
# Will register the time of last user action, every action.
|
72
74
|
# Default: `true`
|
73
75
|
#
|
74
76
|
# config.register_last_activity_time =
|
75
77
|
|
76
78
|
# -- external --
|
77
|
-
# What providers are supported by this app
|
79
|
+
# What providers are supported by this app
|
80
|
+
# i.e. [:twitter, :facebook, :github, :linkedin, :xing, :google, :liveid, :salesforce, :slack, :line].
|
78
81
|
# Default: `[]`
|
79
82
|
#
|
80
83
|
# config.external_providers =
|
@@ -85,16 +88,19 @@ Rails.application.config.sorcery.configure do |config|
|
|
85
88
|
#
|
86
89
|
# config.ca_file =
|
87
90
|
|
88
|
-
#
|
89
|
-
#
|
90
|
-
#
|
91
|
+
# Linkedin requires r_emailaddress scope to fetch user's email address.
|
92
|
+
# You can skip including the email field if you use an intermediary signup form. (using build_from method).
|
93
|
+
# The r_emailaddress scope is only necessary if you are using the create_from method directly.
|
91
94
|
#
|
92
95
|
# config.linkedin.key = ""
|
93
96
|
# config.linkedin.secret = ""
|
94
97
|
# config.linkedin.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=linkedin"
|
95
|
-
# config.linkedin.
|
96
|
-
#
|
97
|
-
#
|
98
|
+
# config.linkedin.user_info_mapping = {
|
99
|
+
# first_name: 'localizedFirstName',
|
100
|
+
# last_name: 'localizedLastName',
|
101
|
+
# email: 'emailAddress'
|
102
|
+
# }
|
103
|
+
# config.linkedin.scope = "r_liteprofile r_emailaddress"
|
98
104
|
#
|
99
105
|
#
|
100
106
|
# For information about XING API:
|
@@ -107,7 +113,7 @@ Rails.application.config.sorcery.configure do |config|
|
|
107
113
|
#
|
108
114
|
#
|
109
115
|
# Twitter will not accept any requests nor redirect uri containing localhost,
|
110
|
-
#
|
116
|
+
# Make sure you use 0.0.0.0:3000 to access your app in development
|
111
117
|
#
|
112
118
|
# config.twitter.key = ""
|
113
119
|
# config.twitter.secret = ""
|
@@ -159,7 +165,8 @@ Rails.application.config.sorcery.configure do |config|
|
|
159
165
|
# config.google.scope = "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
|
160
166
|
#
|
161
167
|
# For Microsoft Graph, the key will be your App ID, and the secret will be your app password/public key.
|
162
|
-
# The callback URL "can't contain a query string or invalid special characters"
|
168
|
+
# The callback URL "can't contain a query string or invalid special characters"
|
169
|
+
# See: https://docs.microsoft.com/en-us/azure/active-directory/active-directory-v2-limitations#restrictions-on-redirect-uris
|
163
170
|
# More information at https://graph.microsoft.io/en-us/docs
|
164
171
|
#
|
165
172
|
# config.microsoft.key = ""
|
@@ -190,7 +197,7 @@ Rails.application.config.sorcery.configure do |config|
|
|
190
197
|
|
191
198
|
# For information about JIRA API:
|
192
199
|
# https://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Example+-+OAuth+authentication
|
193
|
-
#
|
200
|
+
# To obtain the consumer key and the public key you can use the jira-ruby gem https://github.com/sumoheavy/jira-ruby
|
194
201
|
# or run openssl req -x509 -nodes -newkey rsa:1024 -sha1 -keyout rsakey.pem -out rsacert.pem to obtain the public key
|
195
202
|
# Make sure you have configured the application link properly
|
196
203
|
|
@@ -203,7 +210,7 @@ Rails.application.config.sorcery.configure do |config|
|
|
203
210
|
# For information about Salesforce API:
|
204
211
|
# https://developer.salesforce.com/signup &
|
205
212
|
# https://www.salesforce.com/us/developer/docs/api_rest/
|
206
|
-
# Salesforce callback_url must be https. You can run the following to generate self-signed ssl cert
|
213
|
+
# Salesforce callback_url must be https. You can run the following to generate self-signed ssl cert:
|
207
214
|
# openssl req -new -newkey rsa:2048 -sha1 -days 365 -nodes -x509 -keyout server.key -out server.crt
|
208
215
|
# Make sure you have configured the application link properly
|
209
216
|
# config.salesforce.key = '123123'
|
@@ -212,230 +219,248 @@ Rails.application.config.sorcery.configure do |config|
|
|
212
219
|
# config.salesforce.scope = "full"
|
213
220
|
# config.salesforce.user_info_mapping = {:email => "email"}
|
214
221
|
|
222
|
+
# config.line.key = ""
|
223
|
+
# config.line.secret = ""
|
224
|
+
# config.line.callback_url = "http://mydomain.com:3000/oauth/callback?provider=line"
|
225
|
+
# config.line.scope = "profile"
|
226
|
+
# config.line.bot_prompt = "normal"
|
227
|
+
# config.line.user_info_mapping = {name: 'displayName'}
|
228
|
+
|
229
|
+
|
230
|
+
# For information about Discord API
|
231
|
+
# https://discordapp.com/developers/docs/topics/oauth2
|
232
|
+
# config.discord.key = "xxxxxx"
|
233
|
+
# config.discord.secret = "xxxxxx"
|
234
|
+
# config.discord.callback_url = "http://localhost:3000/oauth/callback?provider=discord"
|
235
|
+
# config.discord.scope = "email guilds"
|
236
|
+
|
237
|
+
# For information about Battlenet API
|
238
|
+
# https://develop.battle.net/documentation/guides/using-oauth
|
239
|
+
# config.battlenet.site = "https://eu.battle.net/" #See Website for other Regional Domains
|
240
|
+
# config.battlenet.key = "xxxxxx"
|
241
|
+
# config.battlenet.secret = "xxxxxx"
|
242
|
+
# config.battlenet.callback_url = "http://localhost:3000/oauth/callback?provider=battlenet"
|
243
|
+
# config.battlenet.scope = "openid"
|
215
244
|
# --- user config ---
|
216
245
|
config.user_config do |user|
|
217
246
|
# -- core --
|
218
|
-
#
|
247
|
+
# Specify username attributes, for example: [:username, :email].
|
219
248
|
# Default: `[:email]`
|
220
249
|
#
|
221
250
|
# user.username_attribute_names =
|
222
251
|
|
223
|
-
#
|
252
|
+
# Change *virtual* password attribute, the one which is used until an encrypted one is generated.
|
224
253
|
# Default: `:password`
|
225
254
|
#
|
226
255
|
# user.password_attribute_name =
|
227
256
|
|
228
|
-
#
|
257
|
+
# Downcase the username before trying to authenticate, default is false
|
229
258
|
# Default: `false`
|
230
259
|
#
|
231
260
|
# user.downcase_username_before_authenticating =
|
232
261
|
|
233
|
-
#
|
262
|
+
# Change default email attribute.
|
234
263
|
# Default: `:email`
|
235
264
|
#
|
236
265
|
# user.email_attribute_name =
|
237
266
|
|
238
|
-
#
|
267
|
+
# Change default crypted_password attribute.
|
239
268
|
# Default: `:crypted_password`
|
240
269
|
#
|
241
270
|
# user.crypted_password_attribute_name =
|
242
271
|
|
243
|
-
#
|
272
|
+
# What pattern to use to join the password with the salt
|
244
273
|
# Default: `""`
|
245
274
|
#
|
246
275
|
# user.salt_join_token =
|
247
276
|
|
248
|
-
#
|
277
|
+
# Change default salt attribute.
|
249
278
|
# Default: `:salt`
|
250
279
|
#
|
251
280
|
# user.salt_attribute_name =
|
252
281
|
|
253
|
-
#
|
282
|
+
# How many times to apply encryption to the password.
|
254
283
|
# Default: 1 in test env, `nil` otherwise
|
255
284
|
#
|
256
285
|
user.stretches = 1 if Rails.env.test?
|
257
286
|
|
258
|
-
#
|
287
|
+
# Encryption key used to encrypt reversible encryptions such as AES256.
|
259
288
|
# WARNING: If used for users' passwords, changing this key will leave passwords undecryptable!
|
260
289
|
# Default: `nil`
|
261
290
|
#
|
262
291
|
# user.encryption_key =
|
263
292
|
|
264
|
-
#
|
293
|
+
# Use an external encryption class.
|
265
294
|
# Default: `nil`
|
266
295
|
#
|
267
296
|
# user.custom_encryption_provider =
|
268
297
|
|
269
|
-
#
|
298
|
+
# Encryption algorithm name. See 'encryption_algorithm=' for available options.
|
270
299
|
# Default: `:bcrypt`
|
271
300
|
#
|
272
301
|
# user.encryption_algorithm =
|
273
302
|
|
274
|
-
#
|
303
|
+
# Make this configuration inheritable for subclasses. Useful for ActiveRecord's STI.
|
275
304
|
# Default: `false`
|
276
305
|
#
|
277
306
|
# user.subclasses_inherit_config =
|
278
307
|
|
279
308
|
# -- remember_me --
|
280
309
|
# How long in seconds the session length will be
|
281
|
-
# Default: `
|
310
|
+
# Default: `60 * 60 * 24 * 7`
|
282
311
|
#
|
283
312
|
# user.remember_me_for =
|
284
313
|
|
285
|
-
#
|
286
|
-
# logins/logouts (
|
314
|
+
# When true, sorcery will persist a single remember me token for all
|
315
|
+
# logins/logouts (to support remembering on multiple browsers simultaneously).
|
287
316
|
# Default: false
|
288
317
|
#
|
289
318
|
# user.remember_me_token_persist_globally =
|
290
319
|
|
291
320
|
# -- user_activation --
|
292
|
-
#
|
321
|
+
# The attribute name to hold activation state (active/pending).
|
293
322
|
# Default: `:activation_state`
|
294
323
|
#
|
295
324
|
# user.activation_state_attribute_name =
|
296
325
|
|
297
|
-
#
|
326
|
+
# The attribute name to hold activation code (sent by email).
|
298
327
|
# Default: `:activation_token`
|
299
328
|
#
|
300
329
|
# user.activation_token_attribute_name =
|
301
330
|
|
302
|
-
#
|
331
|
+
# The attribute name to hold activation code expiration date.
|
303
332
|
# Default: `:activation_token_expires_at`
|
304
333
|
#
|
305
334
|
# user.activation_token_expires_at_attribute_name =
|
306
335
|
|
307
|
-
#
|
336
|
+
# How many seconds before the activation code expires. nil for never expires.
|
308
337
|
# Default: `nil`
|
309
338
|
#
|
310
339
|
# user.activation_token_expiration_period =
|
311
340
|
|
312
|
-
#
|
341
|
+
# REQUIRED:
|
342
|
+
# User activation mailer class.
|
313
343
|
# Default: `nil`
|
314
344
|
#
|
315
345
|
# user.user_activation_mailer =
|
316
346
|
|
317
|
-
#
|
318
|
-
#
|
319
|
-
# manually handle how and when email is sent.
|
347
|
+
# When true, sorcery will not automatically
|
348
|
+
# send the activation details email, and allow you to
|
349
|
+
# manually handle how and when the email is sent.
|
320
350
|
# Default: `false`
|
321
351
|
#
|
322
352
|
# user.activation_mailer_disabled =
|
323
353
|
|
324
|
-
#
|
354
|
+
# Method to send email related
|
325
355
|
# options: `:deliver_later`, `:deliver_now`, `:deliver`
|
326
356
|
# Default: :deliver (Rails version < 4.2) or :deliver_now (Rails version 4.2+)
|
327
357
|
#
|
328
358
|
# user.email_delivery_method =
|
329
359
|
|
330
|
-
#
|
360
|
+
# Activation needed email method on your mailer class.
|
331
361
|
# Default: `:activation_needed_email`
|
332
362
|
#
|
333
363
|
# user.activation_needed_email_method_name =
|
334
364
|
|
335
|
-
#
|
365
|
+
# Activation success email method on your mailer class.
|
336
366
|
# Default: `:activation_success_email`
|
337
367
|
#
|
338
368
|
# user.activation_success_email_method_name =
|
339
369
|
|
340
|
-
#
|
370
|
+
# Do you want to prevent users who did not activate by email from logging in?
|
341
371
|
# Default: `true`
|
342
372
|
#
|
343
373
|
# user.prevent_non_active_users_to_login =
|
344
374
|
|
345
375
|
# -- reset_password --
|
346
|
-
# reset
|
376
|
+
# Password reset token attribute name.
|
347
377
|
# Default: `:reset_password_token`
|
348
378
|
#
|
349
379
|
# user.reset_password_token_attribute_name =
|
350
380
|
|
351
|
-
#
|
381
|
+
# Password token expiry attribute name.
|
352
382
|
# Default: `:reset_password_token_expires_at`
|
353
383
|
#
|
354
384
|
# user.reset_password_token_expires_at_attribute_name =
|
355
385
|
|
356
|
-
#
|
386
|
+
# When was password reset email sent. Used for hammering protection.
|
357
387
|
# Default: `:reset_password_email_sent_at`
|
358
388
|
#
|
359
389
|
# user.reset_password_email_sent_at_attribute_name =
|
360
390
|
|
361
|
-
#
|
391
|
+
# REQUIRED:
|
392
|
+
# Password reset mailer class.
|
362
393
|
# Default: `nil`
|
363
394
|
#
|
364
395
|
# user.reset_password_mailer =
|
365
396
|
|
366
|
-
#
|
397
|
+
# Reset password email method on your mailer class.
|
367
398
|
# Default: `:reset_password_email`
|
368
399
|
#
|
369
400
|
# user.reset_password_email_method_name =
|
370
401
|
|
371
|
-
#
|
372
|
-
#
|
373
|
-
# manually handle how and when email is sent
|
402
|
+
# When true, sorcery will not automatically
|
403
|
+
# send the password reset details email, and allow you to
|
404
|
+
# manually handle how and when the email is sent
|
374
405
|
# Default: `false`
|
375
406
|
#
|
376
407
|
# user.reset_password_mailer_disabled =
|
377
408
|
|
378
|
-
#
|
409
|
+
# How many seconds before the reset request expires. nil for never expires.
|
379
410
|
# Default: `nil`
|
380
411
|
#
|
381
412
|
# user.reset_password_expiration_period =
|
382
413
|
|
383
|
-
#
|
414
|
+
# Hammering protection: how long in seconds to wait before allowing another email to be sent.
|
384
415
|
# Default: `5 * 60`
|
385
416
|
#
|
386
417
|
# user.reset_password_time_between_emails =
|
387
|
-
|
388
|
-
#
|
418
|
+
|
419
|
+
# Access counter to a reset password page attribute name
|
389
420
|
# Default: `:access_count_to_reset_password_page`
|
390
421
|
#
|
391
422
|
# user.reset_password_page_access_count_attribute_name =
|
392
423
|
|
393
424
|
# -- magic_login --
|
394
|
-
#
|
425
|
+
# Magic login code attribute name.
|
395
426
|
# Default: `:magic_login_token`
|
396
427
|
#
|
397
428
|
# user.magic_login_token_attribute_name =
|
398
429
|
|
399
|
-
|
400
|
-
# expires at attribute name.
|
430
|
+
# Magic login expiry attribute name.
|
401
431
|
# Default: `:magic_login_token_expires_at`
|
402
432
|
#
|
403
433
|
# user.magic_login_token_expires_at_attribute_name =
|
404
434
|
|
405
|
-
|
406
|
-
# when was email sent, used for hammering protection.
|
435
|
+
# When was magic login email sent — used for hammering protection.
|
407
436
|
# Default: `:magic_login_email_sent_at`
|
408
437
|
#
|
409
438
|
# user.magic_login_email_sent_at_attribute_name =
|
410
439
|
|
411
|
-
|
412
|
-
# mailer class.
|
440
|
+
# REQUIRED:
|
441
|
+
# Magic login mailer class.
|
413
442
|
# Default: `nil`
|
414
443
|
#
|
415
444
|
# user.magic_login_mailer_class =
|
416
445
|
|
417
|
-
|
418
|
-
# magic login email method on your mailer class.
|
446
|
+
# Magic login email method on your mailer class.
|
419
447
|
# Default: `:magic_login_email`
|
420
448
|
#
|
421
449
|
# user.magic_login_email_method_name =
|
422
450
|
|
423
|
-
|
424
|
-
#
|
425
|
-
#
|
426
|
-
# manually handle how and when email is sent
|
451
|
+
# When true, sorcery will not automatically
|
452
|
+
# send magic login details email, and allow you to
|
453
|
+
# manually handle how and when the email is sent
|
427
454
|
# Default: `true`
|
428
455
|
#
|
429
456
|
# user.magic_login_mailer_disabled =
|
430
457
|
|
431
|
-
|
432
|
-
# how many seconds before the request expires. nil for never expires.
|
458
|
+
# How many seconds before the request expires. nil for never expires.
|
433
459
|
# Default: `nil`
|
434
460
|
#
|
435
461
|
# user.magic_login_expiration_period =
|
436
462
|
|
437
|
-
|
438
|
-
# hammering protection, how long in seconds to wait before allowing another email to be sent.
|
463
|
+
# Hammering protection: how long in seconds to wait before allowing another email to be sent.
|
439
464
|
# Default: `5 * 60`
|
440
465
|
#
|
441
466
|
# user.magic_login_time_between_emails =
|
@@ -451,12 +476,12 @@ Rails.application.config.sorcery.configure do |config|
|
|
451
476
|
#
|
452
477
|
# user.lock_expires_at_attribute_name =
|
453
478
|
|
454
|
-
# How many failed logins allowed.
|
479
|
+
# How many failed logins are allowed.
|
455
480
|
# Default: `50`
|
456
481
|
#
|
457
482
|
# user.consecutive_login_retries_amount_limit =
|
458
483
|
|
459
|
-
# How long the user should be banned
|
484
|
+
# How long the user should be banned, in seconds. 0 for permanent.
|
460
485
|
# Default: `60 * 60`
|
461
486
|
#
|
462
487
|
# user.login_lock_time_period =
|
@@ -471,16 +496,17 @@ Rails.application.config.sorcery.configure do |config|
|
|
471
496
|
#
|
472
497
|
# user.unlock_token_email_method_name =
|
473
498
|
|
474
|
-
#
|
475
|
-
# send email with unlock token
|
499
|
+
# When true, sorcery will not automatically
|
500
|
+
# send email with the unlock token
|
476
501
|
# Default: `false`
|
477
502
|
#
|
478
503
|
# user.unlock_token_mailer_disabled = true
|
479
504
|
|
480
|
-
#
|
505
|
+
# REQUIRED:
|
506
|
+
# Unlock token mailer class.
|
481
507
|
# Default: `nil`
|
482
508
|
#
|
483
|
-
# user.unlock_token_mailer =
|
509
|
+
# user.unlock_token_mailer =
|
484
510
|
|
485
511
|
# -- activity logging --
|
486
512
|
# Last login attribute name.
|
@@ -498,7 +524,7 @@ Rails.application.config.sorcery.configure do |config|
|
|
498
524
|
#
|
499
525
|
# user.last_activity_at_attribute_name =
|
500
526
|
|
501
|
-
# How long since last activity
|
527
|
+
# How long since user's last activity will they be considered logged out?
|
502
528
|
# Default: `10 * 60`
|
503
529
|
#
|
504
530
|
# user.activity_timeout =
|
@@ -509,17 +535,17 @@ Rails.application.config.sorcery.configure do |config|
|
|
509
535
|
#
|
510
536
|
# user.authentications_class =
|
511
537
|
|
512
|
-
# User's identifier in authentications class.
|
538
|
+
# User's identifier in the `authentications` class.
|
513
539
|
# Default: `:user_id`
|
514
540
|
#
|
515
541
|
# user.authentications_user_id_attribute_name =
|
516
542
|
|
517
|
-
# Provider's identifier in authentications class.
|
543
|
+
# Provider's identifier in the `authentications` class.
|
518
544
|
# Default: `:provider`
|
519
545
|
#
|
520
546
|
# user.provider_attribute_name =
|
521
547
|
|
522
|
-
# User's external unique identifier in authentications class.
|
548
|
+
# User's external unique identifier in the `authentications` class.
|
523
549
|
# Default: `:uid`
|
524
550
|
#
|
525
551
|
# user.provider_uid_attribute_name =
|
@@ -527,5 +553,5 @@ Rails.application.config.sorcery.configure do |config|
|
|
527
553
|
|
528
554
|
# This line must come after the 'user config' block.
|
529
555
|
# Define which model authenticates with sorcery.
|
530
|
-
config.user_class =
|
556
|
+
config.user_class = "<%= model_class_name %>"
|
531
557
|
end
|