LoginController.php 2.3 KB

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