[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/plugins/system/webauthn/src/PluginTraits/ -> UserDeletion.php (source)

   1  <?php
   2  
   3  /**
   4   * @package     Joomla.Plugin
   5   * @subpackage  System.Webauthn
   6   *
   7   * @copyright   (C) 2020 Open Source Matters, Inc. <https://www.joomla.org>
   8   * @license     GNU General Public License version 2 or later; see LICENSE.txt
   9   */
  10  
  11  namespace Joomla\Plugin\System\Webauthn\PluginTraits;
  12  
  13  use Exception;
  14  use Joomla\CMS\Factory;
  15  use Joomla\CMS\Log\Log;
  16  use Joomla\Database\DatabaseDriver;
  17  use Joomla\Event\Event;
  18  use Joomla\Utilities\ArrayHelper;
  19  
  20  // phpcs:disable PSR1.Files.SideEffects
  21  \defined('_JEXEC') or die;
  22  // phpcs:enable PSR1.Files.SideEffects
  23  
  24  /**
  25   * Delete all WebAuthn credentials for a particular user
  26   *
  27   * @since   4.0.0
  28   */
  29  trait UserDeletion
  30  {
  31      /**
  32       * Remove all passwordless credential information for the given user ID.
  33       *
  34       * This method is called after user data is deleted from the database.
  35       *
  36       * @param   Event  $event  The event we are handling
  37       *
  38       * @return  void
  39       *
  40       * @since   4.0.0
  41       */
  42      public function onUserAfterDelete(Event $event): void
  43      {
  44          /**
  45           * @var   array       $user    Holds the user data
  46           * @var   bool        $success True if user was successfully stored in the database
  47           * @var   string|null $msg     Message
  48           */
  49          [$user, $success, $msg] = $event->getArguments();
  50  
  51          if (!$success) {
  52              $this->returnFromEvent($event, true);
  53          }
  54  
  55          $userId = ArrayHelper::getValue($user, 'id', 0, 'int');
  56  
  57          if ($userId) {
  58              Log::add("Removing WebAuthn Passwordless Login information for deleted user #{$userId}", Log::DEBUG, 'webauthn.system');
  59  
  60              /** @var DatabaseDriver $db */
  61              $db = Factory::getContainer()->get('DatabaseDriver');
  62  
  63              $query = $db->getQuery(true)
  64                  ->delete($db->qn('#__webauthn_credentials'))
  65                  ->where($db->qn('user_id') . ' = :userId')
  66                  ->bind(':userId', $userId);
  67  
  68              try {
  69                  $db->setQuery($query)->execute();
  70              } catch (Exception $e) {
  71                  // Don't worry if this fails
  72              }
  73  
  74              $this->returnFromEvent($event, true);
  75          }
  76      }
  77  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer