fix. line cancel redirect
This commit is contained in:
parent
c880210f61
commit
ffede88eec
@ -42,71 +42,90 @@ public function redirectToProvider(Request $request)
|
|||||||
*/
|
*/
|
||||||
public function handleProviderCallback(Request $request)
|
public function handleProviderCallback(Request $request)
|
||||||
{
|
{
|
||||||
|
// 如果用户取消了授权
|
||||||
|
if ($request->has('error') && $request->get('error') === 'access_denied') {
|
||||||
|
$redirectTo = session('redirect_to', 'member');
|
||||||
|
|
||||||
// 从 Session 获取 $redirectTo
|
if ($redirectTo === 'admin') {
|
||||||
$redirectTo = session('redirect_to', 'member');
|
return redirect()->route('admin.login')->with('error', '您已取消 LINE 授权');
|
||||||
|
|
||||||
$user = Socialite::driver('line')->user();
|
|
||||||
Log::info('line', ['user' => $user]);
|
|
||||||
$lineId = $user->getId();
|
|
||||||
$name = $user->getName();
|
|
||||||
$avatar = $user->getAvatar() ?? '';
|
|
||||||
$email = $user->getEmail() ?? '';
|
|
||||||
|
|
||||||
Log::info('email', [$email]);
|
|
||||||
|
|
||||||
if ($redirectTo == 'admin') {
|
|
||||||
// Admin 登录逻辑
|
|
||||||
$existingUser = $user = User::where('line_id', $lineId)
|
|
||||||
->orWhere('email', $email)
|
|
||||||
->first();
|
|
||||||
|
|
||||||
if ($existingUser) {
|
|
||||||
Auth::guard('web')->login($existingUser);
|
|
||||||
} else {
|
} else {
|
||||||
$newUser = User::create([
|
return redirect()->route('login')->with('error', '您已取消 LINE 授权');
|
||||||
'name' => $name,
|
|
||||||
'line_id' => $lineId,
|
|
||||||
'password' => bcrypt(env('DEFAULT_PASSWORD')),
|
|
||||||
'avatar' => $avatar,
|
|
||||||
'source' => 'cafeg',
|
|
||||||
'email' => $email,
|
|
||||||
'can_login' => 0,
|
|
||||||
]);
|
|
||||||
Auth::guard('web')->login($newUser);
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$user = Auth::guard('web')->user();
|
try {
|
||||||
return $user->email
|
// 获取 LINE 用户信息
|
||||||
? redirect()->route('admin.index')
|
$user = Socialite::driver('line')->user();
|
||||||
: redirect()->route('admin.profile');
|
Log::info('line', ['user' => $user]);
|
||||||
} else {
|
|
||||||
// Member 登录逻辑
|
$lineId = $user->getId();
|
||||||
$existingUser = Member::where('line_id', $lineId)
|
$name = $user->getName();
|
||||||
->orWhere('email', $email)
|
$avatar = $user->getAvatar() ?? '';
|
||||||
->first();
|
$email = $user->getEmail() ?? '';
|
||||||
if ($existingUser) {
|
|
||||||
Auth::guard('member')->login($existingUser);
|
Log::info('email', [$email]);
|
||||||
|
|
||||||
|
// 从 Session 获取跳转路径
|
||||||
|
$redirectTo = session('redirect_to', 'member');
|
||||||
|
|
||||||
|
if ($redirectTo === 'admin') {
|
||||||
|
// Admin 登录逻辑
|
||||||
|
$existingUser = User::where('line_id', $lineId)
|
||||||
|
->orWhere('email', $email)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($existingUser) {
|
||||||
|
Auth::guard('web')->login($existingUser);
|
||||||
|
} else {
|
||||||
|
$newUser = User::create([
|
||||||
|
'name' => $name,
|
||||||
|
'line_id' => $lineId,
|
||||||
|
'password' => bcrypt(env('DEFAULT_PASSWORD')),
|
||||||
|
'avatar' => $avatar,
|
||||||
|
'source' => 'cafeg',
|
||||||
|
'email' => $email,
|
||||||
|
'can_login' => 0,
|
||||||
|
]);
|
||||||
|
Auth::guard('web')->login($newUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = Auth::guard('web')->user();
|
||||||
|
return $user->email
|
||||||
|
? redirect()->route('admin.index')
|
||||||
|
: redirect()->route('admin.profile');
|
||||||
} else {
|
} else {
|
||||||
$newUser = Member::create([
|
// Member 登录逻辑
|
||||||
'name' => $name,
|
$existingUser = Member::where('line_id', $lineId)
|
||||||
'line_id' => $lineId,
|
->orWhere('email', $email)
|
||||||
'password' => bcrypt(env('DEFAULT_PASSWORD')),
|
->first();
|
||||||
'source' => 'cafeg',
|
if ($existingUser) {
|
||||||
'avatar' => $avatar,
|
Auth::guard('member')->login($existingUser);
|
||||||
|
} else {
|
||||||
|
$newUser = Member::create([
|
||||||
|
'name' => $name,
|
||||||
|
'line_id' => $lineId,
|
||||||
|
'password' => bcrypt(env('DEFAULT_PASSWORD')),
|
||||||
|
'source' => 'cafeg',
|
||||||
|
'avatar' => $avatar,
|
||||||
|
'email' => $email,
|
||||||
|
]);
|
||||||
|
Auth::guard('member')->login($newUser);
|
||||||
|
}
|
||||||
|
|
||||||
'email' => $email,
|
$user = Auth::guard('member')->user();
|
||||||
]);
|
return $user->email
|
||||||
Auth::guard('member')->login($newUser);
|
? redirect()->route('member.index')
|
||||||
|
: redirect()->route('member.profile');
|
||||||
}
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Log::error('LINE 登录失败: ' . $e->getMessage());
|
||||||
|
|
||||||
$user = Auth::guard('member')->user();
|
// 发生异常时,返回登录页面并提示错误
|
||||||
return $user->email
|
return redirect()->route('login')->with('error', 'LINE 登录失败,请稍后再试');
|
||||||
? redirect()->route('member.index')
|
|
||||||
: redirect()->route('member.profile');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function adminLogout()
|
public function adminLogout()
|
||||||
{
|
{
|
||||||
Auth::guard('web')->logout();
|
Auth::guard('web')->logout();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user