1
0
Fork 0
medical-record-server/app/Http/Controllers/WechatController.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' => ''
]);
}
}