addArgument('tenant', InputArgument::REQUIRED, 'Tenant identifier') ->addArgument('identity', InputArgument::REQUIRED, 'User identity (email/username)') ->addOption('force', 'f', InputOption::VALUE_NONE, 'Skip confirmation prompt') ->setHelp('This command deletes a user account from a tenant. Credentials stored by authentication provider modules are not removed.') ; } protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $tenant = $input->getArgument('tenant'); $identity = $input->getArgument('identity'); $force = $input->getOption('force'); $io->title('Delete User'); try { $user = $this->userStore->fetchByIdentity($tenant, $identity); if (!$user) { $io->error("User '{$identity}' not found in tenant '{$tenant}'."); return Command::FAILURE; } if (!$force && !$io->confirm("Are you sure you want to delete user '{$identity}' from tenant '{$tenant}'?", false)) { $io->text('Delete cancelled.'); return Command::SUCCESS; } if (!$this->userStore->deleteUser($tenant, $user['uid'])) { $io->error("Failed to delete user '{$identity}'."); return Command::FAILURE; } $this->logger->info('User deleted via console', [ 'tenant' => $tenant, 'identity' => $identity, 'uid' => $user['uid'], 'command' => $this->getName(), ]); $io->success("User '{$identity}' deleted successfully!"); return Command::SUCCESS; } catch (\Throwable $e) { $io->error('Failed to delete user: ' . $e->getMessage()); $this->logger->error('User delete failed', [ 'tenant' => $tenant, 'identity' => $identity, 'error' => $e->getMessage(), ]); return Command::FAILURE; } } }