AppSessionController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Lib\Backend;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\Cookie;
  6. use Illuminate\Support\Facades\Http;
  7. class AppSessionController extends Controller
  8. {
  9. public function proRequestSmsLogInToken(){
  10. return view('public.pro-request-sms-login-token');
  11. }
  12. public function proLogIn(){
  13. return view('public.pro-log-in');
  14. }
  15. public function processProLogIn(Request $request){
  16. $loginUrl = env('BACKEND_URL', 'http://localhost:8080') . '/api/session/proLogIn';
  17. $response = Http::asForm()->post($loginUrl, [
  18. 'cellNumber' => $request->get('cellNumber'),
  19. 'token' => $request->get('token'),
  20. ])->json();
  21. if(!$response['success']){
  22. return back()->with("message", $response['message']);
  23. }
  24. $sessionKey = $response['data']["sessionKey"];
  25. $request->session()->put("authID", $response['data']["proId"]);
  26. $cookie = cookie()->forever('sessionKey', $sessionKey, '/');
  27. return redirect("/dashboard")->withCookie($cookie);
  28. }
  29. public function processProLogOut(Request $request){
  30. $logOutUrl = env('BACKEND_URL', 'http://localhost:8080') . '/api/session/logOut';
  31. $response = Http::asForm()->withHeaders(['sessionKey'=>$request->cookie('sessionKey')])->post($logOutUrl)->json();
  32. if(!$response['success']){
  33. return back()->with("message", $response['message']);
  34. }
  35. Cookie::queue(Cookie::forget('sessionKey'));
  36. return redirect(route('pro-request-sms-login-token'));
  37. }
  38. public function login(Request $request)
  39. {
  40. $api = new Backend();
  41. try {
  42. $apiResponse = $api->post('session/proLogInWithPassword', [
  43. 'cellNumber' => $request->post('cellNumber'),
  44. 'password' => $request->post('password')
  45. ]);
  46. $data = json_decode($apiResponse->getContents());
  47. if (!property_exists($data, 'success') || !$data->success) {
  48. return back()->with('message', 'Invalid login credentials.')
  49. ->withInput($request->input());
  50. }
  51. Cookie::queue('sessionKey', $data->data->sessionKey);
  52. return redirect('/');
  53. } catch (\Exception $e) {
  54. return redirect()->back()->with('message', $e->getMessage());
  55. }
  56. }
  57. public function postToAPI(Request $request) {
  58. session()->remove('message');
  59. // call java api
  60. $data = [];
  61. $fields = $request->all();
  62. foreach ($fields as $key => $value) {
  63. if($key[0] !== '_') {
  64. $data[$key] = $value;
  65. }
  66. }
  67. if(!isset($data['uid']) && isset($fields['_uid'])) {
  68. $data['uid'] = $fields['_uid'];
  69. }
  70. $url = env('BACKEND_URL', 'http://localhost:8080') . $request->input('_api');
  71. // dd($url);
  72. $response = Http::asForm()
  73. ->withHeaders(['sessionKey'=>$request->cookie('sessionKey')])
  74. ->post($url, $data)
  75. ->json();
  76. // dd($response);
  77. if(!isset($response['success']) || !$response['success']){
  78. $message = 'API error';
  79. if(isset($response['error'])) {
  80. $message = $response['error'];
  81. if(isset($response['path'])) $message .= ': ' . $response['path'];
  82. }
  83. else if(isset($response['message'])) $message = $response['message'];
  84. return redirect($request->input('_return'))
  85. ->withInput()
  86. ->with('message', $message);
  87. }
  88. return redirect($request->input('_success'));
  89. }
  90. public function postToAPIAjax(Request $request) {
  91. session()->remove('message');
  92. // call java api
  93. $data = [];
  94. $fields = $request->all();
  95. foreach ($fields as $key => $value) {
  96. if($key[0] !== '_') {
  97. $data[$key] = $value;
  98. }
  99. }
  100. if(!isset($data['uid']) && isset($fields['_uid'])) {
  101. $data['uid'] = $fields['_uid'];
  102. }
  103. $url = env('BACKEND_URL', 'http://localhost:8080') . $request->input('_api');
  104. // dd($url);
  105. $response = Http::asForm()
  106. ->withHeaders(['sessionKey'=>$request->cookie('sessionKey')])
  107. ->post($url, $data)
  108. ->json();
  109. // dd($response);
  110. return response()->json($response);
  111. }
  112. }