...
|
...
|
@@ -16,6 +16,7 @@ |
|
|
*/
|
|
|
namespace App\Services;
|
|
|
|
|
|
use App\Http\Requests\LoginRequest;
|
|
|
use App\Models\System\SmsLog;
|
|
|
use App\Models\User\Role;
|
|
|
use App\Models\User\User;
|
...
|
...
|
@@ -23,6 +24,7 @@ use App\Models\User\LoginRecord as UserLoginRecord; |
|
|
use Browser;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Support\Arr;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
use JWTAuth;
|
|
|
|
...
|
...
|
@@ -117,31 +119,44 @@ class AuthService extends BaseService |
|
|
*/
|
|
|
public function login($request)
|
|
|
{
|
|
|
switch ($request->login_method) {
|
|
|
case 'mobile':
|
|
|
return $this->loginWithMobile($request);
|
|
|
case User::QUICK_LOGIN:
|
|
|
return $this->loginQuick($request);
|
|
|
case User::WECHAT_APPLET_MOBILE_LOGIN:
|
|
|
$service = app(WechatService::class);
|
|
|
$result = $service->authLoginByMobile($request);
|
|
|
break;
|
|
|
case User::WECHAT_APPLET_NICKNAME_LOGIN:
|
|
|
$service = app(WechatService::class);
|
|
|
$result = $service->authLoginByNickname($request);
|
|
|
break;
|
|
|
case User::WECHAT_OFFICIAL_ACCOUNT_AUTHORIZED_LOGIN:
|
|
|
$service = app(WechatService::class);
|
|
|
$result = $service->auth($request);
|
|
|
break;
|
|
|
default:
|
|
|
return $this->loginWithPassword($request);
|
|
|
}
|
|
|
try {
|
|
|
switch ($request->login_method) {
|
|
|
case 'mobile':
|
|
|
return $this->loginWithMobile($request);
|
|
|
case User::QUICK_LOGIN:
|
|
|
return $this->loginQuick($request);
|
|
|
case User::WECHAT_APPLET_MOBILE_LOGIN:
|
|
|
$service = app(WechatService::class);
|
|
|
$result = $service->authLoginByMobile($request);
|
|
|
break;
|
|
|
case User::WECHAT_APPLET_NICKNAME_LOGIN:
|
|
|
$service = app(WechatService::class);
|
|
|
$result = $service->authLoginByNickname($request);
|
|
|
break;
|
|
|
case User::WECHAT_OFFICIAL_ACCOUNT_AUTHORIZED_LOGIN:
|
|
|
$service = app(WechatService::class);
|
|
|
$result = $service->authLoginWithOfficialAccount($request);
|
|
|
break;
|
|
|
default:
|
|
|
return $this->loginWithPassword($request);
|
|
|
}
|
|
|
|
|
|
if (!$result) {
|
|
|
$this->message = $service->getMessage();
|
|
|
}
|
|
|
return $result;
|
|
|
} catch (\Exception $exception) {
|
|
|
$this->message = $exception->getMessage();
|
|
|
// dump($exception->g);
|
|
|
// dump($exception->getMessage());
|
|
|
// dump($exception->getCode());
|
|
|
$message = $exception->getMessage();
|
|
|
// if (Str::contains($message, '"errcode":40125')) {
|
|
|
// $this->message = 'AppSecret '.__('invalid');
|
|
|
// }
|
|
|
|
|
|
if (!$result) {
|
|
|
$this->message = $service->getMessage();
|
|
|
return false;
|
|
|
}
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -293,58 +308,71 @@ class AuthService extends BaseService |
|
|
"headimgurl" => "https://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eobkqbPCsjImL5qk7ErZxrRQg34FpGqnbpUwiau6ibNIA9CWic53dwCXPjjECLFqXqRh5gXGLYrjHzoQ/132"
|
|
|
"privilege" => []
|
|
|
*
|
|
|
* @param LoginPost $request request
|
|
|
* @param LoginRequest $request request
|
|
|
*
|
|
|
* @return bool|string
|
|
|
* @throws \Exception
|
|
|
*/
|
|
|
public function wechatAuth($request)
|
|
|
{
|
|
|
try {
|
|
|
$service = app(WechatService::class);
|
|
|
$result = $service->authLoginWithOfficialAccount($request);
|
|
|
if (!$result) {
|
|
|
$this->message = $service->getMessage();
|
|
|
}
|
|
|
} catch (\Exception $exception) {
|
|
|
$this->message = $exception->getMessage();
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
$service = app(WechatService::class);
|
|
|
|
|
|
// 开启事务
|
|
|
// DB::beginTransaction();
|
|
|
// try {
|
|
|
DB::beginTransaction();
|
|
|
try {
|
|
|
// 正在申请
|
|
|
$userinfo = session('wechat.oauth_user.default')->original; // 拿到授权用户资料
|
|
|
|
|
|
// 获取授权参数
|
|
|
$openid = Arr::get($userinfo, 'openid');
|
|
|
$user = null;
|
|
|
if ($openid) {
|
|
|
// TODO 测试登录其他账号
|
|
|
if ($openid == 'osLHa6ruNfzBQKTUryvQs8q02Cmw') {
|
|
|
//$openid = 'osLHa6oDbwJk0XCN7jqojQbY9lO4';
|
|
|
if ($openid) {
|
|
|
// TODO 测试登录其他账号
|
|
|
if ($openid == 'osLHa6ruNfzBQKTUryvQs8q02Cmw') {
|
|
|
//$openid = 'osLHa6oDbwJk0XCN7jqojQbY9lO4';
|
|
|
}
|
|
|
$user = User::where('openid', $openid)->first();
|
|
|
}
|
|
|
$user = User::where('openid', $openid)->first();
|
|
|
}
|
|
|
|
|
|
if ($user) {
|
|
|
$token = JWTAuth::fromuser($user);
|
|
|
$user->token = $token;
|
|
|
$user->save();
|
|
|
return $user;
|
|
|
} else {
|
|
|
$data['openid'] = $openid;
|
|
|
$data['nickname'] = Arr::get($userinfo, 'nickname');
|
|
|
$data['avatar'] = Arr::get($userinfo, 'headimgurl');
|
|
|
$data['gender'] = Arr::get($userinfo, 'gender');
|
|
|
return $data;
|
|
|
$user = new User();
|
|
|
$user->openid = $openid;
|
|
|
$user->nickname = Arr::get($userinfo, 'nickname');
|
|
|
$user->avatar = Arr::get($userinfo, 'headimgurl');
|
|
|
$user->gender = Arr::get($userinfo, 'gender');
|
|
|
$user->country = Arr::get($userinfo, 'country');
|
|
|
$user->province = Arr::get($userinfo, 'province');
|
|
|
$user->city = Arr::get($userinfo, 'city');
|
|
|
$user->role = Role::GENERAL;
|
|
|
$user->password = bcrypt(config('constants.PASSWORD'));
|
|
|
$user->registered_at = date('Y-m-d H:i:s');
|
|
|
$user->registered_ip = $request->ip();
|
|
|
$result = $user->save();
|
|
|
$token = JWTAuth::fromuser($user);
|
|
|
$user->token = $token;
|
|
|
$user->save();
|
|
|
}
|
|
|
if ($user) {
|
|
|
$token = JWTAuth::fromuser($user);
|
|
|
$user->token = $token;
|
|
|
$user->save();
|
|
|
return $user;
|
|
|
} else {
|
|
|
$data['openid'] = $openid;
|
|
|
$data['nickname'] = Arr::get($userinfo, 'nickname');
|
|
|
$data['avatar'] = Arr::get($userinfo, 'headimgurl');
|
|
|
$data['gender'] = Arr::get($userinfo, 'gender');
|
|
|
return $data;
|
|
|
$user = new User();
|
|
|
$user->openid = $openid;
|
|
|
$user->nickname = Arr::get($userinfo, 'nickname');
|
|
|
$user->avatar = Arr::get($userinfo, 'headimgurl');
|
|
|
$user->gender = Arr::get($userinfo, 'gender');
|
|
|
$user->country = Arr::get($userinfo, 'country');
|
|
|
$user->province = Arr::get($userinfo, 'province');
|
|
|
$user->city = Arr::get($userinfo, 'city');
|
|
|
$user->role = Role::GENERAL;
|
|
|
$user->password = bcrypt(config('constants.PASSWORD'));
|
|
|
$user->registered_at = date('Y-m-d H:i:s');
|
|
|
$user->registered_ip = $request->ip();
|
|
|
$result = $user->save();
|
|
|
$token = JWTAuth::fromuser($user);
|
|
|
$user->token = $token;
|
|
|
$user->save();
|
|
|
}
|
|
|
|
|
|
// 记录登陆日志
|
|
|
$this->recordLoginRecord($request, $user);
|
...
|
...
|
@@ -352,10 +380,10 @@ class AuthService extends BaseService |
|
|
return $user;
|
|
|
|
|
|
// all good
|
|
|
// } catch (\Exception $e) {
|
|
|
// DB::rollback();
|
|
|
// return false;
|
|
|
// }
|
|
|
} catch (\Exception $e) {
|
|
|
DB::rollback();
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
|