aboutsummaryrefslogtreecommitdiff
path: root/perl/lib/Wallet/Object/Password.pm
diff options
context:
space:
mode:
authorJon Robertson <jonrober@stanford.edu>2015-02-18 15:17:51 -0800
committerJon Robertson <jonrober@stanford.edu>2015-06-08 15:24:34 -0700
commit000b338694fae87996220336678fe990a1c3e3e1 (patch)
tree5266498e6c4024d56c8afc0afc5677de590fad8e /perl/lib/Wallet/Object/Password.pm
parent1575e25c9e9edc8d577a0f1118732c98871984e0 (diff)
Added new method for wallet-backend, update
update will work generally like get, but only for objects that have a concept of updating content automatically, like keytabs and passwords. For these, the content will be updated before sending to the client. In a later release get for keytabs will be modified to never update the kvno before sending to the user, and so the unchanging flag will be phased out in lieu of explicitly using the method that does what you want. Change-Id: I96a84416c5e50278eb29fe07052dde6e063bc071
Diffstat (limited to 'perl/lib/Wallet/Object/Password.pm')
-rw-r--r--perl/lib/Wallet/Object/Password.pm32
1 files changed, 25 insertions, 7 deletions
diff --git a/perl/lib/Wallet/Object/Password.pm b/perl/lib/Wallet/Object/Password.pm
index d06c8a6..3fd6ec8 100644
--- a/perl/lib/Wallet/Object/Password.pm
+++ b/perl/lib/Wallet/Object/Password.pm
@@ -57,12 +57,12 @@ sub file_path {
}
##############################################################################
-# Core methods
+# Shared methods
##############################################################################
# Return the contents of the file.
-sub get {
- my ($self, $user, $host, $time) = @_;
+sub retrieve {
+ my ($self, $operation, $user, $host, $time) = @_;
$time ||= time;
my $id = $self->{type} . ':' . $self->{name};
if ($self->flag_check ('locked')) {
@@ -72,13 +72,13 @@ sub get {
my $path = $self->file_path;
return unless $path;
- # If nothing is yet stored, generate a random password and save it to
- # the file.
+ # If nothing is yet stored, or we have requested an update, generate a
+ # random password and save it to the file.
my $schema = $self->{schema};
my %search = (ob_type => $self->{type},
ob_name => $self->{name});
my $object = $schema->resultset('Object')->find (\%search);
- unless ($object->ob_stored_on) {
+ if (!$object->ob_stored_on || $operation eq 'update') {
unless (open (FILE, '>', $path)) {
$self->error ("cannot store initial settings for $id: $!\n");
return;
@@ -103,10 +103,28 @@ sub get {
$self->error ("cannot get $id: $!");
return;
}
- $self->log_action ('get', $user, $host, $time);
+ $self->log_action ($operation, $user, $host, $time);
return $data;
}
+##############################################################################
+# Core methods
+##############################################################################
+
+# Return the contents of the file.
+sub get {
+ my ($self, $user, $host, $time) = @_;
+ my $result = $self->retrieve ('get', $user, $host, $time);
+ return $result;
+}
+
+# Return the contents of the file after resetting them to a random string.
+sub update {
+ my ($self, $user, $host, $time) = @_;
+ my $result = $self->retrieve ('update', $user, $host, $time);
+ return $result;
+}
+
1;
__END__