Commit f919a26e0e4881ace844362a272202c928f35b11

Authored by Larissa Reis
1 parent 34ebf858

federation: Search external env by domain when loggin in

app/models/concerns/external_user.rb
@@ -18,7 +18,7 @@ module ExternalUser @@ -18,7 +18,7 @@ module ExternalUser
18 module ClassMethods 18 module ClassMethods
19 def webfinger_lookup(login, domain, environment) 19 def webfinger_lookup(login, domain, environment)
20 if login && domain && environment.has_federated_network?(domain) 20 if login && domain && environment.has_federated_network?(domain)
21 - external_environment = environment.external_environments.find_by_url(domain) 21 + external_environment = environment.external_environments.find_by_domain(domain)
22 scheme = "http#{external_environment.uses_ssl? ? 's' : ''}" 22 scheme = "http#{external_environment.uses_ssl? ? 's' : ''}"
23 url = URI.parse(scheme+"://"+ domain +'/.well-known/webfinger?resource=acct:'+ 23 url = URI.parse(scheme+"://"+ domain +'/.well-known/webfinger?resource=acct:'+
24 login+'@'+domain) 24 login+'@'+domain)
@@ -51,7 +51,7 @@ module ExternalUser @@ -51,7 +51,7 @@ module ExternalUser
51 result = nil 51 result = nil
52 response = nil 52 response = nil
53 redirections_allowed = 3 53 redirections_allowed = 3
54 - external_environment = ExternalEnvironment.find_by_url(domain) 54 + external_environment = ExternalEnvironment.find_by_domain(domain)
55 scheme = "http#{external_environment.uses_ssl? ? 's' : ''}" 55 scheme = "http#{external_environment.uses_ssl? ? 's' : ''}"
56 location = scheme + '://' + domain + '/api/v1/login' 56 location = scheme + '://' + domain + '/api/v1/login'
57 request_params = CGI.unescape({ login: login, password: password }.to_query) 57 request_params = CGI.unescape({ login: login, password: password }.to_query)
app/models/external_environment.rb
@@ -11,4 +11,8 @@ class ExternalEnvironment < ActiveRecord::Base @@ -11,4 +11,8 @@ class ExternalEnvironment < ActiveRecord::Base
11 url.starts_with? 'https' 11 url.starts_with? 'https'
12 end 12 end
13 13
  14 + def self.find_by_domain(domain)
  15 + where(url: ['http://' + domain + '/', 'https://' + domain + '/']).first
  16 + end
  17 +
14 end 18 end