Skip to content

Commit b32cce7

Browse files
committed
[UPDATE] prevent adding/editing workers unless a valid coin address is set in config
1 parent ae9960d commit b32cce7

File tree

4 files changed

+52
-33
lines changed

4 files changed

+52
-33
lines changed

include/config/admin_settings.inc.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,13 @@
385385
'name' => 'disable_transactionsummary', 'value' => $setting->getValue('disable_transactionsummary'),
386386
'tooltip' => 'Disable transaction summaries. Helpful with large transaction tables.'
387387
);
388+
$aSettings['system'][] = array(
389+
'display' => 'Disable Worker Edit without valid Coin Address', 'type' => 'select',
390+
'options' => array( 0 => 'No', 1 => 'Yes'),
391+
'default' => 0,
392+
'name' => 'disable_worker_edit', 'value' => $setting->getValue('disable_worker_edit'),
393+
'tooltip' => 'No worker editing without valid Payout Address set in User Config.'
394+
);
388395
$aSettings['system'][] = array(
389396
'display' => 'IRC Chat Channel', 'type' => 'text',
390397
'size' => 25,

include/pages/account/workers.inc.php

Lines changed: 44 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,50 +2,61 @@
22
$defflip = (!cfip()) ? exit(header('HTTP/1.1 401 Unauthorized')) : 1;
33

44
if ($user->isAuthenticated()) {
5-
switch (@$_REQUEST['do']) {
6-
case 'delete':
7-
if (!$config['csrf']['enabled'] || $config['csrf']['enabled'] && $csrftoken->valid) {
8-
if ($worker->deleteWorker($_SESSION['USERDATA']['id'], $_GET['id'])) {
9-
$_SESSION['POPUP'][] = array('CONTENT' => 'Worker removed', 'TYPE' => 'alert alert-success');
5+
6+
7+
if (!$user->getCoinAddress($_SESSION['USERDATA']['id']) AND $setting->getValue('disable_worker_edit')) {
8+
9+
$_SESSION['POPUP'][] = array('CONTENT' => 'You have no payout address set.', 'TYPE' => 'alert alert-danger');
10+
$_SESSION['POPUP'][] = array('CONTENT' => 'You can not add workers unless a valid Payout Address is set in your User Settings.', 'TYPE' => 'alert alert-danger');
11+
$smarty->assign('CONTENT', 'disabled.tpl');
12+
13+
} else {
14+
switch (@$_REQUEST['do']) {
15+
case 'delete':
16+
if (!$config['csrf']['enabled'] || $config['csrf']['enabled'] && $csrftoken->valid) {
17+
if ($worker->deleteWorker($_SESSION['USERDATA']['id'], $_GET['id'])) {
18+
$_SESSION['POPUP'][] = array('CONTENT' => 'Worker removed', 'TYPE' => 'alert alert-success');
19+
} else {
20+
$_SESSION['POPUP'][] = array('CONTENT' => $worker->getError(), 'TYPE' => 'alert alert-danger');
21+
}
1022
} else {
11-
$_SESSION['POPUP'][] = array('CONTENT' => $worker->getError(), 'TYPE' => 'alert alert-danger');
23+
$_SESSION['POPUP'][] = array('CONTENT' => $csrftoken->getErrorWithDescriptionHTML(), 'TYPE' => 'alert alert-warning');
1224
}
13-
} else {
14-
$_SESSION['POPUP'][] = array('CONTENT' => $csrftoken->getErrorWithDescriptionHTML(), 'TYPE' => 'alert alert-warning');
15-
}
16-
break;
25+
break;
1726

18-
case 'add':
19-
if (!$config['csrf']['enabled'] || $config['csrf']['enabled'] && $csrftoken->valid) {
20-
if ($worker->addWorker($_SESSION['USERDATA']['id'], $_POST['username'], $_POST['password'])) {
21-
$_SESSION['POPUP'][] = array('CONTENT' => 'Worker added', 'TYPE' => 'alert alert-success');
27+
case 'add':
28+
if (!$config['csrf']['enabled'] || $config['csrf']['enabled'] && $csrftoken->valid) {
29+
if ($worker->addWorker($_SESSION['USERDATA']['id'], $_POST['username'], $_POST['password'])) {
30+
$_SESSION['POPUP'][] = array('CONTENT' => 'Worker added', 'TYPE' => 'alert alert-success');
31+
} else {
32+
$_SESSION['POPUP'][] = array('CONTENT' => $worker->getError(), 'TYPE' => 'alert alert-danger');
33+
}
2234
} else {
23-
$_SESSION['POPUP'][] = array('CONTENT' => $worker->getError(), 'TYPE' => 'alert alert-danger');
35+
$_SESSION['POPUP'][] = array('CONTENT' => $csrftoken->getErrorWithDescriptionHTML(), 'TYPE' => 'alert alert-warning');
2436
}
25-
} else {
26-
$_SESSION['POPUP'][] = array('CONTENT' => $csrftoken->getErrorWithDescriptionHTML(), 'TYPE' => 'alert alert-warning');
27-
}
28-
break;
37+
break;
2938

30-
case 'update':
31-
if (!$config['csrf']['enabled'] || $config['csrf']['enabled'] && $csrftoken->valid) {
32-
if ($worker->updateWorkers($_SESSION['USERDATA']['id'], @$_POST['data'])) {
33-
$_SESSION['POPUP'][] = array('CONTENT' => 'Worker updated', 'TYPE' => 'alert alert-success');
39+
case 'update':
40+
if (!$config['csrf']['enabled'] || $config['csrf']['enabled'] && $csrftoken->valid) {
41+
if ($worker->updateWorkers($_SESSION['USERDATA']['id'], @$_POST['data'])) {
42+
$_SESSION['POPUP'][] = array('CONTENT' => 'Worker updated', 'TYPE' => 'alert alert-success');
43+
} else {
44+
$_SESSION['POPUP'][] = array('CONTENT' => $worker->getError(), 'TYPE' => 'alert alert-danger');
45+
}
3446
} else {
35-
$_SESSION['POPUP'][] = array('CONTENT' => $worker->getError(), 'TYPE' => 'alert alert-danger');
47+
$_SESSION['POPUP'][] = array('CONTENT' => $csrftoken->getErrorWithDescriptionHTML(), 'TYPE' => 'alert alert-warning');
3648
}
37-
} else {
38-
$_SESSION['POPUP'][] = array('CONTENT' => $csrftoken->getErrorWithDescriptionHTML(), 'TYPE' => 'alert alert-warning');
49+
break;
3950
}
40-
break;
41-
}
4251

43-
$smarty->assign('DISABLE_IDLEWORKERNOTIFICATIONS', $setting->getValue('notifications_disable_idle_worker'));
44-
$aWorkers = $worker->getWorkers($_SESSION['USERDATA']['id']);
45-
if (!$aWorkers) $_SESSION['POPUP'][] = array('CONTENT' => 'You have no workers configured', 'TYPE' => 'alert alert-danger');
52+
$smarty->assign('DISABLE_IDLEWORKERNOTIFICATIONS', $setting->getValue('notifications_disable_idle_worker'));
53+
$aWorkers = $worker->getWorkers($_SESSION['USERDATA']['id']);
54+
if (!$aWorkers) $_SESSION['POPUP'][] = array('CONTENT' => 'You have no workers configured', 'TYPE' => 'alert alert-danger');
4655

47-
$smarty->assign('WORKERS', $aWorkers);
56+
$smarty->assign('WORKERS', $aWorkers);
57+
$smarty->assign('CONTENT', 'default.tpl');
58+
}
4859
}
49-
$smarty->assign('CONTENT', 'default.tpl');
60+
5061

5162
?>

include/smarty_globals.inc.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
'disable_auto_payouts' => $setting->getValue('disable_auto_payouts'),
7979
'disable_contactform' => $setting->getValue('disable_contactform'),
8080
'disable_contactform_guest' => $setting->getValue('disable_contactform_guest'),
81+
'disable_worker_edit' => $setting->getValue('disable_worker_edit'),
8182
'algorithm' => $config['algorithm'],
8283
'getbalancewithunconfirmed' => $config['getbalancewithunconfirmed'],
8384
'target_bits' => $coin->getTargetBits(),

templates/bootstrap/account/workers/disabled.tpl

Whitespace-only changes.

0 commit comments

Comments
 (0)