summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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');