diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-03-28 11:23:33 +0200 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-03-28 11:25:43 +0200 |
commit | 1c6b02f936b984a17343b85a5cfb07ed93dd1cfb (patch) | |
tree | 1c07e9fb58d65000cdabf1548ee606a490aea8de /app/controllers | |
parent | 448a07cc3f4e4f6905b6b1c519c29d28b72bda2b (diff) |
Fix #690 - Webfinger should handle new shortform profile URLs now (nice)
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/xrd_controller.rb | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/app/controllers/xrd_controller.rb b/app/controllers/xrd_controller.rb index 9e0277860..6db87cefc 100644 --- a/app/controllers/xrd_controller.rb +++ b/app/controllers/xrd_controller.rb @@ -36,11 +36,14 @@ class XrdController < ApplicationController end def username_from_resource - if resource_param.start_with?('acct:') || resource_param.include?('@') - resource_param.split('@').first.gsub('acct:', '') + if resource_param =~ /\Ahttps?:\/\// + path_params = Rails.application.routes.recognize_path(resource_param) + raise ActiveRecord::RecordNotFound unless path_params[:controller] == 'users' && path_params[:action] == 'show' + path_params[:username] else - url = Addressable::URI.parse(resource_param) - url.path.gsub('/users/', '') + username, domain = resource_param.gsub(/\Aacct:/, '').split('@') + raise ActiveRecord::RecordNotFound unless TagManager.instance.local_domain?(domain) + username end end |