diff options
author | James Edwards-Jones <jedwardsjones@gitlab.com> | 2018-10-31 20:28:42 +0300 |
---|---|---|
committer | James Edwards-Jones <jedwardsjones@gitlab.com> | 2018-10-31 20:28:42 +0300 |
commit | 69b9a879a12e3eeaae1394534247c97e5ad14495 (patch) | |
tree | cd1e791cfadff850f012858083cb20157357d3be /app/models/concerns/token_authenticatable.rb | |
parent | f68037ea71bb515ea0a19f3061e712d1b1427f37 (diff) |
TokenAuthenticatable allows non-unique tokens
Avoids needing an index to repeatedly check that
the token doesn't already exist when saving.
Diffstat (limited to 'app/models/concerns/token_authenticatable.rb')
-rw-r--r-- | app/models/concerns/token_authenticatable.rb | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/app/models/concerns/token_authenticatable.rb b/app/models/concerns/token_authenticatable.rb index 66db4bd92de..23a43aec677 100644 --- a/app/models/concerns/token_authenticatable.rb +++ b/app/models/concerns/token_authenticatable.rb @@ -10,6 +10,7 @@ module TokenAuthenticatable def add_authentication_token_field(token_field, options = {}) @token_fields = [] unless @token_fields + unique = options.fetch(:unique, true) if @token_fields.include?(token_field) raise ArgumentError.new("#{token_field} already configured via add_authentication_token_field") @@ -25,8 +26,10 @@ module TokenAuthenticatable TokenAuthenticatableStrategies::Insecure.new(self, token_field, options) end - define_singleton_method("find_by_#{token_field}") do |token| - strategy.find_token_authenticatable(token) + if unique + define_singleton_method("find_by_#{token_field}") do |token| + strategy.find_token_authenticatable(token) + end end define_method(token_field) do |