acquia_commercemanager-8.x-1.122/modules/acm_customer/src/Plugin/rest/resource/CustomerDeleteResource.php
modules/acm_customer/src/Plugin/rest/resource/CustomerDeleteResource.php
<?php namespace Drupal\acm_customer\Plugin\rest\resource; use Drupal\Core\Entity\EntityStorageException; use Drupal\rest\ModifiedResourceResponse; use Drupal\rest\Plugin\ResourceBase; use Drupal\user\UserInterface; /** * Class CustomerDeleteResource. * * @package Drupal\acm_customer\Plugin * * @ingroup acm_customer * * @RestResource( * id = "acm_customer_delete", * label = @Translation("Acquia Commerce Customer Delete"), * uri_paths = { * "canonical" = "/customer/delete", * "https://www.drupal.org/link-relations/create" = "/customer/delete" * } * ) */ class CustomerDeleteResource extends ResourceBase { /** * Post. * * Handle Connector deleting a customer. * * @param array $data * Post data. * * @return \Drupal\rest\ModifiedResourceResponse * HTTP Response. */ public function post(array $data) { // If 'email' key is not available. if (!isset($data['email'])) { $this->logger->error('Invalid data to delete customer.'); $response['success'] = (bool) (FALSE); return (new ModifiedResourceResponse($response)); } $email = $data['email']; $user = $this->myUserLoadByMail($email); // If there is user with given email. if ($user instanceof UserInterface) { try { $user->delete(); $this->logger->info('Deleted user with uid %id and email %email.', [ '%id' => $user->id(), '%email' => $email, ]); } catch (EntityStorageException $e) { $this->logger->error('Failed to delete user with email %email. Exception: @message', [ '%email' => $email, '@message' => $e->getMessage(), ]); } } else { $this->logger->warning('User with email %email does not exist.', ['%email' => $email]); } // For exception or missing user we have added entries in logs. // We don't want ACM to try again if message is processed successfully. $response['success'] = TRUE; return (new ModifiedResourceResponse($response)); } /** * Wrapper around user_load_by_mail to allow for stubbing during testing. * * @return \Drupal\user\UserInterface|null * User entity object or null. */ public function myUserLoadByMail($email) { return user_load_by_mail($email); } }