cafeg/app/Http/Controllers/front/LoginController.php
2025-01-09 16:56:00 +08:00

78 lines
1.9 KiB
PHP

<?php
namespace App\Http\Controllers\front;
use App\Http\Controllers\Controller;
use App\Models\Member;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Laravel\Socialite\Facades\Socialite;
class LoginController extends Controller
{
//
public function index(Request $request)
{
return view('front.login');
}
/** line 跳轉 由line登入
* @return [type]
*/
public function redirectToProvider()
{
return Socialite::driver('line')->redirect();
}
/**
* Summary of handleProviderCallback
* line 登入後查詢
* @return void
*/
public function handleProviderCallback()
{
// 获取 LINE 用户信息
$user = Socialite::driver('line')->user();
// 从返回的信息中获取数据
$lineId = $user->getId(); // LINE ID
$name = $user->getName(); // 用户名
$avatar = $user->getAvatar(); // 用户头像
// 查询数据库中是否已有此用户
$existingUser = Member::where('line_id', $lineId)->first();
if ($existingUser) {
// 如果用户存在,使用 guard 'member' 登录
Auth::guard('member')->login($existingUser);
} else {
$user = [
'name' => $name,
'line_id' => $lineId,
'password' => bcrypt(env('DEFAULT_PASSWORD')),
'avatar' => $avatar,
'phone' => '',
'source' => 'cafeg',
];
// 如果用户不存在,创建新用户并登录
$newUser = Member::create($user);
Auth::guard('member')->login($newUser);
}
$user = Auth::guard('member')->user();
if (!$user->email) {
return redirect()->route('member.profile');
} else {
// 登录成功后重定向到特定页面
return redirect()->route('member.index');
}
}
}