default => '',
checker => \&check_urlbase
},
- {
- name => 'phabricator_sync_groups',
- type => 't',
- default => '',
- },
{
name => 'phabricator_api_key',
type => 't',
use Moo;
use Try::Tiny;
-use Bugzilla::Logging;
use Bugzilla::Constants;
+use Bugzilla::Field;
+use Bugzilla::Logging;
use Bugzilla::Search;
use Bugzilla::Util qw(diff_arrays with_writable_database with_readonly_database);
sub feed_query {
my ($self) = @_;
- Bugzilla::Logging->fields->{type} = 'FEED';
+ local Bugzilla::Logging->fields->{type} = 'FEED';
# Ensure Phabricator syncing is enabled
if (!Bugzilla->params->{phabricator_enabled}) {
sub user_query {
my ( $self ) = @_;
- Bugzilla::Logging->fields->{type} = 'USERS';
+ local Bugzilla::Logging->fields->{type} = 'USERS';
# Ensure Phabricator syncing is enabled
if (!Bugzilla->params->{phabricator_enabled}) {
sub group_query {
my ($self) = @_;
+ local Bugzilla::Logging->fields->{type} = 'GROUPS';
+
# Ensure Phabricator syncing is enabled
if ( !Bugzilla->params->{phabricator_enabled} ) {
WARN("PHABRICATOR SYNC DISABLED");
return;
}
- my $phab_sync_groups = Bugzilla->params->{phabricator_sync_groups};
- if ( !$phab_sync_groups ) {
- WARN('A comma delimited list of security groups was not provided.');
- return;
- }
-
# PROCESS SECURITY GROUPS
- INFO("GROUPS: Updating group memberships");
+ INFO("Updating group memberships");
# Loop through each group and perform the following:
#
# 4. Set project members to exact list
# 5. Profit
- my $sync_groups = Bugzilla::Group->match(
- { name => [ split( '[,\s]+', $phab_sync_groups ) ] } );
+ my $sync_groups = Bugzilla::Group->match( { isactive => 1, isbuggroup => 1 } );
foreach my $group (@$sync_groups) {
push @$project_phids, $project->phid if $project;
}
- ThrowUserError('invalid_phabricator_sync_groups') unless @$project_phids;
+ ThrowUserError('invalid_phabricator_projects') unless @$project_phids;
push @{ $data->{policy} }, {
action => 'allow',
push(@$project_phids, $phid) if $phid;
}
- ThrowUserError('invalid_phabricator_sync_groups') unless @$project_phids;
+ ThrowUserError('invalid_phabricator_projects') unless @$project_phids;
push(@{ $data->{policy} },
{
sub get_security_sync_groups {
my $bug = shift;
- my $phab_sync_groups = Bugzilla->params->{phabricator_sync_groups}
- || ThrowUserError('invalid_phabricator_sync_groups');
- my $sync_group_names = [ split('[,\s]+', $phab_sync_groups) ];
+ my $sync_groups = Bugzilla::Group->match( { isactive => 1, isbuggroup => 1 } );
+ my $sync_group_names = [ map { $_->name } @$sync_groups ];
my $bug_groups = $bug->groups_in;
my $bug_group_names = [ map { $_->name } @$bug_groups ];
get_project_phid
get_revisions_by_ids
get_security_sync_groups
- intersect
is_attachment_phab_revision
make_revision_public
request
phabricator_enabled => 'Enable Phabricator Integration',
phabricator_base_uri => 'Phabricator Base URI',
phabricator_api_key => 'Phabricator User API Key',
- phabricator_sync_groups => 'Comma delimited list of Bugzilla groups to sync to Phabricator projects',
phabricator_auth_callback_url => 'Phabricator Auth Delegation URL',
phabricator_app_id => 'app_id for API Keys delegated to Phabricator',
}
[% title = "Invalid Phabricator API Key" %]
You must provide a valid Phabricator API Key.
-[% ELSIF error == "invalid_phabricator_sync_groups" %]
- [% title = "Invalid Phabricator Sync Groups" %]
- You must provide a comma delimited list of security groups
- to sync with Phabricator.
+[% ELSIF error == "invalid_phabricator_projects" %]
+ [% title = "Invalid Phabricator Projects" %]
+ One or more Phabricator projects selected are invalid.
[% ELSIF error == "invalid_phabricator_revision_id" %]
[% title = "Invalid Phabricator Revision ID" %]
get_bug_role_phids
get_project_phid
get_security_sync_groups
- intersect
make_revision_public
make_revision_private
set_revision_subscribers
password_check_on_login => 0,
phabricator_base_uri => 'http://phabricator.test/',
phabricator_enabled => 1,
- phabricator_sync_groups => 'core-security',
);
set_push_connector_options();