Skip to content

Commit

Permalink
PT 7749329: Refine periodicals access with granular permissions
Browse files Browse the repository at this point in the history
Adds permissions to constrain CRUD operations on periodicals and
periodical_serials.
  • Loading branch information
pjones9 committed Mar 4, 2011
1 parent eb764da commit 906d0d5
Show file tree
Hide file tree
Showing 11 changed files with 52 additions and 24 deletions.
6 changes: 5 additions & 1 deletion installer/data/mysql/en/mandatory/userpermissions.sql
Expand Up @@ -69,5 +69,9 @@ INSERT INTO permissions (module_bit, code, description) VALUES
(13, 'schedule_tasks', 'Schedule tasks to run'),
(13, 'manage_csv_profiles', 'Manage CSV export profiles'),
(13, 'receipts_manage', 'Create, Edit & Delete Receipt Templates'),
(13, 'receipts_assign', 'Assign Receipt Templates to Various Actions')
(13, 'receipts_assign', 'Assign Receipt Templates to Various Actions'),
(15, 'periodical_view', 'Basic periodicals permissions'),
(15, 'periodical_create', 'Create a new periodical definition'),
(15, 'periodical_edit', 'Modify a periodical definition'),
(15, 'periodical_delete', 'Delete a periodical definition')
;
14 changes: 14 additions & 0 deletions installer/data/mysql/updatedatabase.pl
Expand Up @@ -4433,6 +4433,20 @@
print "Upgrade to $DBversion done ( Corrected itemtypes.notforhold )\n";
}

$DBversion = '4.03.15.002';
if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
$dbh->do(q{
INSERT INTO permissions (module_bit, code, description) VALUES
(15, 'periodical_view', 'Basic periodicals permissions'),
(15, 'periodical_create', 'Create a new periodical definition'),
(15, 'periodical_edit', 'Modify a periodical definition'),
(15, 'periodical_delete', 'Delete a periodical definition')
});

SetVersion ($DBversion);
print "Upgrade to $DBversion done ( Add granular permissions for periodicals )\n";
}

printf "Database schema now up to date at version %s as of %s.\n", $DBversion, scalar localtime;

=item DropAllForeignKeys($table)
Expand Down
Expand Up @@ -36,7 +36,7 @@
//]]>
</script>
<ul class="toolbar">
<li><a id="new_periodical" href="periodicals-add.pl">New Periodical</a></li>
<TMPL_IF NAME="CAN_user_serials_periodical_create"><li><a id="new_periodical" href="periodicals-add.pl">New Periodical</a></li></TMPL_IF>

<!--
<TMPL_IF NAME="periodical_id">
Expand Down
4 changes: 2 additions & 2 deletions koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tmpl
Expand Up @@ -68,13 +68,13 @@
</TMPL_IF>
<!-- /TMPL_IF -->
<li><a href="/cgi-bin/koha/authorities/authorities-home.pl">Authorities</a></li>
<!-- TMPL_IF NAME="CAN_user_serials" -->
<TMPL_IF NAME="CAN_user_serials">
<TMPL_IF NAME="UsePeriodicals">
<li><a href="/cgi-bin/koha/periodicals/periodicals-home.pl">Periodicals</a></li>
<TMPL_ELSE>
<li><a href="/cgi-bin/koha/serials/serials-home.pl">Serials</a></li>
</TMPL_IF>
<!-- /TMPL_IF -->
</TMPL_IF>
</ul>
<!-- TMPL_IF NAME="CAN_user_acquisition" -->
<h3><a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a></h3>
Expand Down
Expand Up @@ -18,11 +18,15 @@
<h1>Periodical description for &quot;<!-- TMPL_VAR name="bibliotitle" -->&quot;</h1>

<div id="periodical_info">
<h2>Periodical Information</h2>
<ul>
<li><span class="label">Periodical ID: </span><!--TMPL_VAR name="periodical_id"--> (<a href="periodicals-add.pl?periodical_id=<TMPL_VAR NAME="periodical_id">">Edit</a>)(<a href="subscription-add.pl?periodical_id=<TMPL_VAR NAME="periodical_id">">Subscribe</a>)</li>
<li><span class="label">Biblio:</span> <i>(<!-- TMPL_VAR name="biblionumber" -->)</i> <a href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=<!-- TMPL_VAR name="biblionumber" -->"><!-- TMPL_VAR name="bibliotitle" --></a></li>
</ul>
<h2>Periodical Information</h2>
<ul>
<li>
<span class="label">Periodical ID: </span><TMPL_VAR name="periodical_id">
<TMPL_IF NAME="CAN_user_serials_periodical_edit">(<a href="periodicals-add.pl?periodical_id=<TMPL_VAR NAME="periodical_id">">Edit</a>)</TMPL_IF>
(<a href="subscription-add.pl?periodical_id=<TMPL_VAR NAME="periodical_id">">Subscribe</a>)
</li>
<li><span class="label">Biblio:</span> <i>(<TMPL_VAR name="biblionumber">)</i> <a href="/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=<TMPL_VAR name="biblionumber">"><TMPL_VAR name="bibliotitle"></a></li>
</ul>
</div>
<div id="sequence_numbering" >
<h3>Sequence Prediction</h3>
Expand Down Expand Up @@ -51,15 +55,17 @@
<td><TMPL_VAR NAME="expected"></td>
<td><TMPL_VAR NAME="arrived"></td>
<td>
<a href="periodical_serial-edit.pl?periodical_serial_id=<TMPL_VAR NAME="id">">Edit</a> |
<a href="delete.pl?type=periodical_serial&id=<TMPL_VAR NAME="id">">Delete</a>
<TMPL_IF NAME="__last__">| <a href="periodical_serial-edit.pl?periodical_serial_id=<TMPL_VAR NAME="id">&op=combine">Combine</a></TMPL_IF>
<TMPL_IF NAME="CAN_user_serials_periodical_edit">(<a href="periodical_serial-edit.pl?periodical_serial_id=<TMPL_VAR NAME="id">">Edit</a>)</TMPL_IF>
<TMPL_IF NAME="CAN_user_serials_periodical_delete">(<a href="delete.pl?type=periodical_serial&id=<TMPL_VAR NAME="id">">Delete</a>)</TMPL_IF>
<TMPL_IF EXPR="__last__ && CAN_user_serials_periodical_edit">(<a href="periodical_serial-edit.pl?periodical_serial_id=<TMPL_VAR NAME="id">&op=combine">Combine</a>)</TMPL_IF>
</td>
</tr>
</TMPL_LOOP>
<TMPL_IF NAME="CAN_user_serials_periodical_create">
<tr>
<td colspan="4"><a href="periodicals-detail.pl?periodical_id=<TMPL_VAR NAME="periodical_id">&op=gen_next_seq">Generate Next Issue Record</a></td>
<td colspan="4"><a href="periodicals-detail.pl?periodical_id=<TMPL_VAR NAME="periodical_id">&op=gen_next_seq">Generate Next Issue Record</a></td>
</tr>
</TMPL_IF>
</table>
</div>

Expand Down
Expand Up @@ -31,8 +31,8 @@
<td><a href="periodicals-detail.pl?periodical_id=<TMPL_VAR NAME="id">"><TMPL_VAR NAME="bibliotitle"></a></td>
<td><TMPL_VAR NAME="subscription_count"></td>
<td>
<a href="periodicals-add.pl?periodical_id=<TMPL_VAR NAME="id">">Edit</a> |
<a href="delete.pl?type=periodical&id=<TMPL_VAR NAME="id">">Delete</a>
<TMPL_IF NAME="CAN_user_serials_periodical_edit">(<a href="periodicals-add.pl?periodical_id=<TMPL_VAR NAME="id">">Edit</a>)</TMPL_IF>
<TMPL_IF NAME="CAN_user_serials_periodical_delete">(<a href="delete.pl?type=periodical&id=<TMPL_VAR NAME="id">">Delete</a>)</TMPL_IF>
</td>
</tr>
</TMPL_LOOP>
Expand Down
2 changes: 1 addition & 1 deletion periodicals/delete.pl
Expand Up @@ -15,7 +15,7 @@
query => $query,
type => "intranet",
authnotrequired => 0,
flagsrequired => {serials => 1},
flagsrequired => {serials => 'periodical_delete'},
debug => 1,
});

Expand Down
7 changes: 3 additions & 4 deletions periodicals/periodical-bib-search.pl
Expand Up @@ -111,8 +111,7 @@ =head1 PARAMETERS
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => {serials => 1},
flagsrequired => {catalogue => 1},
flagsrequired => {catalogue => 1, serials => '*'},
debug => 1,
});

Expand Down Expand Up @@ -173,7 +172,7 @@ =head1 PARAMETERS
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => {catalogue => 1, serials=>1},
flagsrequired => {catalogue => 1, serials => '*'},
debug => 1,
});
# load the itemtypes
Expand All @@ -199,7 +198,7 @@ =head1 PARAMETERS
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => {catalogue => 1, serials=>1},
flagsrequired => {catalogue => 1, serials => '*'},
debug => 1,
});
# load the itemtypes
Expand Down
9 changes: 7 additions & 2 deletions periodicals/periodicals-add.pl
Expand Up @@ -33,11 +33,16 @@
query => $query,
type => "intranet",
authnotrequired => 0,
flagsrequired => {serials => 1},
flagsrequired => {serials => '*'},
debug => 1,
});

$periodical_id = C4::Control::Periodical::UpdateOrCreate($query) if ($op eq 'save');
if ($op eq 'save' && (
(C4::Auth::haspermission(C4::Context->userenv->{id}, {serials => 'periodical_edit'}) && defined $periodical_id)
|| (C4::Auth::haspermission(C4::Context->userenv->{id}, {serials => 'periodical_create'}) && ! defined $periodical_id)
)) {
$periodical_id = C4::Control::Periodical::UpdateOrCreate($query);
}

SeedTemplateWithPeriodicalData($template, $periodical_id) if $periodical_id;
SeedTemplateWithGeneralData($template);
Expand Down
2 changes: 1 addition & 1 deletion periodicals/periodicals-detail.pl
Expand Up @@ -33,7 +33,7 @@
query => $query,
type => "intranet",
authnotrequired => 0,
flagsrequired => {serials => 1},
flagsrequired => {serials => '*'},
debug => 1,
});

Expand Down
2 changes: 1 addition & 1 deletion periodicals/periodicals-home.pl
Expand Up @@ -33,7 +33,7 @@
query => $query,
type => "intranet",
authnotrequired => 1,
flagsrequired => { serials => 1 },
flagsrequired => { serials => '*' },
debug => 1,
}
);
Expand Down

0 comments on commit 906d0d5

Please sign in to comment.