session()->read(Configure::read('Users.Key.Session.social')); if (empty($data)) { return false; } $socialMail = Hash::get((array)$data->info, Configure::read('Users.Key.Data.email')); if (!empty($socialMail)) { $data->email = $socialMail; $data->validated = true; } else { $data->email = $request->data(Configure::read('Users.Key.Data.email')); $data->validated = false; } $user = $this->_findOrCreateUser($data); return $user; } /** * Checks the social user against the database * * @param array $data User data array. * @return mixed */ protected function _findOrCreateUser($data) { $userModel = Configure::read('Users.table'); $User = TableRegistry::get($userModel); $options = [ 'use_email' => Configure::read('Users.Email.required'), 'validate_email' => Configure::read('Users.Email.validate'), 'token_expiration' => Configure::read('Users.Token.expiration') ]; $user = $User->socialLogin($data, $options); if (!empty($user->username)) { $user = $this->_findUser($user->username); } return $user; } }