Files
account/modules/Member/app/Controllers/Api/Social.php
2026-01-18 09:52:48 +08:00

61 lines
2.0 KiB
PHP

<?php
// +----------------------------------------------------------------------
// | SentCMS [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2024 http://www.tensent.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: molong <molong@tensent.cn> <http://www.tensent.cn>
// +----------------------------------------------------------------------
namespace Modules\Member\Controllers\Api;
use Illuminate\Http\Request;
use App\Services\Social\Wechat\OauthService;
use Modules\Member\Services\AuthService;
use App\Http\Controllers\BaseController;
class Social extends BaseController{
public function wechat(Request $request, OauthService $service){
if($request->filled('code')){
if($request->filled('url')){
return redirect($request->input('url') . '?code=' . $request->input('code', ''));
}
}else{
$res = $service->oauth($request);
return redirect($res);
}
}
public function login(Request $request, OauthService $service){
$type = $request->input('type', 'wechat');
if($request->filled('code')){
switch ($type) {
case 'wechat':
try {
$wechatInfo = $service->wechatLogin($request->input('code', ''));
$request->merge([
'username' => $wechatInfo['openid'],
'nickname' => $wechatInfo['nickname'],
'password' => uniqid()
]);
$member = app(AuthService::class)->userRegister($request, $wechatInfo, 'wechat');
$token = auth('api')->login($member);
$this->data['data'] = [
'access_token' => $token,
'token_type' => 'bearer',
'expires_in' => auth('api')->factory()->getTTL() * 60
];
} catch (\Throwable $th) {
$this->data['message'] = $th->getMessage();
$this->data['code'] = 0;
}
break;
}
}else{
$this->data['message'] = "非法操作!";
$this->data['code'] = 0;
}
return response()->json($this->data);
}
}