function apigee_edge_apiproduct_rbac_form_apigee_edge_api_product_access_control_form_submit in Apigee Edge 8
Saves RBAC settings on the API product access control form.
See also
apigee_edge_apiproduct_rbac_form_apigee_edge_api_product_access_control_form_alter()
1 string reference to 'apigee_edge_apiproduct_rbac_form_apigee_edge_api_product_access_control_form_submit'
- apigee_edge_apiproduct_rbac_form_apigee_edge_api_product_access_control_form_alter in modules/
apigee_edge_apiproduct_rbac/ apigee_edge_apiproduct_rbac.module - Implements hook_form_FORM_ID_alter().
File
- modules/
apigee_edge_apiproduct_rbac/ apigee_edge_apiproduct_rbac.module, line 245 - Copyright 2018 Google Inc.
Code
function apigee_edge_apiproduct_rbac_form_apigee_edge_api_product_access_control_form_submit(array $form, FormStateInterface $form_state) {
$config = Drupal::configFactory()
->getEditable(APIGEE_EDGE_APIPRODUCT_RBAC_CONFIG_SETTINGS);
$config
->set('attribute_name', $form_state
->getValue([
'rbac',
'attribute_name',
]))
->set('grant_access_if_attribute_missing', (bool) $form_state
->getValue([
'rbac',
'grant_access_if_attribute_missing',
], FALSE))
->save();
/** @var \Apigee\Edge\Api\Management\Controller\ApiProductControllerInterface $controller */
$rid_product_map = [];
foreach ($form_state
->getValue([
'rbac',
'role_names',
], []) as $rid => $name) {
// Do not store roles with by pass permission in the attribute
// unnecessarily.
if (!$form_state
->getValue([
'rbac',
'roles_with_bypass',
$rid,
], FALSE)) {
$rid_product_map[$rid] = array_filter($form_state
->getValue([
'rbac',
$rid,
], []));
}
}
$product_rid_map = [];
foreach ($rid_product_map as $rid => $products) {
foreach (array_keys($products) as $product) {
$product_rid_map[$product][$rid] = $rid;
}
}
_apigee_edge_apiproduct_rbac_batch($form_state
->getValue([
'rbac',
'api_products',
'product_names',
]), $product_rid_map, $config
->get('attribute_name'), $form_state
->getValue([
'rbac',
'original_attribute_name',
]));
}