72 lines
2.2 KiB
PHP
72 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\UserSocialite;
|
|
use App\Enums\SocialiteType;
|
|
use Slowlyo\OwlAdmin\Admin;
|
|
use Overtrue\LaravelWeChat\EasyWeChat;
|
|
use Slowlyo\OwlAdmin\Models\AdminUser;
|
|
|
|
class WechatController extends Controller
|
|
{
|
|
public function oauth(Request $request)
|
|
{
|
|
$user = session('easywechat.oauth_user.default');
|
|
$openid = $user->getId();
|
|
$socialite = UserSocialite::updateOrCreate([
|
|
'type' => SocialiteType::WxOfficial,
|
|
'user_type' => (new AdminUser)->getMorphClass(),
|
|
'openid' => $openid,
|
|
], [
|
|
'data' => $user,
|
|
]);
|
|
$user = $socialite->user;
|
|
if (!$user) {
|
|
return redirect(url('/h5/pages/login/login') . '?' . http_build_query(['openid' => $openid, 'open_type' => SocialiteType::WxOfficial->value]));
|
|
}
|
|
|
|
$module = Admin::currentModule(true);
|
|
$prefix = $module ? $module . '.' : '';
|
|
$token = $user->createToken($prefix . 'admin')->plainTextToken;
|
|
|
|
return redirect(url('/h5/pages/index/welcome') . '?token=' . $token);
|
|
}
|
|
|
|
public function client()
|
|
{
|
|
$user = session('easywechat.oauth_user.default');
|
|
$openid = $user->getId();
|
|
$socialite = UserSocialite::updateOrCreate([
|
|
'type' => SocialiteType::WxOfficial,
|
|
'user_type' => (new User())->getMorphClass(),
|
|
'openid' => $openid,
|
|
], [
|
|
'data' => $user,
|
|
]);
|
|
$user = $socialite->user;
|
|
if (!$user) {
|
|
return redirect(url('/client/pages/login/index') . '?' . http_build_query(['openid' => $openid, 'open_type' => SocialiteType::WxOfficial->value]));
|
|
}
|
|
|
|
$token = $user->createToken('client')->plainTextToken;
|
|
|
|
return redirect(url('/client/pages/index/welcome') . '?token=' . $token);
|
|
}
|
|
|
|
public function officialAccessToken()
|
|
{
|
|
$app = EasyWeChat::officialAccount();
|
|
$token = $app->getAccessToken();
|
|
return response()->json([
|
|
'code' => 200,
|
|
'data' => [
|
|
'token' => $token->getToken(),
|
|
],
|
|
'message' => ''
|
|
]);
|
|
}
|
|
}
|