1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-07-05 00:11:30 +08:00
# Conflicts:
#	app/Http/Admin/Views/templates/main.volt
#	app/Http/Home/Controllers/ConnectController.php
#	app/Http/Home/Services/Connect.php
#	app/Services/OAuth/QQ.php
#	app/Services/OAuth/WeiBo.php
#	app/Services/OAuth/WeiXin.php
This commit is contained in:
xiaochong0302 2020-12-08 17:17:13 +08:00
commit 83580d330d
8 changed files with 63 additions and 50 deletions

View File

@ -115,12 +115,11 @@ class ConnectController extends Controller
$service = new ConnectService(); $service = new ConnectService();
$openUser = $service->getOpenUserInfo($code, $state, $provider); $openUser = $service->getOpenUserInfo($code, $state, $provider);
$connect = $service->getConnectRelation($openUser['id'], $openUser['provider']);
$connect = $service->getConnectRelation($openUser['id'], $provider);
if ($connect && $connect->deleted == 0) { if ($connect && $connect->deleted == 0) {
if ($this->authUser->id > 0) { if ($this->authUser->id > 0) {
$service->bindUser($openUser, $provider); $service->bindUser($openUser);
return $this->response->redirect(['for' => 'home.uc.account']); return $this->response->redirect(['for' => 'home.uc.account']);
} else { } else {
$service->authLogin($connect); $service->authLogin($connect);

View File

@ -30,7 +30,7 @@ class Connect extends Service
$openUser = json_decode($post['open_user'], true); $openUser = json_decode($post['open_user'], true);
$this->handleConnectRelation($user, $openUser, $post['provider']); $this->handleConnectRelation($user, $openUser);
$auth = $this->getAppAuth(); $auth = $this->getAppAuth();
@ -55,18 +55,18 @@ class Connect extends Service
$user = $userRepo->findById($account->id); $user = $userRepo->findById($account->id);
$this->handleConnectRelation($user, $openUser, $post['provider']); $this->handleConnectRelation($user, $openUser);
$auth = $this->getAppAuth(); $auth = $this->getAppAuth();
$auth->saveAuthInfo($user); $auth->saveAuthInfo($user);
} }
public function bindUser($openUser, $provider) public function bindUser(array $openUser)
{ {
$user = $this->getLoginUser(); $user = $this->getLoginUser();
$this->handleConnectRelation($user, $openUser, $provider); $this->handleConnectRelation($user, $openUser);
} }
public function authLogin(ConnectModel $connect) public function authLogin(ConnectModel $connect)
@ -173,24 +173,27 @@ class Connect extends Service
return $auth; return $auth;
} }
protected function handleConnectRelation(UserModel $user, array $openUser, $provider) protected function handleConnectRelation(UserModel $user, array $openUser)
{ {
$connectRepo = new ConnectRepo(); $connectRepo = new ConnectRepo();
$connect = $connectRepo->findByOpenId($openUser['id'], $provider); $connect = $connectRepo->findByOpenId($openUser['id'], $openUser['provider']);
if ($connect) { if ($connect) {
if (time() - $connect->update_time > 86400) { $connect->open_name = $openUser['name'];
$connect->open_name = $openUser['name']; $connect->open_avatar = $openUser['avatar'];
$connect->open_avatar = $openUser['avatar'];
if ($connect->user_id != $user->id) {
$connect->user_id = $user->id;
} }
if ($connect->deleted == 1) { if ($connect->deleted == 1) {
$connect->deleted = 0; $connect->deleted = 0;
$connect->update();
} }
$connect->update();
} else { } else {
$connect = new ConnectModel(); $connect = new ConnectModel();
@ -199,7 +202,7 @@ class Connect extends Service
$connect->open_id = $openUser['id']; $connect->open_id = $openUser['id'];
$connect->open_name = $openUser['name']; $connect->open_name = $openUser['name'];
$connect->open_avatar = $openUser['avatar']; $connect->open_avatar = $openUser['avatar'];
$connect->provider = $provider; $connect->provider = $openUser['provider'];
$connect->create(); $connect->create();
} }

View File

@ -51,7 +51,7 @@
<div class="security-item"> <div class="security-item">
<span class="icon"><i class="layui-icon layui-icon-email"></i></span> <span class="icon"><i class="layui-icon layui-icon-email"></i></span>
<span class="title">邮箱绑定</span> <span class="title">邮箱绑定</span>
{% if account.phone %} {% if account.email %}
<span class="summary">已绑定邮箱:{{ account.email|anonymous }}</span> <span class="summary">已绑定邮箱:{{ account.email|anonymous }}</span>
<span class="action"><a class="layui-btn layui-btn-sm btn-edit-email" href="{{ edit_email_url }}">修改</a></span> <span class="action"><a class="layui-btn layui-btn-sm btn-edit-email" href="{{ edit_email_url }}">修改</a></span>
{% else %} {% else %}

View File

@ -7,6 +7,8 @@
{% set full_user_url = full_url({'for':'home.user.show','id':user.id}) %} {% set full_user_url = full_url({'for':'home.user.show','id':user.id}) %}
{% set qrcode_url = url({'for':'home.qrcode'},{'text':full_user_url}) %} {% set qrcode_url = url({'for':'home.qrcode'},{'text':full_user_url}) %}
{% set user.area = user.area ? user.area : '火星' %}
{% set user.about = user.about ? user.about : '这个家伙很懒,什么都没留下!' %}
<div class="breadcrumb"> <div class="breadcrumb">
<span class="layui-breadcrumb"> <span class="layui-breadcrumb">
@ -32,9 +34,7 @@
<p><span><i class="layui-icon layui-icon-location"></i></span><span>{{ user.area }}</span></p> <p><span><i class="layui-icon layui-icon-location"></i></span><span>{{ user.area }}</span></p>
<p><span><i class="layui-icon layui-icon-time"></i></span><span>{{ date('Y-m-d H:i',user.active_time) }}</span></p> <p><span><i class="layui-icon layui-icon-time"></i></span><span>{{ date('Y-m-d H:i',user.active_time) }}</span></p>
</div> </div>
{% if user.about %} <div class="about">{{ user.about }}</div>
<div class="about">{{ user.about }}</div>
{% endif %}
</div> </div>
{% set show_tab_courses = user.course_count > 0 %} {% set show_tab_courses = user.course_count > 0 %}

View File

@ -2,6 +2,7 @@
namespace App\Services\Logic\Account; namespace App\Services\Logic\Account;
use App\Library\Utils\Password as PasswordUtil;
use App\Library\Validators\Common as CommonValidator; use App\Library\Validators\Common as CommonValidator;
use App\Models\Account as AccountModel; use App\Models\Account as AccountModel;
use App\Models\ImUser as ImUserModel; use App\Models\ImUser as ImUserModel;
@ -42,6 +43,10 @@ class Register extends Service
$data['password'] = $accountValidator->checkPassword($post['password']); $data['password'] = $accountValidator->checkPassword($post['password']);
$data['salt'] = PasswordUtil::salt();
$data['password'] = PasswordUtil::hash($data['password'], $data['salt']);
try { try {
$this->db->begin(); $this->db->begin();

View File

@ -2,6 +2,7 @@
namespace App\Services\OAuth; namespace App\Services\OAuth;
use App\Models\Connect as ConnectModel;
use App\Services\OAuth; use App\Services\OAuth;
class QQ extends OAuth class QQ extends OAuth
@ -18,8 +19,8 @@ class QQ extends OAuth
'client_id' => $this->clientId, 'client_id' => $this->clientId,
'redirect_uri' => $this->redirectUri, 'redirect_uri' => $this->redirectUri,
'state' => $this->getState(), 'state' => $this->getState(),
'scope' => 'get_user_info',
'response_type' => 'code', 'response_type' => 'code',
'scope' => 'get_user_info',
]; ];
return self::AUTHORIZE_URL . '?' . http_build_query($params); return self::AUTHORIZE_URL . '?' . http_build_query($params);
@ -106,6 +107,7 @@ class QQ extends OAuth
$userInfo['id'] = $this->openId; $userInfo['id'] = $this->openId;
$userInfo['name'] = $data['nickname']; $userInfo['name'] = $data['nickname'];
$userInfo['avatar'] = $data['figureurl']; $userInfo['avatar'] = $data['figureurl'];
$userInfo['provider'] = ConnectModel::PROVIDER_QQ;
return $userInfo; return $userInfo;
} }

View File

@ -2,6 +2,7 @@
namespace App\Services\OAuth; namespace App\Services\OAuth;
use App\Models\Connect as ConnectModel;
use App\Services\OAuth; use App\Services\OAuth;
class WeiBo extends OAuth class WeiBo extends OAuth
@ -81,6 +82,7 @@ class WeiBo extends OAuth
$userInfo['id'] = $data['id']; $userInfo['id'] = $data['id'];
$userInfo['name'] = $data['name']; $userInfo['name'] = $data['name'];
$userInfo['avatar'] = $data['profile_image_url']; $userInfo['avatar'] = $data['profile_image_url'];
$userInfo['provider'] = ConnectModel::PROVIDER_WEIBO;
return $userInfo; return $userInfo;
} }

View File

@ -2,6 +2,7 @@
namespace App\Services\OAuth; namespace App\Services\OAuth;
use App\Models\Connect as ConnectModel;
use App\Services\OAuth; use App\Services\OAuth;
class WeiXin extends OAuth class WeiXin extends OAuth
@ -81,6 +82,7 @@ class WeiXin extends OAuth
$userInfo['id'] = $data['openid']; $userInfo['id'] = $data['openid'];
$userInfo['name'] = $data['nickname']; $userInfo['name'] = $data['nickname'];
$userInfo['avatar'] = $data['headimgurl']; $userInfo['avatar'] = $data['headimgurl'];
$userInfo['provider'] = ConnectModel::PROVIDER_WEIXIN;
return $userInfo; return $userInfo;
} }