View | Details | Raw Unified | Return to bug 14540
Collapse All | Expand All

(-)a/C4/Auth.pm (-1 / +1 lines)
Lines 1565-1571 sub check_api_auth { Link Here
1565
1565
1566
                unless ( $sth->rows ) {
1566
                unless ( $sth->rows ) {
1567
                    my $sth = $dbh->prepare(
1567
                    my $sth = $dbh->prepare(
1568
"select borrowernumber, firstname, surname, flags, borrowers.branchcode, branches.branchname as branchname, branches.branchprinter as branchprinter, email from borrowers left join branches on borrowers.branchcode=branches.branchcode where cardnumber=?"
1568
"select borrowernumber, firstname, surname, borrowers.branchcode, branches.branchname as branchname, branches.branchprinter as branchprinter, email from borrowers left join branches on borrowers.branchcode=branches.branchcode where cardnumber=?"
1569
                    );
1569
                    );
1570
                    $sth->execute($cardnumber);
1570
                    $sth->execute($cardnumber);
1571
                    (
1571
                    (
(-)a/installer/data/mysql/atomicupdate/Bug14540-PermissionManager.pl (-15 / +60 lines)
Lines 63-100 unless ($atomicUpdater->find('Bug14540')) { Link Here
63
    $dbh->do("INSERT INTO permissions (module, code, description) VALUES ('staffaccess', 'staff_access_permissions', 'Allow staff members to modify permissions for other staff members.');");
63
    $dbh->do("INSERT INTO permissions (module, code, description) VALUES ('staffaccess', 'staff_access_permissions', 'Allow staff members to modify permissions for other staff members.');");
64
64
65
    ##Create borrower_permissions to replace singular userflags from borrowers.flags.
65
    ##Create borrower_permissions to replace singular userflags from borrowers.flags.
66
    my $sthSelectSubPermissions = $dbh->prepare("SELECT * FROM permissions p LEFT JOIN permission_modules pm ON p.module = pm.module WHERE pm.permission_module_id = ?");
67
    my $sthSelectBorrowerPermission = $dbh->prepare("SELECT * FROM borrower_permissions WHERE permission_id = ? AND borrowernumber = ?");
68
    my $sthInsertBorrowerPermission = $dbh->prepare("INSERT INTO borrower_permissions (borrowernumber, permission_module_id, permission_id) VALUES (?,?,?)");
69
    sub grantAllSubpermissions {
70
        my ($borrowernumber, $module_id, $dbh) = @_;
71
72
        $sthSelectSubPermissions->execute($module_id);
73
        my $subPermissions = $sthSelectSubPermissions->fetchall_arrayref({});
74
        foreach my $sp (@$subPermissions) {
75
            $sthSelectBorrowerPermission->execute($sp->{permission_id}, $borrowernumber);
76
            my $alreadyPermission = $sthSelectBorrowerPermission->fetchrow_hashref();
77
            unless ($alreadyPermission) {
78
                $sthInsertBorrowerPermission->execute($borrowernumber, $sp->{permission_module_id}, $sp->{permission_id});
79
            }
80
        }
81
    }
82
66
    my $sthSelectAllBorrowers = $dbh->prepare("SELECT * FROM borrowers;");
83
    my $sthSelectAllBorrowers = $dbh->prepare("SELECT * FROM borrowers;");
67
    my $sth = $dbh->prepare("
68
            INSERT INTO borrower_permissions (borrowernumber, permission_module_id, permission_id)
69
            VALUES (?,
70
                    (SELECT permission_module_id FROM permission_modules WHERE module = ?),
71
                    (SELECT permission_id FROM permissions WHERE code = ?)
72
                   );
73
            ");
74
    $sthSelectAllBorrowers->execute();
84
    $sthSelectAllBorrowers->execute();
75
    my $borrowers = $sthSelectAllBorrowers->fetchall_arrayref({});
85
    my $borrowers = $sthSelectAllBorrowers->fetchall_arrayref({});
76
    foreach my $b (@$borrowers) {
86
    foreach my $b (@$borrowers) {
77
        next unless $b->{flags};
87
        next unless $b->{flags};
78
        if ( ( $b->{flags} & ( 2**0 ) ) ) {
88
        if ( ( $b->{flags} & ( 2**0 ) ) ) {
79
            $sth->execute($b->{borrowernumber}, 'superlibrarian', 'superlibrarian');
89
            grantAllSubpermissions($b->{borrowernumber}, 21, $dbh); #superlibrarian
90
        }
91
        if ( ( $b->{flags} & ( 2**1 ) ) ) {
92
            grantAllSubpermissions($b->{borrowernumber}, 1, $dbh); #circulate
80
        }
93
        }
81
        if ( ( $b->{flags} & ( 2**2 ) ) ) {
94
        if ( ( $b->{flags} & ( 2**2 ) ) ) {
82
            $sth->execute($b->{borrowernumber}, 'catalogue', 'staff_login');
95
            grantAllSubpermissions($b->{borrowernumber}, 2, $dbh); #catalogue
96
        }
97
        if ( ( $b->{flags} & ( 2**3 ) ) ) {
98
            grantAllSubpermissions($b->{borrowernumber}, 3, $dbh); #parameters, should be deprecated already
83
        }
99
        }
84
        if ( ( $b->{flags} & ( 2**4 ) ) ) {
100
        if ( ( $b->{flags} & ( 2**4 ) ) ) {
85
            $sth->execute($b->{borrowernumber}, 'borrowers', 'view_borrowers');
101
            grantAllSubpermissions($b->{borrowernumber}, 4, $dbh); #borrowers
86
        }
102
        }
87
        if ( ( $b->{flags} & ( 2**5 ) ) ) {
103
        if ( ( $b->{flags} & ( 2**5 ) ) ) {
88
            $sth->execute($b->{borrowernumber}, 'permissions', 'set_permissions');
104
            grantAllSubpermissions($b->{borrowernumber}, 5, $dbh); #permissions
105
        }
106
        if ( ( $b->{flags} & ( 2**6 ) ) ) {
107
            grantAllSubpermissions($b->{borrowernumber}, 6, $dbh); #reserveforothers
108
        }
109
#        if ( ( $b->{flags} & ( 2**7 ) ) ) {
110
#            grantAllSubpermissions($b->{borrowernumber}, 7, $dbh); #borrow, should be deprecated already
111
#        }
112
        if ( ( $b->{flags} & ( 2**9 ) ) ) {
113
            grantAllSubpermissions($b->{borrowernumber}, 9, $dbh); #editcatalogue
114
        }
115
        if ( ( $b->{flags} & ( 2**10 ) ) ) {
116
            grantAllSubpermissions($b->{borrowernumber}, 10, $dbh); #updatecharges
117
        }
118
        if ( ( $b->{flags} & ( 2**11 ) ) ) {
119
            grantAllSubpermissions($b->{borrowernumber}, 11, $dbh); #acquisition
89
        }
120
        }
90
        if ( ( $b->{flags} & ( 2**12 ) ) ) {
121
        if ( ( $b->{flags} & ( 2**12 ) ) ) {
91
            $sth->execute($b->{borrowernumber}, 'management', 'management');
122
            grantAllSubpermissions($b->{borrowernumber}, 12, $dbh); #management
123
        }
124
        if ( ( $b->{flags} & ( 2**13 ) ) ) {
125
            grantAllSubpermissions($b->{borrowernumber}, 13, $dbh); #tools
92
        }
126
        }
93
        if ( ( $b->{flags} & ( 2**14 ) ) ) {
127
        if ( ( $b->{flags} & ( 2**14 ) ) ) {
94
            $sth->execute($b->{borrowernumber}, 'editauthorities', 'edit_authorities');
128
            grantAllSubpermissions($b->{borrowernumber}, 14, $dbh); #editauthorities
129
        }
130
        if ( ( $b->{flags} & ( 2**15 ) ) ) {
131
            grantAllSubpermissions($b->{borrowernumber}, 15, $dbh); #serials
132
        }
133
        if ( ( $b->{flags} & ( 2**16 ) ) ) {
134
            grantAllSubpermissions($b->{borrowernumber}, 16, $dbh); #reports
95
        }
135
        }
96
        if ( ( $b->{flags} & ( 2**17 ) ) ) {
136
        if ( ( $b->{flags} & ( 2**17 ) ) ) {
97
            $sth->execute($b->{borrowernumber}, 'staffaccess', 'staff_access_permissions');
137
            grantAllSubpermissions($b->{borrowernumber}, 17, $dbh); #staffaccess
138
        }
139
        if ( ( $b->{flags} & ( 2**18 ) ) ) {
140
            grantAllSubpermissions($b->{borrowernumber}, 18, $dbh); #coursereserves
141
        }
142
        if ( ( $b->{flags} & ( 2**19 ) ) ) {
143
            grantAllSubpermissions($b->{borrowernumber}, 19, $dbh); #plugins
98
        }
144
        }
99
    }
145
    }
100
146
101
- 

Return to bug 14540