/**
  * Action for logging in a user
  * @return JsonModel
  */
 public function loginAction()
 {
     if ($this->request->isOptions()) {
         return new JsonModel();
     }
     if ($this->request->isPost()) {
         $loginForm = new LoginForm();
         $loginFilter = new LoginFilter();
         $loginForm->setInputFilter($loginFilter);
         $post = get_object_vars(json_decode($this->request->getContent()));
         $loginForm->setData($post);
         if (!$loginForm->isValid()) {
             $errorMessages = array();
             foreach ($loginForm->getMessages() as $elementName => $messages) {
                 foreach ($messages as $message) {
                     $errorMessages[$elementName] = $message;
                 }
             }
             return new JsonModel(array('error' => 1, 'message' => 'You have an error in your form. Please try again.', 'formErrors' => $errorMessages));
         }
         $formData = $loginForm->getData();
         $authAdapter = new AuthAdapter($this->getServiceLocator()->get('Zend\\Db\\Adapter\\Adapter'));
         $authAdapter->setTableName('lt_user');
         $authAdapter->setIdentityColumn('email');
         $authAdapter->setCredentialColumn('password');
         $authAdapter->setIdentity($formData['email']);
         $authAdapter->setCredential($formData['password']);
         $result = $authAdapter->authenticate();
         if (!$result->isValid()) {
             return new JsonModel(array('error' => 1, 'message' => 'Error while logging in. Please try again'));
         } else {
             $auth = $this->getServiceLocator()->get('AuthService');
             $objectManager = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
             $user = $objectManager->getRepository('Application\\Entity\\LtUser')->findOneBy(array('email' => $formData['email']));
             $date = new \DateTime();
             $hashRandomize = uniqid('swetea', true);
             $authToken = md5($formData['email'] . $date->format('Y-m-d') . $hashRandomize);
             $user->setAuthtoken($authToken);
             $storage = $auth->getStorage();
             $storage->write(array('contactName' => $user->getContactname(), 'userGroup' => $user->getUsergroup(), 'email' => $user->getEmail(), 'userId' => $user->getUserId()));
             $objectManager->persist($user);
             $objectManager->flush();
             return new JsonModel(array('error' => 0, 'message' => 'Login successful', 'authToken' => $authToken, 'userGroup' => $user->getUsergroup()));
         }
     } else {
         $this->response->setStatusCode(405);
         return new JsonModel(array('error' => 1, 'message' => 'Request Method not allowed'));
     }
 }