AppSessionController.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  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 confirmSmsAuthToken(Request $request)
  10. {
  11. return view('confirm_sms_auth_token');
  12. }
  13. public function setPassword(Request $request)
  14. {
  15. return view('set_password');
  16. }
  17. public function setSecurityQuestions(Request $request)
  18. {
  19. return view('set_security_questions');
  20. }
  21. public function postConfirmSmsAuthToken(Request $request) {
  22. try {
  23. $url = env('BACKEND_URL', 'http://localhost:8080') . '/api/session/confirmSmsAuthToken';
  24. $data = [
  25. 'cellNumber' => $request->input('cellNumber'),
  26. 'token' => $request->input('token'),
  27. ];
  28. $response = Http::asForm()
  29. ->withHeaders(['sessionKey'=>$request->cookie('sessionKey')])
  30. ->post($url, $data)
  31. ->json();
  32. if(!isset($response['success']) || !$response['success']){
  33. $message = 'API error';
  34. if(isset($response['error'])) {
  35. $message = $response['error'];
  36. if(isset($response['path'])) $message .= ': ' . $response['path'];
  37. }
  38. else if(isset($response['message'])) $message = $response['message'];
  39. return redirect('/confirm_sms_auth_token')
  40. ->withInput()
  41. ->with('message', $message);
  42. }
  43. return redirect('/');
  44. } catch (\Exception $e) {
  45. return redirect()->back()->with('message', $e->getMessage());
  46. }
  47. }
  48. public function postSetPassword(Request $request) {
  49. try {
  50. $url = env('BACKEND_URL', 'http://localhost:8080') . '/api/pro/selfPutPassword';
  51. $data = [
  52. 'newPassword' => $request->input('newPassword'),
  53. 'newPasswordConfirmation' => $request->input('newPasswordConfirmation'),
  54. ];
  55. $response = Http::asForm()
  56. ->withHeaders(['sessionKey'=>$request->cookie('sessionKey')])
  57. ->post($url, $data)
  58. ->json();
  59. if(!isset($response['success']) || !$response['success']){
  60. $message = 'API error';
  61. if(isset($response['error'])) {
  62. $message = $response['error'];
  63. if(isset($response['path'])) $message .= ': ' . $response['path'];
  64. }
  65. else if(isset($response['message'])) $message = $response['message'];
  66. return redirect('/set_password')
  67. ->withInput()
  68. ->with('message', $message);
  69. }
  70. return redirect('/');
  71. } catch (\Exception $e) {
  72. return redirect()->back()->with('message', $e->getMessage());
  73. }
  74. }
  75. public function postSetSecurityQuestions(Request $request) {
  76. try {
  77. $url = env('BACKEND_URL', 'http://localhost:8080') . '/api/pro/selfPutSecurityQuestions';
  78. $data = [
  79. 'securityQuestion1' => $request->input('securityQuestion1'),
  80. 'securityAnswer1' => $request->input('securityAnswer1'),
  81. 'securityQuestion2' => $request->input('securityQuestion2'),
  82. 'securityAnswer2' => $request->input('securityAnswer2'),
  83. ];
  84. $response = Http::asForm()
  85. ->withHeaders(['sessionKey'=>$request->cookie('sessionKey')])
  86. ->post($url, $data)
  87. ->json();
  88. if(!isset($response['success']) || !$response['success']){
  89. $message = 'API error';
  90. if(isset($response['error'])) {
  91. $message = $response['error'];
  92. if(isset($response['path'])) $message .= ': ' . $response['path'];
  93. }
  94. else if(isset($response['message'])) $message = $response['message'];
  95. return redirect('/set_password')
  96. ->withInput()
  97. ->with('message', $message);
  98. }
  99. return redirect('/');
  100. } catch (\Exception $e) {
  101. return redirect()->back()->with('message', $e->getMessage());
  102. }
  103. }
  104. public function proLogIn(){
  105. return view('public.pro-log-in');
  106. }
  107. public function processProLogOut(Request $request){
  108. $logOutUrl = env('BACKEND_URL', 'http://localhost:8080') . '/api/session/logOut';
  109. $response = Http::asForm()->withHeaders(['sessionKey'=>$request->cookie('sessionKey')])->post($logOutUrl)->json();
  110. if(!$response['success']){
  111. return back()->with("message", $response['message']);
  112. }
  113. Cookie::queue(Cookie::forget('sessionKey'));
  114. return redirect(route('pro-request-sms-login-token'));
  115. }
  116. public function login(Request $request)
  117. {
  118. $api = new Backend();
  119. try {
  120. $apiResponse = $api->post('session/proLogInWithPassword', [
  121. 'cellNumber' => $request->post('cellNumber'),
  122. 'password' => $request->post('password')
  123. ]);
  124. $data = json_decode($apiResponse->getContents());
  125. if (!property_exists($data, 'success') || !$data->success) {
  126. return back()->with('message', 'Invalid login credentials.')
  127. ->withInput($request->input());
  128. }
  129. Cookie::queue('sessionKey', $data->data->sessionKey);
  130. return redirect('/confirm_sms_auth_token');
  131. } catch (\Exception $e) {
  132. return redirect()->back()->with('message', $e->getMessage());
  133. }
  134. }
  135. public function postToAPI(Request $request) {
  136. session()->remove('message');
  137. // call java api
  138. $data = [];
  139. $fields = $request->all();
  140. foreach ($fields as $key => $value) {
  141. if($key[0] !== '_') {
  142. $data[$key] = $value;
  143. }
  144. }
  145. if(!isset($data['uid']) && isset($fields['_uid'])) {
  146. $data['uid'] = $fields['_uid'];
  147. }
  148. $url = env('BACKEND_URL', 'http://localhost:8080') . $request->input('_api');
  149. // dd($url);
  150. $response = Http::asForm()
  151. ->withHeaders(['sessionKey'=>$request->cookie('sessionKey')])
  152. ->post($url, $data)
  153. ->json();
  154. // dd($response);
  155. if(!isset($response['success']) || !$response['success']){
  156. $message = 'API error';
  157. if(isset($response['error'])) {
  158. $message = $response['error'];
  159. if(isset($response['path'])) $message .= ': ' . $response['path'];
  160. }
  161. else if(isset($response['message'])) $message = $response['message'];
  162. return redirect($request->input('_return'))
  163. ->withInput()
  164. ->with('message', $message);
  165. }
  166. return redirect($request->input('_success'));
  167. }
  168. public function postToAPIAjax(Request $request) {
  169. session()->remove('message');
  170. // call java api
  171. $data = [];
  172. $fields = $request->all();
  173. foreach ($fields as $key => $value) {
  174. if($key[0] !== '_') {
  175. $data[$key] = $value;
  176. }
  177. }
  178. if(!isset($data['uid']) && isset($fields['_uid'])) {
  179. $data['uid'] = $fields['_uid'];
  180. }
  181. $url = env('BACKEND_URL', 'http://localhost:8080') . $request->input('_api');
  182. // dd($url);
  183. $response = Http::asForm()
  184. ->withHeaders(['sessionKey'=>$request->cookie('sessionKey')])
  185. ->post($url, $data)
  186. ->json();
  187. // dd($response);
  188. return response()->json($response);
  189. }
  190. }