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 | ... | ... |