/** * Save all OTP data to DB * * @throws OtpException * @return bool */ public function save() { $fields = array('ACTIVE' => $this->isActivated() ? 'Y' : 'N', 'TYPE' => $this->getType(), 'ATTEMPTS' => $this->getAttempts(), 'SECRET' => $this->getHexSecret(), 'INITIAL_DATE' => $this->getInitialDate() ?: new Type\DateTime(), 'PARAMS' => $this->getParams(), 'SKIP_MANDATORY' => $this->isMandatorySkipped() ? 'Y' : 'N', 'DEACTIVATE_UNTIL' => $this->getDeactivateUntil()); if ($this->regenerated) { if (!$this->isInitialized()) { throw new OtpException('Missing OTP params, forgot to call syncParameters?'); } // Clear recovery codes when we connect new device RecoveryCodesTable::clearByUser($this->getUserId()); } if ($this->isDbRecordExists()) { $result = UserTable::update($this->getUserId(), $fields); } else { $fields += array('USER_ID' => $this->getUserId()); $result = UserTable::add($fields); } $this->clearGlobalCache(); return $result->isSuccess(); }
/** * Clear recovery codes after delete user * * @param Entity\Event $event Our event. * @return void * @throws \Bitrix\Main\ArgumentTypeException */ public static function onAfterDelete(Entity\Event $event) { $primary = $event->getParameter('primary'); RecoveryCodesTable::clearByUser($primary['USER_ID']); }