2015-05-25 3 views
0

Я прочитал описание over,HybridAuth CakePHP3.X, как сохранить пользователя после успешного входа?

После аутентификации пользователя через провайдер аутентификатора получает профиль пользователя от провайдера идентификации и использование, который пытается найти соответствующую запись пользователя в таблице пользователей вашего приложения. Если ни один пользователь не найден, и указан параметр registrationCallback, указанный метод из модели пользователя вызывается. Вы можете использовать обратный вызов для сохранения записи пользователя в базе данных.

Но где определить/объявить registrationCallback

ответ

0

Если вы хотите пользователю зарегистрироваться, если не существует, то этот код будет выполняться:

if (!empty($this->_config['registrationCallback'])) { 
      $return = call_user_func_array(
       [ 
        TableRegistry::get($userModel), 
        $this->_config['registrationCallback'] 
       ], 
       [$provider, $providerProfile] 
      ); 
      if ($return) { 
       $user = $this->_fetchUserFromDb($conditions); 
       if ($user) { 
        return $user; 
       } 
      } 

Вы должны определить функцию регистрации в конфигурации (в __construct) и в отношении call_user_func_array прочесть эту ссылку - https://php.net/call-user-func-array

0

Чтобы сохранить пользователя в базе после входа

1> определяет функцию в UsersTabel.php

public function registration($provider, $profile) { 
     $user = $this->newEntity([ 
            'username'  => $profile->displayName, 
            'provider'  => $provider, 
            'provider_uid' => $profile->identifier 
           ]); 
     if(!$this->save($user)) 
     { 
      Log::write(LOG_ERR, 'Failed to create new user record'); 
      return false; 
     } 
     return true; 
    } 

2> Заменить функцию поставщика файла ▸ ▸ admad CakePHP-hybridauth ▸ ▸ SRC Auth▸ HybridAuthAuthenticate.php

public function __construct(ComponentRegistry $registry, $config) 
    { 
     $this->config([ 
      'fields' => [ 
       'provider' => 'provider', 
       'provider_uid' => 'provider_uid', 
       'openid_identifier' => 'openid_identifier' 
      ], 
      'hauth_return_to' => null, 
      'registrationCallback'=>'registration' 
     ]); 

     parent::__construct($registry, $config); 
    }