rt 4.2.13 ticket#13852
[freeside.git] / rt / etc / upgrade / 4.0.1 / content
1 use strict;
2 use warnings;
3
4 our @Initial = (
5     sub {
6         RT->Logger->debug('Removing all delegated rights');
7
8         my $acl = RT::ACL->new(RT->SystemUser);
9         my $groupjoin = $acl->Join(
10             ALIAS1 => 'main',
11             FIELD1 => 'PrincipalId',
12             TABLE2 => 'Groups',
13             FIELD2 => 'id',
14         );
15         $acl->Limit( ALIAS           => $groupjoin,
16                      FIELD           => 'Domain',
17                      OPERATOR        => '=',
18                      VALUE           => 'Personal',
19                      CASESENSITIVE   => 0,
20                     );
21
22         while ( my $ace = $acl->Next ) {
23             my ( $ok, $msg ) = $ace->Delete();
24
25             if ( !$ok ) {
26                 RT->Logger->warn( "Unable to delete ACE " . $ace->id . ": " . $msg );
27             }
28         }
29
30         my $groups = RT::Groups->new(RT->SystemUser);
31         $groups->Limit( FIELD    => 'Domain',
32                         OPERATOR => '=',
33                         VALUE    => 'Personal',
34                         CASESENSITIVE   => 0,
35                       );
36         while ( my $group = $groups->Next ) {
37             my $members = $group->MembersObj();
38             while ( my $member = $members->Next ) {
39                 my ( $ok, $msg ) = $group->DeleteMember( $member->MemberId );
40                 if ( !$ok ) {
41                     RT->Logger->warn(   "Unable to remove group member "
42                                        . $member->id . ": "
43                                        . $msg );
44                 }
45             }
46             $group->PrincipalObj->Delete;
47             $group->RT::Record::Delete();
48         }
49     },
50     sub {
51         RT->Logger->debug('Removing all Delegate and PersonalGroup rights');
52
53         # this temporarily tells the system that the rights exist so it can properly canonicalize them
54         RT::System->AddRight(Admin => AdminOwnPersonalGroups  => 'Add right for 4.0.1 upgrade steps');
55         RT::System->AddRight(Admin => AdminAllPersonalGroups  => 'Add right for 4.0.1 upgrade steps');
56         RT::System->AddRight(Admin => DelegateRights          => 'Add right for 4.0.1 upgrade steps');
57
58         my $acl = RT::ACL->new(RT->SystemUser);
59         for my $right (qw/AdminOwnPersonalGroups AdminAllPersonalGroups DelegateRights/) {
60             $acl->Limit( FIELD => 'RightName', VALUE => $right );
61         }
62
63         while ( my $ace = $acl->Next ) {
64             my ( $ok, $msg ) = $ace->Delete();
65             RT->Logger->debug("Removing ACE ".$ace->id." for right ".$ace->__Value('RightName'));
66
67             if ( !$ok ) {
68                 RT->Logger->warn( "Unable to delete ACE " . $ace->id . ": " . $msg );
69             }
70         }
71     },
72     sub {
73         RT->Logger->debug('Removing unimplemented RejectTicket and ModifyTicketStatus rights');
74
75         my $acl = RT::ACL->new(RT->SystemUser);
76         for my $right (qw/RejectTicket ModifyTicketStatus/) {
77             $acl->Limit( FIELD => 'RightName', VALUE => $right );
78         }
79
80         while ( my $ace = $acl->Next ) {
81             my ( $ok, $msg ) = $ace->Delete();
82             RT->Logger->debug("Removing ACE ".$ace->id." for right ".$ace->__Value('RightName'));
83
84             if ( !$ok ) {
85                 RT->Logger->warn( "Unable to delete ACE " . $ace->id . ": " . $msg );
86             }
87         }
88     },
89 );
90