middleware('pro.auth.redirect')->except('logout'); } public function showLoginForm(Request $request) { return view('app/login'); } public function login(Request $request) { $this->validate($request, [ 'cell-number' => 'required', 'password' => 'required' ]); $api = new Backend(); try { $apiResponse = $api->post('session/proLogInWithPassword', [ 'cellNumber' => $request->post('cell-number'), 'password' => $request->post('password') ]); $data = json_decode($apiResponse->getContents()); if (!property_exists($data, 'success') || !$data->success) { return back()->with('message', 'Invalid login credentials.') ->withInput($request->input()); } Cookie::queue('sessionKey', $data->data->sessionKey); return redirect()->route('dashboard'); } catch (\Exception $e) { //TODO: Redirect with message return redirect()->back()->with('message', $e->getMessage()); } } public function logout(Request $request) { $api = new Backend(); try { //$apiResponse = $api->get('session/logOut?sessionKey=' . $request->cookie('sessionKey')); $apiResponse = $api->sendRequest( 'session/logOut', 'GET', [ 'headers' => [ 'sessionKey' => $request->cookie('sessionKey') ] ] ); $data = json_decode($apiResponse->getContents()); if (!property_exists($data, 'success') || !$data->success) { //TODO: throw message to log throw new Exception('Failed to log out of backend'); } } catch (Exception $e) { // TODO: Log message // TODO: Never fail on logout. Just delete cookie. } finally { Cookie::queue(Cookie::forget('sessionKey')); } return redirect()->route('login'); } }