LoginController.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. <?php
  2. namespace App\Http\Controllers\AdminAuth;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Foundation\Auth\AuthenticatesUsers;
  5. use Illuminate\Support\Facades\Auth;
  6. use Hesto\MultiAuth\Traits\LogsoutGuard;
  7. use Illuminate\Http\Request;
  8. use App\Models\Admin;
  9. use App\Models\LoginRecords;
  10. use Session;
  11. class LoginController extends Controller
  12. {
  13. /*
  14. |--------------------------------------------------------------------------
  15. | Login Controller
  16. |--------------------------------------------------------------------------
  17. |
  18. | This controller handles authenticating users for the application and
  19. | redirecting them to your home screen. The controller uses a trait
  20. | to conveniently provide its functionality to your applications.
  21. |
  22. */
  23. use AuthenticatesUsers, LogsoutGuard {
  24. LogsoutGuard::logout insteadof AuthenticatesUsers;
  25. }
  26. /**
  27. * Where to redirect users after login / registration.
  28. *
  29. * @var string
  30. */
  31. public $redirectTo = '/admin/dashboard';
  32. /**
  33. * Create a new controller instance.
  34. *
  35. * @return void
  36. */
  37. public function __construct()
  38. {
  39. $this->middleware('admin.guest', ['except' => 'logout']);
  40. }
  41. /**
  42. * Show the application's login form.
  43. *
  44. * @return \Illuminate\Http\Response
  45. */
  46. public function showLoginForm()
  47. {
  48. return view('admin.auth.login');
  49. }
  50. public function login(Request $request)
  51. {
  52. $admin = Admin::where('email',$request->email)->first();
  53. if(!$admin){
  54. return redirect('/')->with('error','Unknown Email address!');
  55. }else{
  56. if($admin->status == '0'){
  57. return redirect('/')->with('error','Account Status is not Activated!');
  58. }else{
  59. if($admin->type==5)
  60. return redirect('https://sales.samscrm.co.uk')->with('success','Please login here!');
  61. $credentials = [
  62. 'email' => $request->email,
  63. 'password' => $request->password,
  64. 'status' => '1'
  65. ];
  66. if (Auth::guard('admin')->attempt($credentials)) {
  67. $time = date('y-m-d h:i:s',time());
  68. $ip = $request->ip();
  69. $records = new LoginRecords;
  70. $records->auth_type = 'admins';
  71. $records->auth_id = $admin->id;
  72. $records->ip_address = $ip;
  73. $records->start_time = $time;
  74. $records->save();
  75. $admin->active_status=1;
  76. $admin->last_logged_timezone=$request->last_logged_timezone;
  77. $admin->api_token=make_api_token('admins');
  78. $admin->update();
  79. $previous_session = $admin->session_id;
  80. if($previous_session) {
  81. Session::getHandler()->destroy($previous_session);
  82. }
  83. Session::put('session_start', $time);
  84. Session::put('login_record', $records->id);
  85. Session::put('admin_type', 'admins');
  86. $admin->session_id = Session::getId();
  87. $admin->update();
  88. return redirect('admin/dashboard');
  89. }else{
  90. return redirect('/')->with('error','Wrong Email/Password combination');
  91. }
  92. }
  93. }
  94. }
  95. /**
  96. * Get the guard to be used during authentication.
  97. *
  98. * @return \Illuminate\Contracts\Auth\StatefulGuard
  99. */
  100. protected function guard()
  101. {
  102. return Auth::guard('admin');
  103. }
  104. public function logout(){
  105. $auth_user=Auth::guard('admin')->user();
  106. if($auth_user){
  107. $auth_user->update([
  108. 'active_status'=>0,
  109. 'api_token'=>NULL
  110. ]);
  111. }
  112. if(Session::get('login_record')){
  113. $record_id = Session::get('login_record');
  114. $time = date('y-m-d h:i:s',time());
  115. $records = LoginRecords::find($record_id);
  116. if($records){
  117. $records->end_time = $time;
  118. $records->update();
  119. if($records->login_source){
  120. $source = $records->loginSource->source;
  121. }
  122. }
  123. }
  124. $previous_session = Auth::guard('admin')->session_id;
  125. if($previous_session) {
  126. Session::getHandler()->destroy($previous_session);
  127. }
  128. Auth::guard('admin')->logout();
  129. if(!isset($source)){
  130. return redirect('/');
  131. }else{
  132. return redirect($source);
  133. }
  134. //return redirect('/admin');
  135. }
  136. public function showRegisterForm()
  137. {
  138. return view('admin.auth.register');
  139. }
  140. }