aboutsummaryrefslogtreecommitdiff
path: root/perl
diff options
context:
space:
mode:
authorJon Robertson <jonrober@stanford.edu>2010-01-07 09:33:50 -0800
committerJon Robertson <jonrober@stanford.edu>2010-01-07 09:33:50 -0800
commit99e39ac2639d99acdfd74acc05c25b5a95189860 (patch)
tree16783c1bb58cf3590596e33b24d0d402c4e2ee91 /perl
parent17b515f76c5774e3bc45906d3e679edcfe2b529b (diff)
Added ACL name to object history entries
When listing an object history, ACLs were only shown as the ACL id. This changes that behavior to show the ACL name as well as ID. Where before it might say "set owner to 1", now it would say "set owner to ADMIN (1)".
Diffstat (limited to 'perl')
-rw-r--r--perl/Wallet/Object/Base.pm28
-rwxr-xr-xperl/t/server.t34
2 files changed, 45 insertions, 17 deletions
diff --git a/perl/Wallet/Object/Base.pm b/perl/Wallet/Object/Base.pm
index 0f40028..f2568eb 100644
--- a/perl/Wallet/Object/Base.pm
+++ b/perl/Wallet/Object/Base.pm
@@ -445,6 +445,22 @@ sub flag_set {
# History
##############################################################################
+# Expand a given ACL id to add its name, for readability. Returns the
+# original id alone if there was a problem finding the name.
+sub format_acl_id {
+ my ($self, $id) = @_;
+ my $name = $id;
+
+ my $sql = 'select ac_name from acls where ac_id = ?';
+ my $sth = $self->{dbh}->prepare ($sql);
+ $sth->execute ($id);
+ if (my @ref = $sth->fetchrow_array) {
+ $name = $ref[0] . " ($id)";
+ }
+
+ return $name;
+}
+
# Return the formatted history for a given object or undef on error.
# Currently always returns the complete history, but eventually will need to
# provide some way of showing only recent entries.
@@ -476,6 +492,18 @@ sub history {
} elsif (defined ($new)) {
$output .= "add $new to attribute $attr";
}
+ } elsif ($data[0] eq 'set'
+ and ($data[1] eq 'owner' or $data[1] =~ /^acl_/)) {
+ my $field = $data[1];
+ $old = $self->format_acl_id ($old) if defined ($old);
+ $new = $self->format_acl_id ($new) if defined ($new);
+ if (defined ($old) and defined ($new)) {
+ $output .= "set $field to $new (was $old)";
+ } elsif (defined ($new)) {
+ $output .= "set $field to $new";
+ } elsif (defined ($old)) {
+ $output .= "unset $field (was $old)";
+ }
} elsif ($data[0] eq 'set') {
my $field = $data[1];
if (defined ($old) and defined ($new)) {
diff --git a/perl/t/server.t b/perl/t/server.t
index d4fd068..090387b 100755
--- a/perl/t/server.t
+++ b/perl/t/server.t
@@ -397,31 +397,31 @@ DATE set expires to $now
by $admin from $host
DATE unset expires (was $now)
by $admin from $host
-DATE set acl_get to 1
+DATE set acl_get to ADMIN (1)
by $admin from $host
-DATE unset acl_get (was 1)
+DATE unset acl_get (was ADMIN (1))
by $admin from $host
-DATE set acl_store to 1
+DATE set acl_store to ADMIN (1)
by $admin from $host
-DATE unset acl_store (was 1)
+DATE unset acl_store (was ADMIN (1))
by $admin from $host
-DATE set owner to 1
+DATE set owner to ADMIN (1)
by $admin from $host
-DATE set acl_get to 5
+DATE set acl_get to empty (5)
by $admin from $host
-DATE set acl_store to 5
+DATE set acl_store to empty (5)
by $admin from $host
-DATE unset acl_store (was 5)
+DATE unset acl_store (was empty (5))
by $admin from $host
-DATE unset owner (was 1)
+DATE unset owner (was ADMIN (1))
by $admin from $host
-DATE set owner to 1
+DATE set owner to ADMIN (1)
by $admin from $host
DATE set flag locked
by $admin from $host
DATE clear flag locked
by $admin from $host
-DATE unset owner (was 1)
+DATE unset owner (was ADMIN (1))
by $admin from $host
DATE set flag unchanging
by $admin from $host
@@ -527,7 +527,7 @@ is ($show, $expected, ' and show an object we own');
$history = <<"EOO";
DATE create
by $admin from $host
-DATE set owner to 2
+DATE set owner to user1 (2)
by $admin from $host
EOO
$seen = $server->history ('base', 'service/user1');
@@ -608,13 +608,13 @@ is ($show, $expected, ' and show an object we jointly own');
$history = <<"EOO";
DATE create
by $admin from $host
-DATE set owner to 4
+DATE set owner to both (4)
by $admin from $host
-DATE set acl_show to 2
+DATE set acl_show to user1 (2)
by $admin from $host
-DATE set acl_destroy to 3
+DATE set acl_destroy to user2 (3)
by $admin from $host
-DATE set acl_flags to 2
+DATE set acl_flags to user1 (2)
by $admin from $host
DATE set flag unchanging
by $user1 from $host
@@ -679,7 +679,7 @@ is ($show, $expected, ' and show an object we own');
$history = <<"EOO";
DATE create
by $admin from $host
-DATE set owner to 3
+DATE set owner to user2 (3)
by $admin from $host
EOO
$seen = $server->history ('base', 'service/user2');