Skip to content
Snippets Groups Projects
Commit 35812ed3 authored by baldwinlouie's avatar baldwinlouie Committed by Yas Naoi
Browse files

Issue #3221336 by baldwinlouie, yas, Xiaohua Guan: Add remaining k8s view...

Issue #3221336 by baldwinlouie, yas, Xiaohua Guan: Add remaining k8s view routes to k8s_build_owner_query_condition($query)
parent 6b56ac6d
No related branches found
No related tags found
No related merge requests found
Showing
with 55 additions and 59 deletions
......@@ -382,8 +382,53 @@ function k8s_form_alter(array &$form, FormStateInterface $form_state, $form_id)
/**
* Implements hook_query_TAG_Alter().
*
* Combined k8s_entity_views_access and ks8s_entity_views_access_with_namespace.
*/
function k8s_query_k8s_entity_views_access_with_namespace_alter(AlterableInterface $query) {
function k8s_query_k8s_entity_views_access_alter(AlterableInterface $query): void {
$route_name = \Drupal::routeMatch()->getRouteName();
// Check for namespaced route access.
$namespaced_routes = [
'view.k8s_config_map.list',
'view.k8s_cron_job.list',
'view.k8s_daemon_set.list',
'view.k8s_deployment.list',
'view.k8s_horizontal_pod_autoscaler.list',
'view.k8s_ingress.list',
'view.k8s_job.list',
'view.k8s_limit_range.list',
'view.k8s_network_policy.list',
'view.k8s_persistent_volume_claim.list',
'view.k8s_pod.list',
'view.k8s_replica_set.list',
'view.k8s_resource_quota.list',
'view.k8s_role.list',
'view.k8s_role_binding.list',
'view.k8s_secret.list',
'view.k8s_service.list',
'view.k8s_service_account.list',
'view.k8s_stateful_set.list',
];
if (in_array($route_name, $namespaced_routes)) {
k8s_build_namespace_query_condition($query);
}
// Add owner condition.
k8s_build_owner_query_condition($query);
}
/**
* Add namespace checking to K8s view queries.
*
* @param \Drupal\Core\Database\Query\AlterableInterface $query
* The query class.
*
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
*/
function k8s_build_namespace_query_condition(AlterableInterface $query): void {
if (!$account = $query->getMetaData('account')) {
$account = \Drupal::currentUser();
}
......@@ -407,7 +452,10 @@ function k8s_query_k8s_entity_views_access_with_namespace_alter(AlterableInterfa
// Get namespaces.
$entity_storage = \Drupal::entityTypeManager()->getStorage('k8s_namespace');
$namespace_query = $entity_storage->getQuery();
$namespace_query = $entity_storage
->getQuery()
->accessCheck(TRUE);
if (!empty($cloud_context)) {
$namespace_query = $namespace_query->condition('cloud_context', $cloud_context);
}
......@@ -430,23 +478,6 @@ function k8s_query_k8s_entity_views_access_with_namespace_alter(AlterableInterfa
// Add a dummy condition to make result empty.
$query->condition('namespace', '');
}
// Add owner condition.
$target_route_names = [
'view.k8s_pod.list',
'view.k8s_deployment.list',
];
$route_name = $route->getRouteName();
if (in_array($route_name, $target_route_names)) {
k8s_build_owner_query_condition($query);
}
}
/**
* Implements hook_query_TAG_Alter().
*/
function k8s_query_k8s_entity_views_access_alter(AlterableInterface $query) {
return k8s_build_owner_query_condition($query);
}
/**
......
......@@ -23,9 +23,6 @@ class K8sConfigMapViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_config_map']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_config_map']['table']['base']['query metadata'] = ['base_table' => 'k8s_config_map'];
return $data;
}
......
......@@ -23,9 +23,6 @@ class K8sCronJobViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_cron_job']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_cron_job']['table']['base']['query metadata'] = ['base_table' => 'k8s_cron_job'];
return $data;
}
......
......@@ -23,9 +23,6 @@ class K8sDeploymentViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_deployment']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_deployment']['table']['base']['query metadata'] = ['base_table' => 'k8s_deployment'];
return $data;
}
......
......@@ -23,9 +23,6 @@ class K8sHorizontalPodAutoscalerViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_horizontal_pod_autoscaler']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_horizontal_pod_autoscaler']['table']['base']['query metadata'] = ['base_table' => 'k8s_horizontal_pod_autoscaler'];
return $data;
}
......
......@@ -23,9 +23,6 @@ class K8sJobViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_job']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_job']['table']['base']['query metadata'] = ['base_table' => 'k8s_job'];
return $data;
}
......
......@@ -23,9 +23,6 @@ class K8sLimitRangeViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_limit_range']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_limit_range']['table']['base']['query metadata'] = ['base_table' => 'k8s_limit_range'];
return $data;
}
......
......@@ -21,7 +21,6 @@ class K8sNamespaceViewsData extends K8sViewsDataBase {
],
];
$data['k8s_namespace']['table']['base']['access query tag'] = 'k8s_entity_views_access';
// Additional information for Views integration, such as table joins, can be
// put here.
return $data;
......
......@@ -23,9 +23,6 @@ class K8sNetworkPolicyViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_network_policy']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_network_policy']['table']['base']['query metadata'] = ['base_table' => 'k8s_network_policy'];
return $data;
}
......
......@@ -23,9 +23,6 @@ class K8sPodViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_pod']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_pod']['table']['base']['query metadata'] = ['base_table' => 'k8s_pod'];
$data['k8s_pod']['node_name']['argument'] = [
'id' => 'k8s_node_id',
];
......
......@@ -23,9 +23,6 @@ class K8sReplicaSetViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_replica_set']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_replica_set']['table']['base']['query metadata'] = ['base_table' => 'k8s_replica_set'];
return $data;
}
......
......@@ -23,9 +23,6 @@ class K8sResourceQuotaViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_resource_quota']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_resource_quota']['table']['base']['query metadata'] = ['base_table' => 'k8s_resource_quota'];
return $data;
}
......
......@@ -23,9 +23,6 @@ class K8sRoleViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_role']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_role']['table']['base']['query metadata'] = ['base_table' => 'k8s_role'];
return $data;
}
......
......@@ -23,9 +23,6 @@ class K8sSecretViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_secret']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_secret']['table']['base']['query metadata'] = ['base_table' => 'k8s_secret'];
return $data;
}
......
......@@ -23,9 +23,6 @@ class K8sServiceViewsData extends K8sViewsDataBase {
// Additional information for Views integration, such as table joins, can be
// put here.
$data['k8s_service']['table']['base']['access query tag'] = 'k8s_entity_views_access_with_namespace';
$data['k8s_service']['table']['base']['query metadata'] = ['base_table' => 'k8s_service'];
return $data;
}
......
......@@ -39,6 +39,11 @@ class K8sViewsDataBase extends EntityViewsData {
'base field' => 'cloud_context',
'relationship field' => 'cloud_context',
];
// Add access check query tag.
$data[$base_table]['table']['base']['access query tag'] = 'k8s_entity_views_access';
$data[$base_table]['table']['base']['query metadata'] = ['base_table' => $base_table];
return $data;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment