LP1517137: Add Permissions Missing From Stock Data
[Evergreen.git] / Open-ILS / src / sql / Pg / upgrade / XXXX.data.overlooked_permissions.sql
1 BEGIN;
2
3 SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
4
5 -- Add missing permissions noted in LP 1517137 adjusting those added manually and ignoring those already in place.
6
7 DO $$
8 DECLARE fixperm TEXT[3];
9 DECLARE modify BOOLEAN;
10 DECLARE permid BIGINT;
11 DECLARE oldid BIGINT;
12 BEGIN
13
14 FOREACH fixperm SLICE 1 IN ARRAY ARRAY[
15   ['564', 'MARK_ITEM_CATALOGING', 'Allow a user to mark an item status as ''cataloging'''],
16   ['565', 'MARK_ITEM_DAMAGED', 'Allow a user to mark an item status as ''damaged'''],
17   ['566', 'MARK_ITEM_DISCARD', 'Allow a user to mark an item status as ''discard'''],
18   ['567', 'MARK_ITEM_RESERVES', 'Allow a user to mark an item status as ''reserves'''],
19   ['568', 'ADMIN_ORG_UNIT_SETTING_TYPE_LOG', 'Allow a user to modify the org unit settings log'],
20   ['570', 'CREATE_POP_BADGE', 'Allow a user to create a new popularity badge'],
21   ['571', 'DELETE_POP_BADGE', 'Allow a user to delete a popularity badge'],
22   ['572', 'UPDATE_POP_BADGE', 'Allow a user to modify a popularity badge'],
23   ['573', 'CREATE_POP_PARAMETER', 'Allow a user to create a popularity badge parameter'],
24   ['574', 'DELETE_POP_PARAMETER', 'Allow a user to delete a popularity badge parameter'],
25   ['575', 'UPDATE_POP_PARAMETER', 'Allow a user to modify a popularity badge parameter'],
26   ['576', 'CREATE_AUTHORITY_RECORD', 'Allow a user to create an authority record'],
27   ['577', 'DELETE_AUTHORITY_RECORD', 'Allow a user to delete an authority record'],
28   ['578', 'UPDATE_AUTHORITY_RECORD', 'Allow a user to modify an authority record'],
29   ['579', 'CREATE_AUTHORITY_CONTROL_SET', 'Allow a user to create an authority control set'],
30   ['580', 'DELETE_AUTHORITY_CONTROL_SET', 'Allow a user to delete an authority control set'],
31   ['581', 'UPDATE_AUTHORITY_CONTROL_SET', 'Allow a user to modify an authority control set'],
32   ['582', 'ACTOR_USER_DELETE_OPEN_XACTS.override', 'Override the ACTOR_USER_DELETE_OPEN_XACTS event'],
33   ['583', 'PATRON_EXCEEDS_LOST_COUNT.override', 'Override the PATRON_EXCEEDS_LOST_COUNT event'],
34   ['584', 'MAX_HOLDS.override', 'Override the MAX_HOLDS event'],
35   ['585', 'ITEM_DEPOSIT_REQUIRED.override', 'Override the ITEM_DEPOSIT_REQUIRED event'],
36   ['586', 'ITEM_DEPOSIT_PAID.override', 'Override the ITEM_DEPOSIT_PAID event'],
37   ['587', 'COPY_STATUS_LOST_AND_PAID.override', 'Override the COPY_STATUS_LOST_AND_PAID event'],
38   ['588', 'ITEM_NOT_HOLDABLE.override', 'Override the ITEM_NOT_HOLDABLE event'],
39   ['589', 'ITEM_RENTAL_FEE_REQUIRED.override', 'Override the ITEM_RENTAL_FEE_REQUIRED event']
40 ]
41 LOOP
42   permid := CAST (fixperm[1] AS BIGINT);
43   -- Has this permission already been manually applied at the expected id?
44   PERFORM * FROM permission.perm_list WHERE id = permid;
45   IF NOT FOUND THEN
46     UPDATE permission.perm_list SET code = code || '_local' WHERE code = fixperm[2] AND id > 1000 RETURNING id INTO oldid;
47     modify := FOUND;
48
49     INSERT INTO permission.perm_list (id, code, description) VALUES (permid, fixperm[2], fixperm[3]);
50
51     -- Several of these are rather unlikely for these particular permissions but safer > sorry.
52     IF modify THEN
53       UPDATE permission.grp_perm_map SET perm = permid WHERE perm = oldid;
54       UPDATE config.org_unit_setting_type SET update_perm = permid WHERE update_perm = oldid;
55       UPDATE permission.usr_object_perm_map SET perm = permid WHERE perm = oldid;
56       UPDATE permission.usr_perm_map SET perm = permid WHERE perm = oldid;
57       UPDATE config.org_unit_setting_type SET view_perm = permid WHERE view_perm = oldid;
58       UPDATE config.z3950_source SET use_perm = permid WHERE use_perm = oldid;
59       DELETE FROM permission.perm_list WHERE id = oldid;
60     END IF;
61   END IF;
62 END LOOP;
63
64 END$$;
65
66 COMMIT;