T606: Fix refreshing list of auth factors after adding/removing them

This commit is contained in:
Aleksander Machniak 2017-09-27 13:38:23 +02:00
parent 68477e014d
commit 7c81d3f1dd
2 changed files with 14 additions and 4 deletions

View file

@ -29,7 +29,11 @@ window.rcmail && rcmail.addEventListener('init', function(evt) {
var highsec_call_stack = [];
var highsec_dialog;
var factor_dialog;
if (!rcmail.env.kolab_2fa_factors) {
rcmail.env.kolab_2fa_factors = {};
}
/**
* Equivalend of PHP time()
*/

View file

@ -459,7 +459,7 @@ class kolab_2fa extends rcube_plugin
}
$me = $this;
$this->api->output->set_env('kolab_2fa_factors', array_combine(
$factors = array_combine(
$factors,
array_map(function($id) use ($me, &$env_methods) {
$props = array('id' => $id);
@ -473,9 +473,10 @@ class kolab_2fa extends rcube_plugin
return $props;
}, $factors)
));
);
$this->api->output->set_env('kolab_2fa_methods', $env_methods);
$this->api->output->set_env('kolab_2fa_factors', !empty($factors) ? $factors : null);
return html::div(array('id' => 'kolab2fapropform'), $out);
}
@ -640,7 +641,10 @@ class kolab_2fa extends rcube_plugin
if ($success) {
$this->api->output->show_message($data === false ? $this->gettext('factorremovesuccess') : $this->gettext('factorsavesuccess'), 'confirmation');
$this->api->output->command('plugin.save_success', array('method' => $method, 'active' => $data !== false) + $save_data);
$this->api->output->command('plugin.save_success', array(
'method' => $method,
'active' => $data !== false,
'id' => $driver->id) + $save_data);
}
else if ($errors) {
$this->api->output->show_message($this->gettext('factorsaveerror'), 'error');
@ -707,6 +711,7 @@ class kolab_2fa extends rcube_plugin
}
}
}
$success = $driver->verify(rcube_utils::get_input_value('_code', rcube_utils::INPUT_POST), $timestamp);
$method = $driver->method;
}
@ -722,6 +727,7 @@ class kolab_2fa extends rcube_plugin
'message' => str_replace('$method', $this->gettext($method),
$this->gettext($success ? 'codeverificationpassed' : 'codeverificationfailed'))
));
$this->api->output->send();
}