78 lines
1.9 KiB
PHP
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');
|
|
}
|
|
}
|
|
}
|