*/ class ActivityPublisher implements IEventListener { public function __construct( private IManager $activityManager, private LoggerInterface $logger, ) { } /** * Push an event to the user's activity stream */ public function handle(Event $event): void { if ($event instanceof CodesGenerated) { $activity = $this->activityManager->generateEvent(); $activity->setApp('twofactor_backupcodes') ->setType('security') ->setAuthor($event->getUser()->getUID()) ->setAffectedUser($event->getUser()->getUID()) ->setSubject('codes_generated'); try { $this->activityManager->publish($activity); } catch (BadMethodCallException $e) { $this->logger->error('Could not publish backup code creation activity', ['exception' => $e]); } } } }