文件路径:vendor\fancyecommerce\fecshop\app\apphtml5\modules\Customer\controllers\GoogleController.php
在GoogleController代码中$user没有password字段
/**
* google账户登录.
*/
public function accountLogin($full_name, $email)
{
$name_arr = explode(' ', $full_name);
$first_name = $name_arr[0];
$last_name = $name_arr[1];
$user = [
'first_name' =>$first_name,
'last_name' =>$last_name,
'email' =>$email,
];
Yii::$service->customer->registerThirdPartyAccountAndLogin($user, 'google');
echo '<script>
window.close();
window.opener.location.reload();
</script>';
exit;
}
所以在vendor\fancyecommerce\fecshop\services\Customer.php 中每次都会getRandomPassword(),在登录的时候login($user)就会每次都用新密码去验证
protected function actionRegisterThirdPartyAccountAndLogin($user, $type)
{
if (!(isset($user['password']) && $user['password'])) {
$user['password'] = $this->getRandomPassword();
}
// 查看邮箱是否存在
$email = $user['email'];
$customer_one = Yii::$service->customer->getUserIdentityByEmail($email);
Yii::info($customer_one,'fecshop_debug');
if ($customer_one) {
$loginStatus = Yii::$service->customer->login($user);
Yii::info($loginStatus,'fecshop_debug');
if ($loginStatus) {
return true;
}
// 不存在,注册。
} else {
$registerData = [
'email' => $email,
'firstname' => $user['first_name'],
'lastname' => $user['last_name'],
'password' => $user['password'],
'type' => $type,
];
$registerStatus = Yii::$service->customer->register($registerData);
if ($registerStatus) {
$loginStatus = Yii::$service->customer->login($registerData);
if ($loginStatus) {
return true;
}
}
}
return false;
}