Commit f91650940a2d4ed5ee7cbfdf865f5c84c092de3b
1 parent
e0a279d0
Exists in
oauth_external_login
and in
1 other branch
Lookup webfinger based on scheme
Showing
2 changed files
with
13 additions
and
3 deletions
Show diff stats
app/models/concerns/external_user.rb
| ... | ... | @@ -18,10 +18,13 @@ module ExternalUser |
| 18 | 18 | module ClassMethods |
| 19 | 19 | def webfinger_lookup(login, domain, environment) |
| 20 | 20 | if login && domain && environment.has_federated_network?(domain) |
| 21 | - url = URI.parse('https://'+ domain +'/.well-known/webfinger?resource=acct:'+ | |
| 21 | + external_environment = environment.external_environments.find_by_url(domain) | |
| 22 | + scheme = "http#{external_environment.uses_ssl? ? 's' : ''}" | |
| 23 | + url = URI.parse(scheme+"://"+ domain +'/.well-known/webfinger?resource=acct:'+ | |
| 22 | 24 | login+'@'+domain) |
| 25 | + http = build_request(url) | |
| 23 | 26 | req = Net::HTTP::Get.new(url.to_s) |
| 24 | - res = Net::HTTP.start(url.host, url.port) { |http| http.request(req) } | |
| 27 | + res = http.request(req) | |
| 25 | 28 | JSON.parse(res.body) |
| 26 | 29 | else |
| 27 | 30 | nil |
| ... | ... | @@ -48,7 +51,9 @@ module ExternalUser |
| 48 | 51 | result = nil |
| 49 | 52 | response = nil |
| 50 | 53 | redirections_allowed = 3 |
| 51 | - location = 'http://' + domain + '/api/v1/login' | |
| 54 | + external_environment = ExternalEnvironment.find_by_url(domain) | |
| 55 | + scheme = "http#{external_environment.uses_ssl? ? 's' : ''}" | |
| 56 | + location = scheme + '://' + domain + '/api/v1/login' | |
| 52 | 57 | request_params = CGI.unescape({ login: login, password: password }.to_query) |
| 53 | 58 | begin |
| 54 | 59 | while redirections_allowed > 0 && (response.blank? || response.code == '301') | ... | ... |
app/models/external_environment.rb
| ... | ... | @@ -6,4 +6,9 @@ class ExternalEnvironment < ActiveRecord::Base |
| 6 | 6 | |
| 7 | 7 | has_many :environment_external_environments, dependent: :destroy |
| 8 | 8 | has_many :environments, through: :environment_external_environments |
| 9 | + | |
| 10 | + def uses_ssl? | |
| 11 | + url.starts_with? 'https' | |
| 12 | + end | |
| 13 | + | |
| 9 | 14 | end | ... | ... |