LoginController.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace App\Http\Controllers\Admin\Auth;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Foundation\Auth\AuthenticatesUsers;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Auth;
  7. use App\Models\Admin\AdminLoginLog;
  8. use App\Models\Admin\Admin;
  9. class LoginController extends Controller
  10. {
  11. /*
  12. |--------------------------------------------------------------------------
  13. | Login Controller
  14. |--------------------------------------------------------------------------
  15. |
  16. | This controller handles authenticating users for the application and
  17. | redirecting them to your home screen. The controller uses a trait
  18. | to conveniently provide its functionality to your applications.
  19. |
  20. */
  21. use AuthenticatesUsers;
  22. /**
  23. * Where to redirect users after login.
  24. *
  25. * @var string
  26. */
  27. protected $redirectTo = '/admin/home';
  28. /**
  29. * Create a new controller instance.
  30. *
  31. * @return void
  32. */
  33. public function __construct()
  34. {
  35. $this->middleware('admin.guest')->except('logout','admin.logout');
  36. }
  37. /**
  38. * Get the guard to be used during authentication.
  39. *
  40. * @return \Illuminate\Contracts\Auth\StatefulGuard
  41. */
  42. protected function guard()
  43. {
  44. return Auth::guard('admin');
  45. }
  46. /**
  47. * Show the application's login form.
  48. *
  49. * @return \Illuminate\Http\Response
  50. */
  51. public function showLoginForm()
  52. {
  53. return view('admin.auth.login');
  54. }
  55. /**
  56. * Log the user out of the application.
  57. *
  58. * @param \Illuminate\Http\Request $request
  59. * @return \Illuminate\Http\Response
  60. */
  61. public function logout(Request $request)
  62. {
  63. $this->guard('admin')->logout();
  64. $request->session()->invalidate();
  65. return $this->loggedOut($request) ?: redirect('/admin/login');
  66. }
  67. /**
  68. * Get the login username to be used by the controller.
  69. *
  70. * @return string
  71. */
  72. public function username()
  73. {
  74. return 'name';
  75. }
  76. public function login(Request $request)
  77. {
  78. // 验证IP
  79. $data = Admin::where('name',$request->name)->first();
  80. if(empty($data)){
  81. return $this->sendFailedLoginResponse($request);
  82. }else{
  83. if(!empty($data->white_ip)){
  84. $ip = getClientIP();
  85. $canLogin = Admin::where('name',$request->name)->where('status',1)->whereRaw("FIND_IN_SET('$ip',white_ip)")->first();
  86. if(empty($canLogin)){
  87. return $this->sendFailedLoginResponse($request);
  88. }
  89. }
  90. $password = md5($request->password);
  91. if (Auth::guard('admin')->attempt(['name' => $request->name, 'password' => $password, 'status' => 1])) {
  92. AdminLoginLog::insert(['admin_name' => $request->name,'login_time' => nowDate(),'login_ip' => getClientIP()]);
  93. // 用户存在,已激活且未被禁用。
  94. return redirect($this->redirectTo);
  95. } else {
  96. return $this->sendFailedLoginResponse($request);
  97. }
  98. }
  99. }
  100. }