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

(-)a/Koha/REST/V1/ERM.pm (-1 / +1 lines)
Lines 42-48 sub list_users { Link Here
42
42
43
    return try {
43
    return try {
44
44
45
        my $patrons_rs = Koha::Patrons->search->filter_by_have_permission('erm');
45
        my $patrons_rs = Koha::Patrons->search->filter_by_have_permission('erm'); #TODO: Double-check that related users are working
46
        my $patrons    = $c->objects->search( $patrons_rs );
46
        my $patrons    = $c->objects->search( $patrons_rs );
47
47
48
        return $c->render(
48
        return $c->render(
(-)a/api/v1/swagger/paths/erm_agreements.yaml (-5 / +19 lines)
Lines 93-99 Link Here
93
          $ref: "../swagger.yaml#/definitions/error"
93
          $ref: "../swagger.yaml#/definitions/error"
94
    x-koha-authorization:
94
    x-koha-authorization:
95
      permissions:
95
      permissions:
96
        erm: 1
96
        erm:
97
          - erm_admin
98
          - erm_show
99
          - erm_agreement
100
          - erm_eholdings
97
  post:
101
  post:
98
    x-mojo-to: ERM::Agreements#add
102
    x-mojo-to: ERM::Agreements#add
99
    operationId: addErmAgreements
103
    operationId: addErmAgreements
Lines 153-159 Link Here
153
          $ref: "../swagger.yaml#/definitions/error"
157
          $ref: "../swagger.yaml#/definitions/error"
154
    x-koha-authorization:
158
    x-koha-authorization:
155
      permissions:
159
      permissions:
156
        erm: 1
160
        erm:
161
          - erm_admin
162
          - erm_agreement
157
"/erm/agreements/{agreement_id}":
163
"/erm/agreements/{agreement_id}":
158
  get:
164
  get:
159
    x-mojo-to: ERM::Agreements#get
165
    x-mojo-to: ERM::Agreements#get
Lines 216-222 Link Here
216
          $ref: "../swagger.yaml#/definitions/error"
222
          $ref: "../swagger.yaml#/definitions/error"
217
    x-koha-authorization:
223
    x-koha-authorization:
218
      permissions:
224
      permissions:
219
        erm: 1
225
        erm:
226
          - erm_admin
227
          - erm_show
228
          - erm_agreement
229
          - erm_eholdings
220
  put:
230
  put:
221
    x-mojo-to: ERM::Agreements#update
231
    x-mojo-to: ERM::Agreements#update
222
    operationId: updateErmAgreements
232
    operationId: updateErmAgreements
Lines 287-293 Link Here
287
          $ref: "../swagger.yaml#/definitions/error"
297
          $ref: "../swagger.yaml#/definitions/error"
288
    x-koha-authorization:
298
    x-koha-authorization:
289
      permissions:
299
      permissions:
290
        erm: 1
300
        erm:
301
          - erm_admin
302
          - erm_agreement
291
  delete:
303
  delete:
292
    x-mojo-to: ERM::Agreements#delete
304
    x-mojo-to: ERM::Agreements#delete
293
    operationId: deleteErmAgreements
305
    operationId: deleteErmAgreements
Lines 333-336 Link Here
333
          $ref: "../swagger.yaml#/definitions/error"
345
          $ref: "../swagger.yaml#/definitions/error"
334
    x-koha-authorization:
346
    x-koha-authorization:
335
      permissions:
347
      permissions:
336
        erm: 1
348
        erm:
349
          - erm_admin
350
          - erm_agreement
(-)a/api/v1/swagger/paths/erm_licenses.yaml (-5 / +19 lines)
Lines 78-84 Link Here
78
          $ref: "../swagger.yaml#/definitions/error"
78
          $ref: "../swagger.yaml#/definitions/error"
79
    x-koha-authorization:
79
    x-koha-authorization:
80
      permissions:
80
      permissions:
81
        erm: 1
81
        erm:
82
          - erm_admin
83
          - erm_show
84
          - erm_licensing
85
          - erm_agreement
82
  post:
86
  post:
83
    x-mojo-to: ERM::Licenses#add
87
    x-mojo-to: ERM::Licenses#add
84
    operationId: addERMLicenses
88
    operationId: addERMLicenses
Lines 138-144 Link Here
138
          $ref: "../swagger.yaml#/definitions/error"
142
          $ref: "../swagger.yaml#/definitions/error"
139
    x-koha-authorization:
143
    x-koha-authorization:
140
      permissions:
144
      permissions:
141
        erm: 1
145
        erm:
146
          - erm_admin
147
          - erm_licensing
142
"/erm/licenses/{license_id}":
148
"/erm/licenses/{license_id}":
143
  get:
149
  get:
144
    x-mojo-to: ERM::Licenses#get
150
    x-mojo-to: ERM::Licenses#get
Lines 193-199 Link Here
193
          $ref: "../swagger.yaml#/definitions/error"
199
          $ref: "../swagger.yaml#/definitions/error"
194
    x-koha-authorization:
200
    x-koha-authorization:
195
      permissions:
201
      permissions:
196
        erm: 1
202
        erm:
203
          - erm_admin
204
          - erm_show
205
          - erm_licensing
206
          - erm_agreement
197
  put:
207
  put:
198
    x-mojo-to: ERM::Licenses#update
208
    x-mojo-to: ERM::Licenses#update
199
    operationId: updateERMlicenses
209
    operationId: updateERMlicenses
Lines 261-267 Link Here
261
          $ref: "../swagger.yaml#/definitions/error"
271
          $ref: "../swagger.yaml#/definitions/error"
262
    x-koha-authorization:
272
    x-koha-authorization:
263
      permissions:
273
      permissions:
264
        erm: 1
274
        erm:
275
          - erm_admin
276
          - erm_licensing
265
  delete:
277
  delete:
266
    x-mojo-to: ERM::Licenses#delete
278
    x-mojo-to: ERM::Licenses#delete
267
    operationId: deleteERMlicenses
279
    operationId: deleteERMlicenses
Lines 307-310 Link Here
307
          $ref: "../swagger.yaml#/definitions/error"
319
          $ref: "../swagger.yaml#/definitions/error"
308
    x-koha-authorization:
320
    x-koha-authorization:
309
      permissions:
321
      permissions:
310
        erm: 1
322
        erm:
323
          - erm_admin
324
          - erm_licensing
(-)a/erm/erm.pl (-1 / +1 lines)
Lines 32-38 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
32
        template_name => "erm/erm.tt",
32
        template_name => "erm/erm.tt",
33
        query         => $input,
33
        query         => $input,
34
        type          => "intranet",
34
        type          => "intranet",
35
        flagsrequired => { 'erm' => '1' },
35
        flagsrequired => { 'erm' => '*' },
36
    }
36
    }
37
);
37
);
38
38
(-)a/installer/data/mysql/atomicupdate/bug_32968.pl (+30 lines)
Line 0 Link Here
1
use Modern::Perl;
2
3
return {
4
    bug_number => "32968",
5
    description => "Create granular permissions for ERM",
6
    up => sub {
7
        my ($args) = @_;
8
        my ($dbh, $out) = @$args{qw(dbh out)};
9
10
11
    $dbh->do(q{ INSERT IGNORE INTO permissions (module_bit, code, description) VALUES (28, 'erm_admin', 'Create, edit and delete all ERM related content') });
12
    say $out "Added new permission 'erm_admin'";
13
    
14
    $dbh->do(q{ INSERT IGNORE INTO permissions (module_bit, code, description) VALUES (28, 'erm_show', 'Read-only permission for all ERM related content') });
15
    say $out "Added new permission 'erm_show'";
16
    
17
    $dbh->do(q{ INSERT IGNORE INTO permissions (module_bit, code, description) VALUES (28, 'erm_licensing', 'Create, edit and delete licenses') });
18
    say $out "Added new permission 'erm_licensing'";
19
    
20
    $dbh->do(q{ INSERT IGNORE INTO permissions (module_bit, code, description) VALUES (28, 'erm_agreement', 'Create, edit and delete agreements') });
21
    say $out "Added new permission 'erm_agreement'";
22
    
23
    $dbh->do(q{ INSERT IGNORE INTO permissions (module_bit, code, description) VALUES (28, 'erm_eholdings', 'Create, edit and delete EHoldings local titles and local packages') });
24
    say $out "Added new permission 'erm_eholdings'";
25
    
26
    $dbh->do(q{ INSERT IGNORE INTO permissions (module_bit, code, description) VALUES (28, 'erm_ebsco', 'Create, edit and delete EHoldings provided by EBSCO') });
27
    say $out "Added new permission 'erm_ebsco'";
28
    
29
    },
30
};
(-)a/installer/data/mysql/mandatory/userpermissions.sql (-1 / +7 lines)
Lines 148-152 INSERT INTO permissions (module_bit, code, description) VALUES Link Here
148
   (25, 'cashup', 'Perform cash register cashup action'),
148
   (25, 'cashup', 'Perform cash register cashup action'),
149
   (25, 'takepayment', 'Access the point of sale page and take payments'),
149
   (25, 'takepayment', 'Access the point of sale page and take payments'),
150
   (26, 'manage_problem_reports', 'Manage OPAC problem reports'),
150
   (26, 'manage_problem_reports', 'Manage OPAC problem reports'),
151
   (27, 'manage_recalls', 'Manage recalls for patrons')
151
   (27, 'manage_recalls', 'Manage recalls for patrons'),
152
   (28, 'erm_admin', 'Create, edit and delete all ERM related content'),
153
   (28, 'erm_show', 'Read-only permission for all ERM related content'),
154
   (28, 'erm_licensing', 'Create, edit and delete licenses'),
155
   (28, 'erm_agreement', 'Create, edit and delete agreements'),
156
   (28, 'erm_eholdings', 'Create, edit and delete EHoldings local titles and local packages'),
157
   (28, 'erm_ebsco', 'Create, edit and delete EHoldings provided by EBSCO')
152
;
158
;
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc (+31 lines)
Lines 846-850 Link Here
846
            Manage authentication providers
846
            Manage authentication providers
847
        </span>
847
        </span>
848
        <span class="permissioncode">([% name | html %])</span>
848
        <span class="permissioncode">([% name | html %])</span>
849
  [%# erm %]
850
    [%- CASE 'erm_admin' -%]
851
        <span class="sub_permission manage_agreements_subpermission">
852
            Create, edit and delete all ERM related content
853
        </span>
854
        <span class="permissioncode">([% name | html %])</span>
855
    [%- CASE 'erm_show' -%]
856
        <span class="sub_permission manage_licenses_subpermission">
857
            Read-only permission for all ERM related content
858
        </span>
859
        <span class="permissioncode">([% name | html %])</span>
860
    [%- CASE 'erm_licensing' -%]
861
        <span class="sub_permission manage_packages_subpermission">
862
            Create, edit and delete licenses
863
        </span>
864
        <span class="permissioncode">([% name | html %])</span>
865
    [%- CASE 'erm_agreement' -%]
866
        <span class="sub_permission manage_titles_subpermission">
867
            Create, edit and delete agreements
868
        </span>
869
        <span class="permissioncode">([% name | html %])</span>
870
    [%- CASE 'erm_eholdings' -%]
871
        <span class="sub_permission manage_providers_resources_subpermission">
872
            Create, edit and delete EHoldings local titles and local packages
873
        </span>
874
        <span class="permissioncode">([% name | html %])</span>
875
    [%- CASE 'erm_ebsco' -%]
876
        <span class="sub_permission manage_providers_resources_subpermission">
877
            Create, edit and delete EHoldings provided by EBSCO
878
        </span>
879
        <span class="permissioncode">([% name | html %])</span>
849
  [%- END -%]
880
  [%- END -%]
850
[%- END -%]
881
[%- END -%]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/erm/erm.tt (+8 lines)
Lines 60-65 Link Here
60
60
61
        const logged_in_user_lists = [% To.json(logged_in_user.virtualshelves.unblessed) | $raw %];
61
        const logged_in_user_lists = [% To.json(logged_in_user.virtualshelves.unblessed) | $raw %];
62
62
63
        const permissions = {
64
            admin: [% CAN_user_erm_erm_admin ? 1 : 0 %],
65
            show: [% CAN_user_erm_erm_show ? 1 : 0 %],
66
            licensing: [% CAN_user_erm_erm_licensing ? 1 : 0 %],
67
            agreement: [% CAN_user_erm_erm_agreement ? 1 : 0 %],
68
            eholdings: [% CAN_user_erm_erm_eholdings ? 1 : 0 %],
69
            ebsco: [% CAN_user_erm_erm_ebsco ? 1 : 0 %]
70
        }
63
    </script>
71
    </script>
64
72
65
    [% Asset.js("js/vue/dist/erm.js") | $raw %]
73
    [% Asset.js("js/vue/dist/erm.js") | $raw %]
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/AgreementsList.vue (-5 / +10 lines)
Lines 57-62 export default { Link Here
57
            get_lib_from_av,
57
            get_lib_from_av,
58
            map_av_dt_filter,
58
            map_av_dt_filter,
59
            table_id,
59
            table_id,
60
            permissions,
60
        }
61
        }
61
    },
62
    },
62
    data: function () {
63
    data: function () {
Lines 333-343 export default { Link Here
333
                                        ]
334
                                        ]
334
                                    )
335
                                    )
335
336
336
                                    let n = createVNode("span", {}, [
337
                                    let n =
337
                                        editButton,
338
                                        permissions.admin ||
338
                                        " ",
339
                                        permissions.agreement
339
                                        deleteButton,
340
                                            ? createVNode("span", {}, [
340
                                    ])
341
                                                  editButton,
342
                                                  " ",
343
                                                  deleteButton,
344
                                              ])
345
                                            : ""
341
                                    render(n, e)
346
                                    render(n, e)
342
                                }
347
                                }
343
                            )
348
                            )
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/Main.vue (-1 / +8 lines)
Lines 16-22 Link Here
16
                            <div id="navmenulist">
16
                            <div id="navmenulist">
17
                                <h5>{{ $__("E-resource management") }}</h5>
17
                                <h5>{{ $__("E-resource management") }}</h5>
18
                                <ul>
18
                                <ul>
19
                                    <li>
19
                                    <li
20
                                        v-if="
21
                                            permissions.admin ||
22
                                            permissions.agreement ||
23
                                            permissions.show
24
                                        "
25
                                    >
20
                                        <router-link
26
                                        <router-link
21
                                            to="/cgi-bin/koha/erm/agreements"
27
                                            to="/cgi-bin/koha/erm/agreements"
22
                                        >
28
                                        >
Lines 146-151 export default { Link Here
146
            vendorStore,
152
            vendorStore,
147
            erm_providers,
153
            erm_providers,
148
            ERMModule,
154
            ERMModule,
155
            permissions,
149
        }
156
        }
150
    },
157
    },
151
    data() {
158
    data() {
(-)a/koha-tmpl/intranet-tmpl/prog/js/vue/modules/erm.ts (-1 / +3 lines)
Lines 58-63 app.mount("#erm"); Link Here
58
58
59
const { removeMessages } = mainStore;
59
const { removeMessages } = mainStore;
60
router.beforeEach((to, from) => {
60
router.beforeEach((to, from) => {
61
    if(to.path == '/cgi-bin/koha/erm/agreements' && !permissions.admin && !permissions.agreement && !permissions.show){
62
        return { path: '/cgi-bin/koha/erm/erm.pl' }
63
    }
61
    removeMessages(); // This will actually flag the messages as displayed already
64
    removeMessages(); // This will actually flag the messages as displayed already
62
});
65
});
63
router.afterEach((to, from) => {
66
router.afterEach((to, from) => {
64
- 

Return to bug 32968