fix: handle missing server_permissions table gracefully
- Wrap ServerPermission queries in try-catch so show/edit don't 500 when the migration hasn't been run yet - Same protection for save calls in store/update (both web and API)
This commit is contained in:
@@ -178,8 +178,12 @@ class ApiController
|
|||||||
$id = $serverModel->create($input);
|
$id = $serverModel->create($input);
|
||||||
|
|
||||||
if (!empty($permissions)) {
|
if (!empty($permissions)) {
|
||||||
|
try {
|
||||||
$permModel = new ServerPermission();
|
$permModel = new ServerPermission();
|
||||||
$permModel->save($id, $permissions);
|
$permModel->save($id, $permissions);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
// Table may not exist yet
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->json([
|
$this->view->json([
|
||||||
@@ -238,8 +242,12 @@ class ApiController
|
|||||||
$serverModel->update($id, $input);
|
$serverModel->update($id, $input);
|
||||||
|
|
||||||
if (!empty($permissions)) {
|
if (!empty($permissions)) {
|
||||||
|
try {
|
||||||
$permModel = new ServerPermission();
|
$permModel = new ServerPermission();
|
||||||
$permModel->save($id, $permissions);
|
$permModel->save($id, $permissions);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
// Table may not exist yet
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view->json([
|
$this->view->json([
|
||||||
|
|||||||
@@ -163,12 +163,18 @@ class ServerController
|
|||||||
$id = $this->serverModel->create($data);
|
$id = $this->serverModel->create($data);
|
||||||
|
|
||||||
if (!empty($permissions)) {
|
if (!empty($permissions)) {
|
||||||
|
try {
|
||||||
$permModel = new ServerPermission();
|
$permModel = new ServerPermission();
|
||||||
$permModel->save($id, $permissions);
|
$permModel->save($id, $permissions);
|
||||||
|
|
||||||
$this->auditService->log('server_permissions_set', 'server', $id, [
|
$this->auditService->log('server_permissions_set', 'server', $id, [
|
||||||
'count' => count($permissions),
|
'count' => count($permissions),
|
||||||
]);
|
]);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$this->auditService->log('server_permissions_set_failed', 'server', $id, [
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->auditService->log('server_created', 'server', $id, [
|
$this->auditService->log('server_created', 'server', $id, [
|
||||||
@@ -215,8 +221,12 @@ class ServerController
|
|||||||
|
|
||||||
$groups = $this->serverModel->getGroups();
|
$groups = $this->serverModel->getGroups();
|
||||||
|
|
||||||
|
try {
|
||||||
$permModel = new ServerPermission();
|
$permModel = new ServerPermission();
|
||||||
$permissions = $permModel->getByServerId($id);
|
$permissions = $permModel->getByServerId($id);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$permissions = [];
|
||||||
|
}
|
||||||
|
|
||||||
$this->view->display('servers.edit', [
|
$this->view->display('servers.edit', [
|
||||||
'title' => 'Edit ' . $server['name'] . ' - ServerManager',
|
'title' => 'Edit ' . $server['name'] . ' - ServerManager',
|
||||||
@@ -291,12 +301,18 @@ class ServerController
|
|||||||
|
|
||||||
$this->serverModel->update($id, $data);
|
$this->serverModel->update($id, $data);
|
||||||
|
|
||||||
|
try {
|
||||||
$permModel = new ServerPermission();
|
$permModel = new ServerPermission();
|
||||||
$permModel->save($id, $permissions);
|
$permModel->save($id, $permissions);
|
||||||
|
|
||||||
$this->auditService->log('server_permissions_set', 'server', $id, [
|
$this->auditService->log('server_permissions_set', 'server', $id, [
|
||||||
'count' => count($permissions),
|
'count' => count($permissions),
|
||||||
]);
|
]);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$this->auditService->log('server_permissions_set_failed', 'server', $id, [
|
||||||
|
'error' => $e->getMessage(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
$this->auditService->log('server_updated', 'server', $id, [
|
$this->auditService->log('server_updated', 'server', $id, [
|
||||||
'name' => $data['name'],
|
'name' => $data['name'],
|
||||||
@@ -316,8 +332,12 @@ class ServerController
|
|||||||
$latestMetrics = $monitoringService->getLatestMetrics($id);
|
$latestMetrics = $monitoringService->getLatestMetrics($id);
|
||||||
$historicalMetrics = $monitoringService->getHistoricalMetrics($id, 24);
|
$historicalMetrics = $monitoringService->getHistoricalMetrics($id, 24);
|
||||||
|
|
||||||
|
try {
|
||||||
$permModel = new ServerPermission();
|
$permModel = new ServerPermission();
|
||||||
$permissions = $permModel->getByServerId($id);
|
$permissions = $permModel->getByServerId($id);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
$permissions = [];
|
||||||
|
}
|
||||||
|
|
||||||
$this->view->display('servers.show', [
|
$this->view->display('servers.show', [
|
||||||
'title' => $server['name'] . ' - ServerManager',
|
'title' => $server['name'] . ' - ServerManager',
|
||||||
|
|||||||
Reference in New Issue
Block a user