Skip to content
Snippets Groups Projects
Commit ad6e475e authored by Bojan Bogdanovic's avatar Bojan Bogdanovic
Browse files

Issue #3512143: Add extra checks in simple_oauth_update_8604

parent 418ede91
No related branches found
No related tags found
1 merge request!177Issue #3512143: Add extra checks in simple_oauth_update_8604
Pipeline #466511 passed with warnings
......@@ -280,7 +280,6 @@ function simple_oauth_update_8603() {
* Migrate roles used as scope and migrate settings to the consumer.
*/
function simple_oauth_update_8604() {
$scopes = [];
$consumers = \Drupal::entityTypeManager()->getStorage('consumer')->loadMultiple();
$grant_types = array_keys(Oauth2GrantManager::getAvailablePluginsAsOptions());
$config = \Drupal::configFactory()->get('simple_oauth.settings');
......@@ -291,13 +290,20 @@ function simple_oauth_update_8604() {
->execute()
->fetchAll();
$scopes = [];
foreach ($role_values as $role_value) {
/** @var \Drupal\user\RoleInterface $role */
$role = \Drupal::entityTypeManager()->getStorage('user_role')->load($role_value->roles_target_id);
// Role doesn't exist, so don't do anything.
if (!$role) {
continue;
}
// Scope already exist.
if (\Drupal::entityTypeManager()->getStorage('oauth2_scope')->load($role->id())) {
continue;
}
// Scope doesn't exist, so we need to create one.
if (!isset($scopes[$role->id()])) {
$scope = Oauth2Scope::create([
Oauth2Scope::create([
'name' => $role->id(),
'description' => $role->label(),
'grant_types' => [
......@@ -307,10 +313,7 @@ function simple_oauth_update_8604() {
],
'granularity' => Oauth2ScopeInterface::GRANULARITY_ROLE,
'role' => $role->id(),
]);
$scope->save();
$scopes[$role->id()] = $scope;
}
])->save();
$insert_query = $database->insert('consumer__scopes')
->fields([
......@@ -336,6 +339,17 @@ function simple_oauth_update_8604() {
foreach ($consumers as $consumer) {
foreach ($grant_types as $delta => $grant_type) {
$grant_type_exist = $database->select('consumer__grant_types', 'gc')
->fields('gc', ['entity_id'])
->condition('gc.entity_id', $consumer->id())
->condition('gc.langcode', $consumer->language()->getId())
->condition('gc.grant_types_value', $grant_type)
->execute()
->fetchField();
// Grant type already exist.
if ($grant_type_exist) {
continue;
}
$insert_query = $database->insert('consumer__grant_types')
->fields([
'bundle',
......@@ -371,8 +385,10 @@ function simple_oauth_update_8604() {
// Remove roles field.
$entity_definition_update_manager = \Drupal::entityDefinitionUpdateManager();
$roles_field_definition = $entity_definition_update_manager->getFieldStorageDefinition('roles', 'consumer');
if ($roles_field_definition) {
$entity_definition_update_manager->uninstallFieldStorageDefinition($roles_field_definition);
}
}
/**
* Install/delete scopes BaseField for the oauth2_token entity.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment