LoginController.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Middleware\RedirectAuthenticatedPro;
  4. use App\Lib\Backend;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Cookie;
  7. use Exception;
  8. class LoginController extends Controller
  9. {
  10. public function __construct()
  11. {
  12. $this->middleware('pro.auth.redirect')->except('logout');
  13. }
  14. public function showLoginForm(Request $request)
  15. {
  16. return view('app/login');
  17. }
  18. public function showRequestPasswordReset(Request $request)
  19. {
  20. return view('app/request_password_reset');
  21. }
  22. public function processRequestPasswordReset(Request $request)
  23. {
  24. //Api call
  25. }
  26. public function showSelfResetPassword(Request $request)
  27. {
  28. return view('app/self_reset_password');
  29. }
  30. public function processSelfResetPassword(Request $request)
  31. {
  32. //Api call
  33. }
  34. public function login(Request $request)
  35. {
  36. $this->validate($request, [
  37. 'cell-number' => 'required',
  38. 'password' => 'required'
  39. ]);
  40. $api = new Backend();
  41. try {
  42. $apiResponse = $api->post('session/proLogInWithPassword', [
  43. 'cellNumber' => $request->post('cell-number'),
  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('/mc');
  53. } catch (\Exception $e) {
  54. //TODO: Redirect with message
  55. return redirect()->back()->with('message', $e->getMessage());
  56. }
  57. }
  58. public function logout(Request $request)
  59. {
  60. $api = new Backend();
  61. try {
  62. //$apiResponse = $api->get('session/logOut?sessionKey=' . $request->cookie('sessionKey'));
  63. $apiResponse = $api->sendRequest(
  64. 'session/logOut',
  65. 'GET',
  66. [
  67. 'headers' => [
  68. 'sessionKey' => $request->cookie('sessionKey')
  69. ]
  70. ]
  71. );
  72. $data = json_decode($apiResponse->getContents());
  73. if (!property_exists($data, 'success') || !$data->success) {
  74. //TODO: throw message to log
  75. throw new Exception('Failed to log out of backend');
  76. }
  77. } catch (Exception $e) {
  78. // TODO: Log message
  79. // TODO: Never fail on logout. Just delete cookie.
  80. } finally {
  81. Cookie::queue(Cookie::forget('sessionKey'));
  82. }
  83. return redirect()->route('login');
  84. }
  85. }