/** * @param $data * @return mixed */ public function login($data) { /** @var ObjectRepository $adapter */ $adapter = $this->authService->getAdapter(); $adapter->setIdentityValue($data->login); $adapter->setCredentialValue($data->password); $result = $adapter->authenticate(); switch ($result->getCode()) { case Result::SUCCESS: $identity = $result->getIdentity(); $this->authService->getStorage()->write($identity); if (isset($data->rememberMe)) { $this->sessionManager->rememberMe(1209600); } $toJson['user'] = $identity->toArray(); $toJson['session_id'] = $this->sessionManager->getId(); $toJson['success'] = true; return json_decode(json_encode($toJson)); case Result::FAILURE_IDENTITY_NOT_FOUND: return ['success' => false, 'message' => 'User not found.']; case Result::FAILURE_CREDENTIAL_INVALID: return ['success' => false, 'message' => 'Invalid password']; default: return ['success' => false, 'message' => 'Error while login']; } }