adding support for group application permissions
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 2 Aug 2006 01:03:04 +0000 (01:03 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 2 Aug 2006 01:03:04 +0000 (01:03 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@5219 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/examples/fm_IDL.xml
Open-ILS/src/cgi-bin/usr_group-setup.cgi
Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/permission.pm
Open-ILS/src/sql/Pg/006.schema.permissions.sql

index 38a3dcc..8484e50 100644 (file)
                        <field name="name" oils_obj:array_position="6" oils_persist:virtual="false" />
                        <field name="parent" oils_obj:array_position="7" oils_persist:virtual="false" />
                        <field name="perm_interval" oils_obj:array_position="8" oils_persist:virtual="false" />
+                       <field name="application_perm" oils_obj:array_position="9" oils_persist:virtual="true" />
                </fields>
                <links>
                        <link field="parent" reltype="has_a" key="id" map="" class="pgt"/>
index 56b321a..20fbd5f 100755 (executable)
@@ -20,10 +20,11 @@ my $cgi = new CGI;
 #-------------------------------------------------------------------------------
 # setup part
 #-------------------------------------------------------------------------------
+my @perms = sort { $a->code cmp $b->code } permission::perm_list->retrieve_all;
 
-my %org_cols = ( qw/id GroupID name Name parent ParentGroup description Description/ );
+my %org_cols = ( qw/id GroupID name Name parent ParentGroup description Description application_perm ApplicationPermission/ );
 
-my @col_display_order = ( qw/id name parent description/ );
+my @col_display_order = ( qw/id name parent description application_perm/ );
 
 if (my $action = $cgi->param('action')) {
        if ( $action eq 'Update' ) {
@@ -38,7 +39,7 @@ if (my $action = $cgi->param('action')) {
        } elsif ( $action eq 'Set Permissions' ) {
                my $grp = permission::grp_tree->retrieve($cgi->param('perms'));
                my @ids = $cgi->param('permission');
-               for my $perm ( permission::perm_list->retrieve_all ) {
+               for my $perm ( @perms ) {
                        if (my $id = $cgi->param('permission_'.$perm->id) ) {
                                my $p = permission::grp_perm_map->search({perm=>$id,grp=>$grp->id})->next;
                                my $d = $cgi->param("depth_$id");
@@ -219,6 +220,17 @@ if (my $action = $cgi->param('action')) {
                                th($org_cols{description}),
                                td("<input type='text' name='description_$node' value=\"". $node->description() ."\">"),
                        );
+                       print Tr(
+                               th($org_cols{application_perm}),
+                               "<td>".do {
+                                       my $out = '<select name="application_perm_'.$node.'"><option value="">-- Select One --</option>';
+                                       $out .= '<option'.do{
+                                                       " selected='selected'" if ($_->code eq $node->application_perm);
+                                               }.'>'. $_->code .'</option>' for ( sort {$a->code cmp $b->code} @perms ); 
+                                       $out .= '</select>';
+                                       $out;
+                               }."</td>"
+                       );
 
                        print Tr( "<td colspan='2'><input type='submit' name='action' value='Update'/></td>" );
 
@@ -231,7 +243,7 @@ if (my $action = $cgi->param('action')) {
                                "<table class='table_class'>\n".
                                "<tr class='header_class'><th>Permission</th><th>Select</th><th>At Depth</th><th>Grantable</th></tr>";
 
-                       for my $perm ( sort {$a->code cmp $b->code} permission::perm_list->retrieve_all ) {
+                       for my $perm ( sort {$a->code cmp $b->code} @perms ) {
                                my $grp = $node;
                                my $out = '<select name="depth_'.$perm->id.'"><option value="">-- Select One --</option>';
                                for my $outype ( actor::org_unit_type->retrieve_all ) {
index 0752519..8b3deed 100644 (file)
@@ -15,7 +15,7 @@ package permission::grp_tree;
 use base qw/permission/;
 __PACKAGE__->table('permission_grp_tree');
 __PACKAGE__->columns(Primary => qw/id/);
-__PACKAGE__->columns(Essential => qw/name parent description perm_interval/);
+__PACKAGE__->columns(Essential => qw/name parent description perm_interval application_perm/);
 #-------------------------------------------------------------------------------
 package permission::usr_grp_map;
 use base qw/permission/;
index e72d9ce..e71a322 100644 (file)
@@ -10,6 +10,7 @@ CREATE TABLE permission.perm_list (
 );
 CREATE INDEX perm_list_code_idx ON permission.perm_list (code);
 
+/*
 INSERT INTO permission.perm_list VALUES (-1, 'EVERYTHING', NULL);
 INSERT INTO permission.perm_list VALUES (2, 'OPAC_LOGIN', NULL);
 INSERT INTO permission.perm_list VALUES (4, 'STAFF_LOGIN', NULL);
@@ -112,16 +113,19 @@ INSERT INTO permission.perm_list VALUES (103, 'CIRC_PERMIT_OVERRIDE', 'Allows a
 INSERT INTO permission.perm_list VALUES (104, 'COPY_IS_REFERENCE.override', 'Allows a user to override the copy_is_reference event');
 
 SELECT SETVAL('permission.perm_list_id_seq'::TEXT, 105);
+*/
 
 CREATE TABLE permission.grp_tree (
-       id              SERIAL  PRIMARY KEY,
-       name            TEXT    NOT NULL UNIQUE,
-       parent          INT     REFERENCES permission.grp_tree (id) ON DELETE RESTRICT,
-       description     TEXT,
-       perm_interval   INTERVAL DEFAULT '3 years'::interval NOT NULL
+       id                      SERIAL  PRIMARY KEY,
+       name                    TEXT    NOT NULL UNIQUE,
+       parent                  INT     REFERENCES permission.grp_tree (id) ON DELETE RESTRICT,
+       perm_interval           INTERVAL DEFAULT '3 years'::interval NOT NULL,
+       description             TEXT,
+       application_perm        TEXT
 );
 CREATE INDEX grp_tree_parent_idx ON permission.grp_tree (parent);
 
+/*
 INSERT INTO permission.grp_tree VALUES (1, 'Users', NULL, NULL, '3 years');
 INSERT INTO permission.grp_tree VALUES (2, 'Patrons', 1, NULL, '3 years');
 INSERT INTO permission.grp_tree VALUES (3, 'Staff', 1, NULL, '3 years');
@@ -130,6 +134,7 @@ INSERT INTO permission.grp_tree VALUES (5, 'Circulators', 3, NULL, '3 years');
 INSERT INTO permission.grp_tree VALUES (10, 'Local System Administrator', 3, 'System maintenance, configuration, etc.', '3 years');
 
 SELECT SETVAL('permission.grp_tree_id_seq'::TEXT, 11);
+*/
 
 CREATE TABLE permission.grp_perm_map (
        id              SERIAL  PRIMARY KEY,
@@ -140,6 +145,7 @@ CREATE TABLE permission.grp_perm_map (
                CONSTRAINT perm_grp_once UNIQUE (grp,perm)
 );
 
+/*
 INSERT INTO permission.grp_perm_map VALUES (57, 2, 15, 0, false);
 INSERT INTO permission.grp_perm_map VALUES (109, 2, 95, 0, false);
 INSERT INTO permission.grp_perm_map VALUES (1, 1, 2, 0, false);
@@ -251,7 +257,7 @@ INSERT INTO permission.grp_perm_map VALUES (133, 5, 102, 0, false);
 INSERT INTO permission.grp_perm_map VALUES (138, 5, 104, 1, false);
 
 SELECT SETVAL('permission.grp_perm_map_id_seq'::TEXT, 139);
-
+*/
 
 CREATE TABLE permission.usr_perm_map (
        id              SERIAL  PRIMARY KEY,