cc3b5f14ab6f50a6fc9e9795942ef653b0554404
[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         my $acl = RT::ACL->new(RT->SystemUser);
54         for my $right (qw/AdminOwnPersonalGroups AdminAllPersonalGroups DelegateRights/) {
55             $acl->Limit( FIELD => 'RightName', VALUE => $right );
56         }
57
58         while ( my $ace = $acl->Next ) {
59             my ( $ok, $msg ) = $ace->Delete();
60             RT->Logger->debug("Removing ACE ".$ace->id." for right ".$ace->__Value('RightName'));
61
62             if ( !$ok ) {
63                 RT->Logger->warn( "Unable to delete ACE " . $ace->id . ": " . $msg );
64             }
65         }
66     },
67     sub {
68         RT->Logger->debug('Removing unimplemented RejectTicket and ModifyTicketStatus rights');
69
70         my $acl = RT::ACL->new(RT->SystemUser);
71         for my $right (qw/RejectTicket ModifyTicketStatus/) {
72             $acl->Limit( FIELD => 'RightName', VALUE => $right );
73         }
74
75         while ( my $ace = $acl->Next ) {
76             my ( $ok, $msg ) = $ace->Delete();
77             RT->Logger->debug("Removing ACE ".$ace->id." for right ".$ace->__Value('RightName'));
78
79             if ( !$ok ) {
80                 RT->Logger->warn( "Unable to delete ACE " . $ace->id . ": " . $msg );
81             }
82         }
83     },
84 );
85