is('admin/*') ? 'admin' : 'member'; session(['redirect_to' => $redirectTo]); // 将值存入 Session return Socialite::driver('line')->redirect(); } /** * Summary of handleProviderCallback * line 登入後查詢 * @return void */ public function handleProviderCallback(Request $request) { // 从 Session 获取 $redirectTo $redirectTo = session('redirect_to', 'member'); $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 { $newUser = User::create([ 'name' => $name, 'line_id' => $lineId, 'password' => bcrypt(env('DEFAULT_PASSWORD')), 'avatar' => $avatar, 'source' => 'cafeg', 'email' => $email, ]); Auth::guard('web')->login($newUser); } $user = Auth::guard('web')->user(); return $user->email ? redirect()->route('admin.index') : redirect()->route('admin.profile'); } else { // Member 登录逻辑 $existingUser = Member::where('line_id', $lineId) ->orWhere('email', $email) ->first(); if ($existingUser) { Auth::guard('member')->login($existingUser); } else { $newUser = Member::create([ 'name' => $name, 'line_id' => $lineId, 'password' => bcrypt(env('DEFAULT_PASSWORD')), 'avatar' => $avatar, 'source' => 'cafeg', 'email' => $email, ]); Auth::guard('member')->login($newUser); } $user = Auth::guard('member')->user(); return $user->email ? redirect()->route('member.index') : redirect()->route('member.profile'); } } public function adminLogout() { Auth::guard('web')->logout(); return redirect()->route('admin.login'); } public function memberLogout() { Auth::guard('member')->logout(); return redirect()->route('front.login.view'); } public function adminNormalLogin(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::guard('web')->attempt($credentials)) { return redirect()->route('admin.index'); } return redirect()->route('admin.login'); } public function memberNormalLogin(Request $request) { $credentials = $request->only('email', 'password'); if (Auth::guard('member')->attempt($credentials)) { return redirect()->route('member.index'); } else { return redirect()->route('front.login.view')->with('error', '帳號密碼錯誤'); } } }