summaryrefslogtreecommitdiff
path: root/rt/etc/upgrade/4.0.1/acl.Pg
blob: 6b0e7bb3d8b97b731a4af7b1af5490a9e90b3334 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

sub acl {
    my $dbh = shift;

    my @acls;

    my @tables = qw (
        classes_id_seq
        Classes
        articles_id_seq
        Articles
        topics_id_seq
        Topics
        objecttopics_id_seq
        ObjectTopics
        objectclasses_id_seq
        ObjectClasses
    );

    my $db_user = RT->Config->Get('DatabaseUser');

    my $sequence_right
        = ( $dbh->{pg_server_version} >= 80200 )
        ? "USAGE, SELECT, UPDATE"
        : "SELECT, UPDATE";

    foreach my $table (@tables) {
        # Tables are upper-case, sequences are lowercase
        if ( $table =~ /^[a-z]/ ) {
            push @acls, "GRANT $sequence_right ON $table TO \"$db_user\";"
        }
        else {
            push @acls, "GRANT SELECT, INSERT, UPDATE, DELETE ON $table TO \"$db_user\";"
        }
    }
    return (@acls);
}

1;