From 7176e6d8dabbdd577e99c18fccb99fc9a09e1760 Mon Sep 17 00:00:00 2001 From: dklawren Date: Fri, 30 Jun 2017 10:34:14 -0700 Subject: Bug 1367604 - BMO extension to apply security policies to Phabricator revisions as needed * - Updated based on dylans review - Fixed custom policy to instead allow projects and subscribers and then add BMO roles to the subscriber list - Some other bug fixes * fix lifetime of phabricator_url_re() Instead of passing the value (which depends on runtime configuration) pass in a reference. Also edit extensions/BMO/Extension.pm to allow %autodetect_attach_urls regex option to be a callback instead of just a plain regexp ref. * - Fixed regex in BMO extension to detect phabricator attachments - Use request_cache for useragent handle in Util.pm --- extensions/BMO/Extension.pm | 6 +++++- extensions/BMO/lib/Data.pm | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'extensions/BMO') diff --git a/extensions/BMO/Extension.pm b/extensions/BMO/Extension.pm index 2a84cc077..99986f89f 100644 --- a/extensions/BMO/Extension.pm +++ b/extensions/BMO/Extension.pm @@ -1158,7 +1158,11 @@ sub _detect_attached_url { return if $url =~ m<[^A-Za-z0-9._~:/?#\[\]@!\$&'()*+,;=`.%-]>; foreach my $key (keys %autodetect_attach_urls) { - if ($url =~ $autodetect_attach_urls{$key}->{regex}) { + my $regex = $autodetect_attach_urls{$key}->{regex}; + if (ref($regex) eq 'CODE') { + $regex = $regex->(); + } + if ($url =~ $regex) { return $autodetect_attach_urls{$key}; } } diff --git a/extensions/BMO/lib/Data.pm b/extensions/BMO/lib/Data.pm index fcb96a558..dbf0de108 100644 --- a/extensions/BMO/lib/Data.pm +++ b/extensions/BMO/lib/Data.pm @@ -42,6 +42,11 @@ my $mozreview_url_re = qr{ $ }ix; +sub phabricator_url_re { + my $phab_uri = Bugzilla->params->{phabricator_base_uri} || 'https://example.com'; + return qr/^\Q${phab_uri}\ED\d+$/i; +} + our %autodetect_attach_urls = ( github_pr => { title => 'GitHub Pull Request', @@ -55,6 +60,12 @@ our %autodetect_attach_urls = ( content_type => 'text/x-review-board-request', can_review => 1, }, + Phabricator => { + title => 'Phabricator', + regex => \&phabricator_url_re, + content_type => 'text/x-phabricator-request', + can_review => 1, + }, google_docs => { title => 'Google Doc', regex => qr#^https://docs\.google\.com/(?:document|spreadsheets|presentation)/d/#i, -- cgit v1.2.3-24-g4f1b