LoginController.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 login(Request $request)
  19. {
  20. $this->validate($request, [
  21. 'cell-number' => 'required',
  22. 'password' => 'required'
  23. ]);
  24. $api = new Backend();
  25. try {
  26. $apiResponse = $api->post('session/proLogInWithPassword', [
  27. 'cellNumber' => $request->post('cell-number'),
  28. 'password' => $request->post('password')
  29. ]);
  30. $data = json_decode($apiResponse->getContents());
  31. if (!property_exists($data, 'success') || !$data->success) {
  32. return back()->with('message', 'Invalid login credentials.')
  33. ->withInput($request->input());
  34. }
  35. Cookie::queue('sessionKey', $data->data->sessionKey);
  36. return redirect()->route('dashboard');
  37. } catch (\Exception $e) {
  38. //TODO: Redirect with message
  39. return redirect()->back()->with('message', $e->getMessage());
  40. }
  41. }
  42. public function logout(Request $request)
  43. {
  44. $api = new Backend();
  45. try {
  46. //$apiResponse = $api->get('session/logOut?sessionKey=' . $request->cookie('sessionKey'));
  47. $apiResponse = $api->sendRequest(
  48. 'session/logOut',
  49. 'GET',
  50. [
  51. 'headers' => [
  52. 'sessionKey' => $request->cookie('sessionKey')
  53. ]
  54. ]
  55. );
  56. $data = json_decode($apiResponse->getContents());
  57. if (!property_exists($data, 'success') || !$data->success) {
  58. //TODO: throw message to log
  59. throw new Exception('Failed to log out of backend');
  60. }
  61. } catch (Exception $e) {
  62. // TODO: Log message
  63. // TODO: Never fail on logout. Just delete cookie.
  64. } finally {
  65. Cookie::queue(Cookie::forget('sessionKey'));
  66. }
  67. return redirect()->route('login');
  68. }
  69. }