From: mark Date: Fri, 8 Jul 2011 22:17:29 +0000 (+0000) Subject: auto-create selfservice user in RT, #13199 X-Git-Tag: freeside_2_3_0~36 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=c58b5c1cef23066263aae5c506824310866ef64b;hp=3f8dd846e92d44fc461d91d5fd5e012a770370d1 auto-create selfservice user in RT, #13199 --- diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index a788a5c05..014434a05 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -321,7 +321,7 @@ sub customer_info { $return{'require_address2'} = ''; } - if ( $conf->exists('ticket_system') ) { + if ( $FS::TicketSystem::system ) { warn "$me customer_info: initializing ticket system\n" if $DEBUG; FS::TicketSystem->init(); } diff --git a/FS/FS/TicketSystem.pm b/FS/FS/TicketSystem.pm index 9d11ff47b..a6daf7e06 100644 --- a/FS/FS/TicketSystem.pm +++ b/FS/FS/TicketSystem.pm @@ -35,8 +35,31 @@ sub _upgrade_data { FS::TicketSystem->init; my $session = FS::TicketSystem->session(); - my $CurrentUser = $session->{'CurrentUser'} - or die 'freeside-upgrade must run as a valid RT user'; + # bypass RT ACLs--we're going to do lots of things + my $CurrentUser = $RT::SystemUser; + + # selfservice user + my $User = RT::User->new($CurrentUser); + $User->Load('%%%SELFSERVICE_USER%%%'); + if (!defined($User->Id)) { + my ($val, $msg) = $User->Create( + 'Name' => '%%%SELFSERVICE_USER%%%', + 'Gecos' => '%%%SELFSERVICE_USER%%%', + 'Privileged' => 1, + # any other fields needed? + ); + die $msg if !$val; + } + my $Principal = $User->PrincipalObj; # can this ever fail? + my @rights = ( qw(ShowTicket SeeQueue ModifyTicket ReplyToTicket) ); + foreach (@rights) { + next if $Principal->HasRight( 'Right' => $_, Object => $RT::System ); + my ($val, $msg) = $Principal->GrantRight( + 'Right' => $_, + 'Object' => $RT::System, + ); + die $msg if !$val; + } # EscalateQueue custom field and friends my $CF = RT::CustomField->new($CurrentUser); diff --git a/Makefile b/Makefile index f74379727..a454d08de 100644 --- a/Makefile +++ b/Makefile @@ -193,6 +193,7 @@ perl-modules: s'%%%RT_ENABLED%%%'${RT_ENABLED}'g; \ s'%%%RT_PATH%%%'${RT_PATH}'g; \ s'%%%MASONDATA%%%'${MASONDATA}'g;\ + s/%%%SELFSERVICE_USER%%%/${SELFSERVICE_USER}/g;\ " blib/lib/FS/*.pm;\ perl -p -i -e "\ s/%%%SELFSERVICE_USER%%%/${SELFSERVICE_USER}/g;\