start to integrate domain-deactivated flag in UI

Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
This commit is contained in:
Michael Kaufmann
2023-05-26 13:58:41 +02:00
parent 426f204473
commit 0b685d569f
5 changed files with 35 additions and 10 deletions

View File

@@ -76,7 +76,7 @@ class Domains extends ApiCommand implements ResourceEntity
$query_fields = []; $query_fields = [];
$result_stmt = Database::prepare(" $result_stmt = Database::prepare("
SELECT SELECT
`d`.*, `c`.`loginname`, `c`.`deactivated`, `c`.`name`, `c`.`firstname`, `c`.`company`, `c`.`standardsubdomain`, `c`.`adminid` as customeradmin, `d`.*, `c`.`loginname`, `c`.`deactivated` as `customer_deactivated`, `c`.`name`, `c`.`firstname`, `c`.`company`, `c`.`standardsubdomain`, `c`.`adminid` as customeradmin,
`ad`.`id` AS `aliasdomainid`, `ad`.`domain` AS `aliasdomain` `ad`.`id` AS `aliasdomainid`, `ad`.`domain` AS `aliasdomain`
FROM `" . TABLE_PANEL_DOMAINS . "` `d` FROM `" . TABLE_PANEL_DOMAINS . "` `d`
LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`) LEFT JOIN `" . TABLE_PANEL_CUSTOMERS . "` `c` USING(`customerid`)
@@ -1137,6 +1137,8 @@ class Domains extends ApiCommand implements ResourceEntity
* (true), requires SSL * (true), requires SSL
* @param string $description * @param string $description
* optional custom description (currently not used/shown in the frontend), default empty * optional custom description (currently not used/shown in the frontend), default empty
* @param bool $deactivated
* optional, if 1 (true) the domain can be deactivated/suspended
* *
* @access admin * @access admin
* @return string json-encoded array * @return string json-encoded array
@@ -1232,6 +1234,7 @@ class Domains extends ApiCommand implements ResourceEntity
$tlsv13_cipher_list = $result['tlsv13_cipher_list']; $tlsv13_cipher_list = $result['tlsv13_cipher_list'];
} }
$description = $this->getParam('description', true, $result['description']); $description = $this->getParam('description', true, $result['description']);
$deactivated = $this->getBoolParam('deactivated', true, $result['deactivated']);
// count subdomain usage of source-domain // count subdomain usage of source-domain
$subdomains_stmt = Database::prepare(" $subdomains_stmt = Database::prepare("
@@ -1832,6 +1835,7 @@ class Domains extends ApiCommand implements ResourceEntity
$update_data['honorcipherorder'] = $honorcipherorder; $update_data['honorcipherorder'] = $honorcipherorder;
$update_data['sessiontickets'] = $sessiontickets; $update_data['sessiontickets'] = $sessiontickets;
$update_data['description'] = $description; $update_data['description'] = $description;
$update_data['deactivated'] = $deactivated;
$update_data['id'] = $id; $update_data['id'] = $id;
$update_stmt = Database::prepare(" $update_stmt = Database::prepare("
@@ -1878,11 +1882,17 @@ class Domains extends ApiCommand implements ResourceEntity
`ssl_enabled` = :sslenabled, `ssl_enabled` = :sslenabled,
`ssl_honorcipherorder` = :honorcipherorder, `ssl_honorcipherorder` = :honorcipherorder,
`ssl_sessiontickets` = :sessiontickets, `ssl_sessiontickets` = :sessiontickets,
`description` = :description `description` = :description,
`deactivated` = :deactivated
WHERE `id` = :id WHERE `id` = :id
"); ");
Database::pexecute($update_stmt, $update_data, true, true); Database::pexecute($update_stmt, $update_data, true, true);
// activate/deactivate domain-based services
if ($deactivated != $result['deactivated']) {
// @TODO
}
$_update_data['customerid'] = $customerid; $_update_data['customerid'] = $customerid;
$_update_data['adminid'] = $adminid; $_update_data['adminid'] = $adminid;
$_update_data['phpenabled'] = $phpenabled; $_update_data['phpenabled'] = $phpenabled;
@@ -1900,6 +1910,7 @@ class Domains extends ApiCommand implements ResourceEntity
$_update_data['honorcipherorder'] = $honorcipherorder; $_update_data['honorcipherorder'] = $honorcipherorder;
$_update_data['sessiontickets'] = $sessiontickets; $_update_data['sessiontickets'] = $sessiontickets;
$_update_data['parentdomainid'] = $id; $_update_data['parentdomainid'] = $id;
$_update_data['deactivated'] = $deactivated;
// if php config is to be set for all subdomains, check here // if php config is to be set for all subdomains, check here
$update_phpconfig = ''; $update_phpconfig = '';
@@ -1932,7 +1943,8 @@ class Domains extends ApiCommand implements ResourceEntity
`ssl_cipher_list` = :ssl_cipher_list, `ssl_cipher_list` = :ssl_cipher_list,
`tlsv13_cipher_list` = :tlsv13_cipher_list, `tlsv13_cipher_list` = :tlsv13_cipher_list,
`ssl_honorcipherorder` = :honorcipherorder, `ssl_honorcipherorder` = :honorcipherorder,
`ssl_sessiontickets` = :sessiontickets `ssl_sessiontickets` = :sessiontickets,
`deativated` = :deactivated
" . $update_phpconfig . $upd_specialsettings . $updatechildren . $update_sslredirect . " " . $update_phpconfig . $upd_specialsettings . $updatechildren . $update_sslredirect . "
WHERE `parentdomainid` = :parentdomainid WHERE `parentdomainid` = :parentdomainid
"); ");

View File

@@ -941,7 +941,8 @@ class SubDomains extends ApiCommand implements ResourceEntity
'`d`.`parentdomainid`', '`d`.`parentdomainid`',
'`d`.`letsencrypt`', '`d`.`letsencrypt`',
'`d`.`registration_date`', '`d`.`registration_date`',
'`d`.`termination_date`' '`d`.`termination_date`',
'`d`.`deactivated`'
]; ];
} }
$query_fields = []; $query_fields = [];

View File

@@ -51,6 +51,9 @@ class Domain
public static function domainTarget(array $attributes) public static function domainTarget(array $attributes)
{ {
if (empty($attributes['fields']['aliasdomain'])) { if (empty($attributes['fields']['aliasdomain'])) {
if ($attributes['fields']['deactivated']) {
return lng('admin.deactivated');
}
// path or redirect // path or redirect
if (preg_match('/^https?\:\/\//', $attributes['fields']['documentroot'])) { if (preg_match('/^https?\:\/\//', $attributes['fields']['documentroot'])) {
return [ return [
@@ -80,7 +83,7 @@ class Domain
} }
$result .= '<a href="http://' . $attributes['data'] . '" target="_blank">' . $attributes['data'] . '</a>'; $result .= '<a href="http://' . $attributes['data'] . '" target="_blank">' . $attributes['data'] . '</a>';
// check for statistics if parentdomainid==0 to show stats-link for customers // check for statistics if parentdomainid==0 to show stats-link for customers
if ((int)UI::getCurrentUser()['adminsession'] == 0 && $attributes['fields']['parentdomainid'] == 0) { if ((int)UI::getCurrentUser()['adminsession'] == 0 && $attributes['fields']['parentdomainid'] == 0 && $attributes['fields']['deactivated'] == 0) {
$statsapp = Settings::Get('system.traffictool'); $statsapp = Settings::Get('system.traffictool');
$result .= ' <a href="http://' . $attributes['data'] . '/' . $statsapp . '" rel="external" target="_blank" title="' . lng('domains.statstics') . '"><i class="fa-solid fa-chart-line text-secondary"></i></a>'; $result .= ' <a href="http://' . $attributes['data'] . '/' . $statsapp . '" rel="external" target="_blank" title="' . lng('domains.statstics') . '"><i class="fa-solid fa-chart-line text-secondary"></i></a>';
} }
@@ -95,12 +98,12 @@ class Domain
public static function canEdit(array $attributes): bool public static function canEdit(array $attributes): bool
{ {
return (bool)$attributes['fields']['caneditdomain']; return (bool)($attributes['fields']['caneditdomain'] && !$attributes['fields']['deactivated']);
} }
public static function canViewLogs(array $attributes): bool public static function canViewLogs(array $attributes): bool
{ {
if ((int)$attributes['fields']['email_only'] == 0) { if ((int)$attributes['fields']['email_only'] == 0 && !$attributes['fields']['deactivated']) {
if ((int)UI::getCurrentUser()['adminsession'] == 0 && (bool)UI::getCurrentUser()['logviewenabled']) { if ((int)UI::getCurrentUser()['adminsession'] == 0 && (bool)UI::getCurrentUser()['logviewenabled']) {
return true; return true;
} elseif ((int)UI::getCurrentUser()['adminsession'] == 1) { } elseif ((int)UI::getCurrentUser()['adminsession'] == 1) {
@@ -129,7 +132,8 @@ class Domain
&& UI::getCurrentUser()['dnsenabled'] == '1' && UI::getCurrentUser()['dnsenabled'] == '1'
&& $attributes['fields']['caneditdomain'] == '1' && $attributes['fields']['caneditdomain'] == '1'
&& Settings::Get('system.bind_enable') == '1' && Settings::Get('system.bind_enable') == '1'
&& Settings::Get('system.dnsenabled') == '1'; && Settings::Get('system.dnsenabled') == '1'
&& !$attributes['fields']['deactivated'];
} }
public static function adminCanEditDNS(array $attributes): bool public static function adminCanEditDNS(array $attributes): bool
@@ -152,6 +156,7 @@ class Domain
&& (int)$attributes['fields']['caneditdomain'] == 1 && (int)$attributes['fields']['caneditdomain'] == 1
&& (int)$attributes['fields']['letsencrypt'] == 0 && (int)$attributes['fields']['letsencrypt'] == 0
&& (int)$attributes['fields']['email_only'] == 0 && (int)$attributes['fields']['email_only'] == 0
&& !$attributes['fields']['deactivated']
) { ) {
return true; return true;
} }

View File

@@ -63,7 +63,8 @@ class Style
$termination_css = 'bg-danger'; $termination_css = 'bg-danger';
} }
} }
return $attributes['fields']['deactivated'] ? 'bg-info' : $termination_css; $deactivated = $attributes['fields']['deactivated'] || $attributes['fields']['customer_deactivated'];
return $deactivated ? 'bg-info' : $termination_css;
} }
public static function resultCustomerLockedOrDeactivated(array $attributes): string public static function resultCustomerLockedOrDeactivated(array $attributes): string

View File

@@ -97,7 +97,13 @@ return [
'type' => 'date', 'type' => 'date',
'value' => $result['termination_date'], 'value' => $result['termination_date'],
'size' => 10 'size' => 10
] ],
'deactivated' => [
'label' => lng('admin.deactivated'),
'type' => 'checkbox',
'value' => '1',
'checked' => $result['deactivated']
],
] ]
], ],
'section_e' => [ 'section_e' => [