Регистрация через сторонние сервисы

Подскажите пожалуйста, при регистрации через соцсети не приходит уведомлений о регистрации. Была идея прикрутить выдачу куппонов при регистрации и этот фейл сильно расстроил.

Так задумано и надо самому прикрутить или это мой локальный баг?

Пробовал через разные сервисы авторизации, разные почты, менял с подтверждением и без) Новый контакт создается.

При штатной регистрации все нормально.

Немного по коду посмотрел, такое впечатление, что регистрация через адаптеры авторизации, это как бы авторизация для wa. Если не сложно подскажите то место, где идет таки добавление нового контакта в БД.

4 ответа

  • 2
    Михаил Ушенин Webasyst 8 февраля 2019 17:52 #

    Напишите плагин для приложения «Сайт», подпишитесь на системное событие 'signup'

    'handlers' => array (
        '*' => array(
            array(
                'event_app_id' => '*',
                'event'        => 'signup',
                'class'        => 'siteMyPlugin',
                'method'       => 'webasystSignup'
            )
        ),
    ),

    и отслеживайте в плагине все факты создания контактов через систему авторизации.

  • 1
    Дмитрий 8 февраля 2019 20:24 #

    Может я где ошибся, но никак не запущу.

    Плагин sendpromo

    /wa-apps/site/plugins/sendpromo/lib/config/plugin.php

    <?php
    return array (
        'name' => 'Sendpromo',
        'description' => 'test',
        'icon' => 'img/plugin.png',
        'img' => 'img/plugin.png',
        'version' => '',
        'vendor' => '',
        'frontend' => false,
        'handlers' => array (
            '*' => array(
                array(
                    'event_app_id' => '*',
                    'event'        => 'signup',
                    'class'        => 'siteSendpromoPlugin',
                    'method'       => 'webasystSignup'
                )
            ),
        ),
    );

    /wa-apps/site/plugins/sendpromo/lib/siteSendpromoPlugin.class.php

    <?php
    
    class siteSendpromoPlugin extends sitePlugin
    {
                $subject = "test subject";
                $body = "test body";
    
                $mail_message = new waMailMessage($subject, $body);
                $mail_message->setFrom('______', 'Робот');
                $mail_message->setTo('_____', 'Дмитрий');
                $mail_message->send();
    
    }

    Для понимания срабатывает ли, письмо себе отправляю. Писем/ошибок нет(

  • 1
    Дмитрий 11 февраля 2019 00:32 #

    Спасибо, что подсказали!

    Вот так в результате вышло, если сильно накосячил напишите плз.

    <?php
    
    class siteSendpromoPlugin extends sitePlugin
    {
    
    	private static $view;
    	private static $plugin;
    
    	private static function getPlugin()
    	{
    		if (!isset(self::$plugin)) {
    			self::$plugin = wa('site')->getPlugin('sendpromo');
    		}
    		return self::$plugin;
    	}
    
    	public function getPluginPath() {
    		return $this->path;
    	}
    
    	private static function getView()
    	{
    		if (!isset(self::$view)) {
    		self::$view = waSystem::getInstance()->getView();
    		}
    		return self::$view;
    	}
    
    	public function webasystSignup($data)
    	{
    			$config = wa('shop')->getConfig();
    			$view = self::getView();
    			$plugin = self::getPlugin();
    			$settings = $plugin->getSettings();
    
    			$contact = new waContact($data['id']);
    			$contact_email = $contact->get('email', 'value');
    			$contact_create_method = $contact->get('create_method', 'value');
    			$contact_name = $contact->getName();
    			$metods = array('yandex', 'facebook', 'google', 'mailru', 'vkontakte', 'twitter');
    			if (in_array($contact_create_method, $metods))
    			{
    				$body = $view->fetch($plugin->getPluginPath() . '/templates/successful_signup.html');
    				$mail_message = new waMailMessage($settings['subject'], $body);
    				$mail_message->setFrom($config->getGeneralSettings('email'), $config->getGeneralSettings('name'));
    				$mail_message->setTo($contact_email[0], $contact_name);
    				$mail_message->send();
    			}
    
    	}
    }

    • +1
      enso_studio@mail.ru enso_studio@mail.ru 11 февраля 2019 11:06 #

      Судя по коду Вы явно программист, но либо пишите на чем-то экзотическом и далеком от си-подобных языков, либо давно забросили. На PHP так не пишут, но в тех. плане - все ок.

      • +1
        Дмитрий Дмитрий 11 февраля 2019 11:53 #

        Спасибо, что проверили. Хобби такое, пишу для своих проектов под узкие задачи, если готовых решений нет, но в плагинах не было необходимости.

        Кстати никого это не удивляет, почему таки при штатном действии (регистрация через сервисы) нет взаимодействия с посетителем? Система тупо кидает их БД, как и любого бота, заполнившего форму)

        • +1
          enso_studio@mail.ru enso_studio@mail.ru 11 февраля 2019 21:03 #

          Это может удивить только постороних людей, WA ставит минусы за публикацию багов в их коде.

        • +1
          Михаил Ушенин Михаил Ушенин Webasyst 12 февраля 2019 09:06 #

          Если вам нужно изменить поведение системы, предложите, что вам нужно, в отдельной теме, выбрав тип сообщения «Идея». Это будет продуктивнее, чем обсуждать ваши ожидания в комментариях.

  • 0
    Дмитрий 10 февраля 2019 13:50 #

    Вы хотите помочь? Выложите решение, можете помочь за деньги - объявите стоимость. А по первому комментарию, ну так себе предложение.

    • +1
      enso_studio@mail.ru enso_studio@mail.ru 10 февраля 2019 14:44 #

      <?php
      
      class siteSendpromoPlugin extends sitePlugin
      {
            public function webasystSignup()
            {
                  $subject = "test subject";
                  $body = "test body";
      
                  $mail_message = new waMailMessage($subject, $body);
                  $mail_message->setFrom('______', 'Робот');
                  $mail_message->setTo('_____', 'Дмитрий');
                  $mail_message->send();
            }
      }

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите