Merge branch 'ce-jej/group-saml-discovery-token' into 'master'
TokenAuthenticatable allows non-unique tokens See merge request gitlab-org/gitlab-ce!22748
This commit is contained in:
commit
74c7912324
2 changed files with 10 additions and 3 deletions
|
@ -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,9 +26,11 @@ module TokenAuthenticatable
|
|||
TokenAuthenticatableStrategies::Insecure.new(self, token_field, options)
|
||||
end
|
||||
|
||||
if unique
|
||||
define_singleton_method("find_by_#{token_field}") do |token|
|
||||
strategy.find_token_authenticatable(token)
|
||||
end
|
||||
end
|
||||
|
||||
define_method(token_field) do
|
||||
strategy.get_token(self)
|
||||
|
|
|
@ -43,10 +43,14 @@ module TokenAuthenticatableStrategies
|
|||
set_token(instance, new_token)
|
||||
end
|
||||
|
||||
def unique
|
||||
@options.fetch(:unique, true)
|
||||
end
|
||||
|
||||
def generate_available_token
|
||||
loop do
|
||||
token = generate_token
|
||||
break token unless find_token_authenticatable(token, true)
|
||||
break token unless unique && find_token_authenticatable(token, true)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue