LoginController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\AppSession;
  4. use App\Models\PotentialPro;
  5. use App\Models\Pro;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Cookie;
  8. class LoginController extends Controller
  9. {
  10. public function login(Request $request){
  11. return view('login');
  12. }
  13. public function sendSmsAuthToken(Request $request){
  14. $cellNumber = $request->get('cell_number');
  15. $cellNumber = preg_replace("/[^0-9]/", "", $cellNumber);
  16. $request->validate([
  17. 'g-recaptcha-response' => 'required|recaptcha'
  18. ]);
  19. $javaResponse = $this->callJava($request, '/potentialPro/createAndSendSmsAuthToken', [
  20. 'cellNumber'=>$cellNumber
  21. ]);
  22. if(!$javaResponse['success']){
  23. return redirect()->back()->withInput($request->input())->with('message', $javaResponse['message']);
  24. }
  25. Cookie::queue('current_cell_number', $cellNumber, 300);
  26. return redirect()->to(route('confirm-auth-token'));
  27. }
  28. public function confirmAuthToken(Request $request){
  29. return view('confirm-auth-token');
  30. }
  31. public function processConfirmAuthToken(Request $request){
  32. $confirmationToken = $request->get('confirmation_token');
  33. $cellNumber = $request->cookie('current_cell_number');
  34. $javaResponse = $this->callJava($request, '/potentialPro/confirmSmsAuthToken', [
  35. 'confirmationToken'=>$confirmationToken,
  36. 'cellNumber' => $cellNumber,
  37. ]);
  38. if(!$javaResponse['success']){
  39. return redirect()->back()->withInput($request->input())->with('message', $javaResponse['message']);
  40. }
  41. Cookie::queue('current_confirmation_token', $confirmationToken, 300);
  42. $potentialPro = PotentialPro::where('cell_number_confirmation_token', $confirmationToken)->first();
  43. //if potential pro -> pro-details
  44. if($potentialPro){
  45. return redirect()->to(route('pro-details'));
  46. }
  47. $existingPro = Pro::where('cell_number', $cellNumber)->first();
  48. $existingProAppSession = AppSession::where('pro_id', $existingPro->id)->where('two_step_sms_auth_token', $confirmationToken)->first();
  49. return redirect()->to(config('stag.authUrl').'/pro_log_in_with_session_key/'.$existingProAppSession->session_key);
  50. }
  51. public function proDetails(Request $request){
  52. $cellNumber = $request->cookie('current_cell_number');
  53. $token = $request->cookie('current_confirmation_token');
  54. $potentialPro = PotentialPro::where('cell_number_confirmation_token', $token)->get();
  55. if(!$potentialPro){
  56. return redirect()->to(route('confirm-password'));
  57. }
  58. return view('pro-details');
  59. }
  60. //submitProDetails -> setup security questions //create the actual pro and log the pro in without security questions set
  61. public function submitProDetails(Request $request){
  62. $request->validate([
  63. 'first_name'=>'required',
  64. 'last_name'=>'required',
  65. 'email_address' => 'required|email',
  66. 'password'=>'required'
  67. ]);
  68. $cellNumber = $request->cookie('current_cell_number');
  69. $token = $request->cookie('current_confirmation_token');
  70. $potentialPro = PotentialPro::where('cell_number_confirmation_token', $token)->get();
  71. if(!$potentialPro){
  72. abort(404, 'Not found');
  73. }
  74. $javaResponse = $this->callJava($request, '/session/proLogInAsPotentialPro', [
  75. 'confirmationToken'=>$token,
  76. 'cellNumber' => $cellNumber,
  77. 'firstName' => $request->get('first_name'),
  78. 'lastName' => $request->get('last_name'),
  79. 'emailAddress' => $request->get('email_address'),
  80. 'password'=>$request->get('password'),
  81. ]);
  82. if(!$javaResponse['success']){
  83. return redirect()->back()->withInput($request->input())->with('message', $javaResponse['message']);
  84. }
  85. $proSessionKey = $javaResponse['data'];
  86. return redirect()->to(config('stag.authUrl').'/pro_log_in_with_session_key/'.$proSessionKey);
  87. }
  88. }