MT#57753 fix /api/mailtofaxsettings secret_key change

* secret_key can not be correctly set/updated and unset
* last_secret_key_modify behaviour is changed, if "secret_key"
  is provided in the data, the value is updated, otherwise
  it points to the last time when the key was updated (or unset)

Change-Id: Ib6d7f78d4e93240ac36750fc1685f1c4c765bf55
mr12.0
Kirill Solomko 3 years ago
parent 22a8e95c29
commit ba78e193e9

@ -164,14 +164,20 @@ sub update_item {
$self->error($c, HTTP_UNPROCESSABLE_ENTITY, "Invalid field 'acl'. Must be an array.");
return;
}
if ($resource->{secret_key} && (!$old_resource->{secret_key} || $old_resource->{secret_key} ne $resource->{secret_key})) {
my $last_sk_modify = $prov_subs->voip_mail_to_fax_preference
? $prov_subs->voip_mail_to_fax_preference->last_secret_key_modify
: undef;
my $old_secret_key = $prov_subs->voip_mail_to_fax_preference
? $prov_subs->voip_mail_to_fax_preference->secret_key
: undef;
if (exists $resource->{secret_key}) {
$resource->{last_secret_key_modify} = NGCP::Panel::Utils::DateTime::current_local;
} elsif ($resource->{last_secret_key_modify} && ($old_resource->{last_secret_key_modify} ne $resource->{last_secret_key_modify})) {
#forbid changing modify time
$resource->{last_secret_key_modify} = $old_resource->{last_secret_key_modify};
} elsif (!$resource->{last_secret_key_modify}) {
#delete last_secret_key_modify to prevent automatic conversion to current time when inserting into DB
delete $resource->{last_secret_key_modify};
} else {
$last_sk_modify
? $resource->{last_secret_key_modify} = $last_sk_modify
: delete $resource->{last_secret_key_modify};
}
my %update_fields = %{ $resource };

Loading…
Cancel
Save