/**
  * Is allowed to view the site
  *
  * @return boolean
  */
 public static function isAllowedViewSite()
 {
     if ((int) SettingService::getSetting('application_disable_site')) {
         $user = UserIdentityService::getCurrentUserIdentity();
         if ($user['role'] != AclBaseModel::DEFAULT_ROLE_ADMIN) {
             // get a visitor IP
             $remote = new RemoteAddress();
             $remote->setUseProxy(true);
             $userIp = $remote->getIpAddress();
             // get list of allowed ACL roles
             if (null != ($allowedAclRoles = SettingService::getSetting('application_disable_site_acl'))) {
                 if (!is_array($allowedAclRoles)) {
                     $allowedAclRoles = [$allowedAclRoles];
                 }
             }
             // get list of allowed IPs
             if (null != ($allowedIps = SettingService::getSetting('application_disable_site_ip'))) {
                 $allowedIps = explode(',', $allowedIps);
             }
             if ($allowedAclRoles || $allowedIps) {
                 if ($allowedAclRoles && in_array($user['role'], $allowedAclRoles) || $allowedIps && in_array($userIp, $allowedIps)) {
                     return true;
                 }
             }
             return false;
         }
     }
     return true;
 }
 /**
  * @return string
  */
 public function getIpAddress()
 {
     if (null === $this->ipAddress) {
         $remote = new RemoteAddress();
         $this->ipAddress = $remote->getIpAddress();
     }
     return $this->ipAddress;
 }
 /**
  * Checks if a comment is spam using the akismet service.
  *
  * @param  \RbComment\Model\Comment $comment
  * @param  mixed                    $rbCommentConfig
  * @return boolean
  */
 protected function isSpam($comment, $rbCommentConfig)
 {
     $remote = new RemoteAddress();
     $remote->setUseProxy($rbCommentConfig->akismet['proxy']['use']);
     $remote->setTrustedProxies($rbCommentConfig->akismet['proxy']['trusted']);
     $remote->setProxyHeader($rbCommentConfig->akismet['proxy']['header']);
     return $this->getAkismetService()->isSpam(array('user_ip' => $remote->getIpAddress(), 'user_agent' => filter_input(INPUT_SERVER, 'HTTP_USER_AGENT'), 'comment_type' => 'comment', 'comment_author' => $comment->author, 'comment_author_email' => $comment->contact, 'comment_content' => $comment->content));
 }
 public function indexAction()
 {
     $formlogin = new \Application\Form\Login();
     $formlogin->bind($this->request->getPost());
     $messages = array();
     if ($this->request->isPost()) {
         $formlogin->setData($this->request->getPost());
         if ($formlogin->isValid()) {
             $loginCredentials = $this->request->getPost('Login');
             $messages = $this->cs->auth($loginCredentials['username'], $this->cs->_hashing($loginCredentials['password']));
             //$messages = $this->cs->auth($loginCredentials['username'],$loginCredentials['password']);
             if (empty($messages)) {
                 $identity = $this->authservice->getIdentity();
                 $this->userid = $identity['pkUserid'];
                 //If valid, check if account password requires resetting, if true direct user to renew password
                 if (!$this->cs->hasPasswordExpired($this->userid, $this->em)) {
                     //Log time and ip address
                     $ipaddress = new RemoteAddress();
                     $pr = new \Application\Model\Preferences($this->em);
                     //Get user entity
                     $userentity = $this->em->getRepository("\\Application\\Entity\\User")->find($this->userid);
                     $userentity->setLastloginip($userentity->getIpaddress());
                     $userentity->setIpaddress($ipaddress->getIpAddress());
                     $userentity->setLastlogindate($userentity->getLogindate());
                     $userentity->setLogindate(new \Datetime());
                     $logintimes = (int) $userentity->getLogintimes() + 1;
                     $userentity->setLogintimes($logintimes);
                     //Update session information
                     $pr->saveUser($userentity);
                     return $this->redirect()->toRoute('home', array('action' => 'index'));
                 }
                 $usersession = new Container('USER');
                 $usersession->userid = $this->userid;
                 //Clear session
                 $this->authservice->clearIdentity();
                 return $this->redirect()->toRoute('login', array('action' => 'renewpassword'));
             } else {
                 //If it new student then authenticate using email address in enrolment
                 //                   $enrollmentauth = $this->cs->authNewStudent($loginCredentials['username'], $loginCredentials['password'],$this->em);
                 //                   if(count($enrollmentauth)){
                 //                       $registersession = new Container('ENROLLMENT');
                 //                       $registersession->emailaddress = $loginCredentials['username'];
                 //                       return $this->redirect()->toRoute('login', array('action' => 'register'));
                 //                   }
                 //                   //Not new student and user account does not exist
                 //                   if(!empty($messages['username']))
                 //                        $formlogin->get('Login')->get('username')->setMessages(array($messages['username']));
                 //                   if(!empty($messages['password']))
                 //                        $formlogin->get('Login')->get('password')->setMessages(array($messages['password']));
             }
         } else {
             $messages = $formlogin->getMessages();
         }
     }
     return new ViewModel(array("frmlogin" => $formlogin, "errormessage" => $messages));
 }
 /**
  * {@inheritDoc}
  */
 public function isExcluded()
 {
     $userIp = $this->ipProvider->getIpAddress();
     foreach ($this->ips as $ip) {
         if ($ip == $userIp) {
             return true;
         }
     }
     return false;
 }
 /**
  * {@inheritDoc}
  *
  * @return IpExclusion
  * @throws \InvalidArgumentException
  */
 public function createService(ServiceLocatorInterface $serviceLocator)
 {
     $options = $serviceLocator->get('ZfMaintenanceOptions');
     $exclusions = $options->getExclusions();
     if (!isset($exclusions['ZfMaintenanceIpExclusion'])) {
         throw new \InvalidArgumentException('Config for "Jgut\\Zf\\Maintenance\\Exclusion\\IpExclusion" not set');
     }
     $ipProvider = new RemoteAddress();
     $ipProvider->setUseProxy(true);
     $ips = $exclusions['ZfMaintenanceIpExclusion'];
     return new IpExclusion($ips, $ipProvider);
 }
 private function prepareSellerData($sellerData)
 {
     $remote = new RemoteAddress();
     $ipClient = $remote->getIpAddress();
     $sellerData['ip'] = $ipClient;
     $sellerData['status'] = 0;
     $sellerData['approved'] = 0;
     $sellerData['salt'] = time();
     $sellerData['password'] = md5($sellerData['password'] . $sellerData['salt']);
     $sellerData['token'] = md5(uniqid(mt_rand(), true));
     $sellerData['date_added'] = date("Y-m-d H:i:s");
     return $sellerData;
 }
Exemple #8
0
 public function onBootstrap(MvcEvent $e)
 {
     $app = $e->getApplication();
     $sm = $app->getServiceManager();
     $request = $app->getRequest();
     $response = $app->getResponse();
     $appConfig = $sm->get('Configuration');
     $sessionConfig = new SessionConfig();
     $sessionConfig->setOptions($appConfig['session']);
     $sessionManager = new SessionManager($sessionConfig);
     $sessionManager->start();
     $responseHeaders = $response->getHeaders();
     $requestHeaders = $request->getHeaders();
     $this->checkCloudFlareHttpHeader();
     $requestUriPath = $request->getUri()->getPath();
     $requestExtension = pathinfo($requestUriPath, PATHINFO_EXTENSION);
     if (!in_array($requestExtension, ['js', 'css'])) {
         $eventManager = $app->getEventManager();
         $moduleRouteListener = new ModuleRouteListener();
         $moduleRouteListener->attach($eventManager);
         $sharedManager = $eventManager->getSharedManager();
         $sharedManager->attach('Zend\\Mvc\\Controller\\AbstractActionController', 'dispatch', function ($e) use($sm) {
             $controller = $e->getTarget();
             $controller->getEventManager()->attachAggregate($sm->get('Visitor'));
         }, 2);
         $client = new RemoteAddress();
         $queryParams = $request->getQuery();
         $setPartnerId = (isset($queryParams['gid']) and is_numeric($queryParams['gid'])) ? ['gid' => (int) $queryParams['gid'], 'url' => $request->getUri()] : FALSE;
         $setLang = (isset($queryParams['lang']) and is_string($queryParams['lang'])) ? ['lang' => $queryParams['lang'], 'url' => $request->getUri()] : FALSE;
         $setCurrency = (isset($queryParams['cur']) and is_string($queryParams['cur'])) ? ['cur' => $queryParams['cur'], 'url' => $request->getUri()] : FALSE;
         if ($requestHeaders->has('Accept-Language')) {
             $browserLang = $requestHeaders->get('Accept-Language')->getPrioritized();
         } else {
             $browserLang = FALSE;
         }
         if ($requestHeaders->has('User-Agent')) {
             $userAgent = $requestHeaders->get('User-Agent')->getFieldValue();
         } else {
             $userAgent = FALSE;
         }
         if ($requestHeaders->has('Referer')) {
             $referer = $requestHeaders->get('Referer');
         } else {
             $referer = FALSE;
         }
         $eventManager->trigger('detectVisitor', $this, array('setLang' => $setLang, 'setCurrency' => $setCurrency, 'browserLang' => $browserLang, 'userAgent' => $userAgent, 'referer' => $referer, 'request' => $request, 'clientIp' => $client->getIpAddress(), 'clientProxy' => $client->getUseProxy(), 'setPartnerId' => $setPartnerId, 'sessionManager' => $sessionManager, 'response' => $response, 'responseHeaders' => $responseHeaders, 'requestHeaders' => $requestHeaders, 'serviceLocator' => $sm));
         $eventManager->attach(\Zend\Mvc\MvcEvent::EVENT_ROUTE, array($this, 'onPreDispatch'));
     }
     $dbAdapter = $sm->get('Zend\\Db\\Adapter\\Adapter');
     GlobalAdapterFeature::setStaticAdapter($dbAdapter);
 }
Exemple #9
0
 /**
  * Initialize proxy with config
  *
  * @param    Config    $config
  */
 public function __construct(Config $config, ZendLogger $logger, Request $request)
 {
     $this->config = $config;
     $this->logger = $logger;
     $trustedProxies = explode(',', $this->config->get('TrustedProxy')->get('loadbalancer'));
     // Populate client info properties from request
     $RemoteAddress = new RemoteAddress();
     $RemoteAddress->setUseProxy();
     $RemoteAddress->setTrustedProxies($trustedProxies);
     $ipAddress = $RemoteAddress->getIpAddress();
     $this->clientIp = array('IPv4' => $ipAddress);
     $Request = new Request();
     $this->clientUri = $Request->getUri();
 }
 private function prepareDataCustomer($customerData)
 {
     $remote = new RemoteAddress();
     $ipClient = $remote->getIpAddress();
     $customerData['address_id'] = 0;
     $customerData['ip'] = $ipClient;
     $customerData['status'] = 0;
     $customerData['approved'] = 0;
     $customerData['newsletter'] = 1;
     $customerData['salt'] = time();
     $customerData['password'] = md5($customerData['password'] . $customerData['salt']);
     $customerData['token'] = md5(uniqid(mt_rand(), true));
     $customerData['date_added'] = date("Y-m-d H:i:s");
     return $customerData;
 }
Exemple #11
0
 public function onBootstrap(MvcEvent $e)
 {
     $events = StaticEventManager::getInstance();
     $serviceManager = $e->getApplication()->getServiceManager();
     $appConfig = $serviceManager->get('Config');
     $logger = new Logger();
     if (!isset($appConfig['operation_logger'])) {
         throw new \RuntimeException("Logger not properly configured");
     }
     if (!isset($appConfig['operation_logger']['priority_filter'])) {
         throw new \RuntimeException("You must specify a 'priority_filter' config param");
     }
     $logFilter = new PriorityFilter($appConfig['operation_logger']['priority_filter']);
     if (!is_null($appConfig['operation_logger']['db_adapter'])) {
         if (empty($appConfig['operation_logger']['logger_table'])) {
             throw new \RuntimeException("You must specify a 'logger_table' config param");
         }
         $dbAdapter = $serviceManager->get($appConfig['operation_logger']['db_adapter']);
         if (!$dbAdapter instanceof \Zend\Db\Adapter\Adapter) {
             throw new \RuntimeException("Failed to load database adapter for logger");
         }
         $tableMapping = array('timestamp' => 'event_date', 'priorityName' => 'priority', 'message' => 'event', 'extra' => array('id_operation_log' => 'id_operation_log', 'note' => 'note', 'table' => 'table_name', 'id_user' => 'id_user', 'username' => 'username', 'id_row' => 'id_row', 'field' => 'field', 'value_old' => 'value_old', 'value_new' => 'value_new', 'source' => 'source', 'uri' => 'uri', 'ip' => 'ip', 'session_id' => 'session_id'));
         $logWriter = new DbWriter($dbAdapter, $appConfig['operation_logger']['logger_table'], $tableMapping);
         $logWriter->addFilter($logFilter);
         $logger->addWriter($logWriter);
     }
     // nel caso si volgia fare un file LOG
     if (isset($appConfig['operation_logger']['log_file']) && !is_null($appConfig['operation_logger']['log_file'])) {
         $streamWriter = new StreamWriter($appConfig['operation_logger']['log_file']);
         $streamWriter->addFilter($logFilter);
         $logger->addWriter($streamWriter);
     }
     $request = $e->getApplication()->getRequest();
     $remoteAddress = new RemoteAddress();
     Logger::registerErrorHandler($logger, true);
     Logger::registerExceptionHandler($logger);
     // Attacco evento per trigger LOG! (evento: operation-log)
     $events->attach("*", 'operation-log', function (\Zend\EventManager\Event $e) use($logger, $request, $remoteAddress, $serviceManager) {
         $targetClass = get_class($e->getTarget());
         $message = $e->getParam('message');
         $priority = $e->getParam('priority', Logger::INFO);
         $zfcAuthEvents = $serviceManager->get('zfcuser_auth_service');
         $idUser = $zfcAuthEvents->hasIdentity() ? $zfcAuthEvents->getIdentity()->getId() : (array_key_exists('id_user', $message) ? $message['id_user'] : '******');
         $displayName = $zfcAuthEvents->hasIdentity() ? $zfcAuthEvents->getIdentity()->getDisplayName() : (array_key_exists('username', $message) ? $message['username'] : '******');
         $extras = array('id_operation_log' => null, 'note' => array_key_exists('note', $message) ? $message['note'] : null, 'table_name' => array_key_exists('table', $message) ? $message['table'] : null, 'operation' => array_key_exists('operation', $message) ? $message['operation'] : null, 'id_user' => $idUser, 'username' => $displayName, 'id_row' => array_key_exists('id_row', $message) ? $message['id_row'] : null, 'field' => array_key_exists('field', $message) ? $message['field'] : null, 'value_old' => array_key_exists('value_old', $message) ? $message['value_old'] : null, 'value_new' => array_key_exists('value_new', $message) ? $message['value_new'] : null, 'source' => $targetClass, 'uri' => $request->getUriString(), 'ip' => $remoteAddress->getIpAddress(), 'session_id' => session_id());
         $logger->log($priority, $message['message'], $extras);
     });
 }
Exemple #12
0
 /**
  * Configure instance
  * 
  * @param array $options
  */
 protected function configure(array $options)
 {
     if (isset($options['actionPluginManager'])) {
         $config = new Config($options['actionPluginManager']);
         $config->configureServiceManager($this->getActionPlugins());
         unset($options['actionPluginManager']);
     }
     if (isset($options['storagePluginManager'])) {
         $config = new Config($options['storagePluginManager']);
         $config->configureServiceManager($this->getStoragePlugins());
         unset($options['storagePluginManager']);
     }
     foreach ($options as $key => $value) {
         switch ($key) {
             case 'pluginName':
                 $this->setPluginName($name);
                 break;
             case 'limits':
                 $this->setLimits($value);
                 break;
             case 'storage':
                 $this->setStorage($value);
                 break;
             case 'useProxy':
                 $this->remoteAddress->setUseProxy($value);
                 break;
             case 'trustedProxies':
                 $this->remoteAddress->setTrustedProxies($value);
                 break;
         }
     }
 }
 /**
  * Add answer vote
  *
  * @param integer $questionId
  * @param integer $answerId
  * @return string|boolean
  */
 public function addAnswerVote($questionId, $answerId)
 {
     try {
         $this->adapter->getDriver()->getConnection()->beginTransaction();
         $remote = new RemoteAddress();
         $remote->setUseProxy(true);
         // add a track info
         $insert = $this->insert()->into('poll_answer_track')->values(['question_id' => $questionId, 'answer_id' => $answerId, 'ip' => inet_pton($remote->getIpAddress()), 'created' => time()]);
         $statement = $this->prepareStatementForSqlObject($insert);
         $statement->execute();
         $this->adapter->getDriver()->getConnection()->commit();
     } catch (Exception $e) {
         $this->adapter->getDriver()->getConnection()->rollback();
         ApplicationErrorLogger::log($e);
         return $e->getMessage();
     }
     return true;
 }
Exemple #14
0
 public function onBootstrap(MvcEvent $e)
 {
     $events = StaticEventManager::getInstance();
     $serviceManager = $e->getApplication()->getServiceManager();
     $appConfig = $serviceManager->get('Config');
     $logger = new Logger();
     if (!isset($appConfig['logger'])) {
         throw new \RuntimeException("Logger not properly configured");
     }
     if (!isset($appConfig['logger']['priority_filter'])) {
         throw new \RuntimeException("You must specify a 'priority_filter' config param");
     }
     $logFilter = new PriorityFilter($appConfig['logger']['priority_filter']);
     if (!is_null($appConfig['logger']['db_adapter'])) {
         if (empty($appConfig['logger']['logger_table'])) {
             throw new \RuntimeException("You must specify a 'logger_table' config param");
         }
         $dbAdapter = $serviceManager->get($appConfig['logger']['db_adapter']);
         if (!$dbAdapter instanceof \Zend\Db\Adapter\Adapter) {
             throw new \RuntimeException("Failed to load database adapter for logger");
         }
         $tableMapping = array('timestamp' => 'event_date', 'priorityName' => 'priority', 'message' => 'event', 'extra' => array('source' => 'source', 'uri' => 'uri', 'ip' => 'ip', 'session_id' => 'session_id'));
         $logWriter = new DbWriter($dbAdapter, $appConfig['logger']['logger_table'], $tableMapping);
         $logWriter->addFilter($logFilter);
         $logger->addWriter($logWriter);
     }
     if (isset($appConfig['logger']['log_file']) && !is_null($appConfig['logger']['log_file'])) {
         $streamWriter = new StreamWriter($appConfig['logger']['log_file']);
         $streamWriter->addFilter($logFilter);
         $logger->addWriter($streamWriter);
     }
     $request = $e->getApplication()->getRequest();
     $remoteAddress = new RemoteAddress();
     Logger::registerErrorHandler($logger, true);
     Logger::registerExceptionHandler($logger);
     $events->attach("*", 'log', function (\Zend\EventManager\Event $e) use($logger, $request, $remoteAddress) {
         $targetClass = get_class($e->getTarget());
         $message = $e->getParam('message', "[No Message Provided]");
         $priority = $e->getParam('priority', Logger::INFO);
         $extras = array('source' => $targetClass, 'uri' => $request->getUriString(), 'ip' => $remoteAddress->getIpAddress(), 'session_id' => session_id());
         $logger->log($priority, $message, $extras);
     });
 }
Exemple #15
0
 /**
  * Boostrap
  *
  * @param Event $e Event
  *
  * @return void
  */
 public function onBootstrap(Event $e)
 {
     $this->template = new Template();
     $templates = $this->template->getTemplates();
     $application = $e->getApplication();
     $serviceManager = $application->getServiceManager();
     foreach ($templates as $template) {
         $this->events()->attach($template['event_identifier'], $template['event_name'], function (Event $event) use($template, $serviceManager) {
             $userId = null;
             $auth = $serviceManager->get('Auth');
             if ($auth->hasIdentity()) {
                 $userId = $auth->getIdentity()->getId();
                 $event->setParam('user', $auth->getIdentity()->getName());
             } else {
                 $remote = new RemoteAddress();
                 $event->setParam('user', $remote->getIpAddress());
             }
             $content = $this->template->render($event, $template);
             $this->template->addEvent($content, $template['id'], $userId);
         });
     }
 }
 /**
  * Adds IP, uri and other details to the event extras
  *
  * @param array $event event data
  * @return array event data
  */
 public function process(array $event)
 {
     $uri = '';
     $request = null;
     if ($this->request instanceof HttpRequest) {
         $uri = $this->request->getUriString();
     }
     if (method_exists($this->request, 'toString')) {
         $request = $this->request->toString();
     }
     // get request uri and IP address and add it to the extras of the logger
     $remoteAddress = new RemoteAddress();
     $extras = array('uri' => $uri, 'request' => $request, 'ip' => $remoteAddress->getIpAddress(), 'session_id' => session_id());
     if (isset($event['extra']) && is_array($event['extra'])) {
         $extras = array_merge($event['extra'], $extras);
     }
     $event['extra'] = $extras;
     // check if we have trace, else get it explicitly
     if (empty($event['extra']['trace'])) {
         $event['extra']['trace'] = $this->getTrace();
     }
     // check if trace is an array and format it as simple string
     if (is_array($event['extra']['trace'])) {
         $traceString = '';
         $trace = $event['extra']['trace'];
         $index = 1;
         for ($i = 0; $i < count($trace); $i++) {
             if (isset($trace[$i]['class']) && (false !== strpos($trace[$i]['class'], 'Zend\\Log') || false !== strpos($trace[$i]['class'], 'DhErrorLogging'))) {
                 continue;
             }
             $traceString .= '#' . $index . (isset($trace[$i - 1]['file']) ? $trace[$i - 1]['file'] : ($i == 0 && !empty($event['extra']['file']) ? $event['extra']['file'] : '')) . "(" . (isset($trace[$i - 1]['line']) ? $trace[$i - 1]['line'] : ($i == 0 && !empty($event['extra']['line']) ? $event['extra']['line'] : '')) . "): " . (isset($trace[$i]['class']) ? $trace[$i]['class'] : '') . (isset($trace[$i]['type']) ? $trace[$i]['type'] : ' ') . (isset($trace[$i]['function']) ? $trace[$i]['function'] : '') . "\n";
             // add new line for file logs
             $index++;
         }
         $event['extra']['trace'] = $traceString . "\n\n";
         // add 2x new line for file logs
     }
     return $event;
 }
 /**
  * @return object
  */
 public function processAction()
 {
     /** @var \Zend\Http\Request $request */
     $request = $this->getRequest();
     if (!$request->isPost()) {
         return $this->redirect()->toUrl('/reset-password');
     }
     /*
      * @var ResetPasswordForm
      */
     $form = $this->resetPasswordForm;
     $form->setInputFilter($form->getInputFilter());
     $form->setData($request->getPost());
     if (!$form->isValid()) {
         return $this->setLayoutMessages($form->getMessages(), 'error');
     }
     $formData = $form->getData();
     /** @var \SD\Admin\Entity\User $existingEmail */
     $existingEmail = $this->getTable('SD\\Admin\\Model\\UserTable')->getEntityRepository()->findBy(['email' => $formData['email']]);
     if (count($existingEmail) !== 1) {
         return $this->setLayoutMessages($this->translate('EMAIL') . ' <b>' . $formData['email'] . '</b> ' . $this->translate('NOT_FOUND'), 'warning');
     }
     $func = $this->getFunctions();
     $token = $func::generateToken();
     $resetpw = new ResetPassword();
     $remote = new RemoteAddress();
     $resetpw->setToken($token);
     $resetpw->setUser($existingEmail[0]->getId());
     $resetpw->setDate(date('Y-m-d H:i:s', time()));
     $resetpw->setIp($remote->getIpAddress());
     $this->getTable('SD\\Application\\Model\\ResetPasswordTable')->saveResetPassword($resetpw);
     $message = $this->translate('NEW_PW_TEXT') . ' ' . $_SERVER['SERVER_NAME'] . '/newpassword/token/' . $token;
     $result = $this->Mailing()->sendMail($formData['email'], $existingEmail[0]->getFullName(), $this->translate('NEW_PW_TITLE'), $message, $this->systemSettings('general', 'system_email'), $this->systemSettings('general', 'site_name'));
     if (!$result) {
         return $this->setLayoutMessages($this->translate('EMAIL_NOT_SENT'), 'error');
     }
     $this->setLayoutMessages($this->translate('PW_SENT') . ' <b>' . $formData['email'] . '</b>', 'success');
     return $this->redirect()->toUrl('/login');
 }
 /**
  * Set the parameters required by Gedmo extensions
  *
  * @param EventInterface $e
  */
 public function setExtensionParams(EventInterface $e)
 {
     $serviceManager = $e->getApplication()->getServiceManager();
     $remote = new RemoteAddress();
     $user = '******';
     if ($serviceManager->get('zfcuser_auth_service')->hasIdentity()) {
         $user = $serviceManager->get('zfcuser_auth_service')->getIdentity();
     }
     $serviceManager->get('doctrine_extensions.blameable')->setUserValue($user);
     $serviceManager->get('doctrine_extensions.iptraceable')->setIpValue($remote->getIpAddress());
     $serviceManager->get('doctrine_extensions.loggable')->setUsername($user);
     $entityManager = $serviceManager->get('Doctrine\\ORM\\EntityManager');
     $entityManager->getFilters()->enable('soft-deleteable');
     if ($user !== 'anonymous') {
         $roles = $entityManager->getRepository('User\\Entity\\RoleLinker')->findByUser($user);
         foreach ($roles as $role) {
             if ($role->getRoleId() === 'Administrator') {
                 $entityManager->getFilters()->disable('soft-deleteable');
             }
         }
     }
 }
 /**
  * @return \Zend\Http\Response
  */
 public function processregistrationAction()
 {
     /** @var \Zend\Http\Request $request */
     $request = $this->getRequest();
     if (!$request->isPost()) {
         return $this->redirect()->toUrl('/registration');
     }
     /*
      * @var RegistrationForm
      */
     $form = $this->registrationForm;
     $form->setInputFilter($form->getInputFilter());
     $form->setData($request->getPost());
     if (!$form->isValid()) {
         return $this->setLayoutMessages($form->getMessages(), 'error');
     }
     $formData = $form->getData();
     /*
      * See if there is already registered user with this email
      */
     $existingEmail = $this->getTable('SD\\Admin\\Model\\UserTable')->getEntityRepository()->findBy(['email' => $formData['email']]);
     if (count($existingEmail) > 0) {
         return $this->setLayoutMessages($this->translate('EMAIL_EXIST') . ' <b>' . $formData['email'] . '</b> ' . $this->translate('ALREADY_EXIST'), 'info');
     }
     $func = $this->getFunctions();
     $remote = new RemoteAddress();
     $registerUser = new User();
     $registerUser->setName($formData['name']);
     $registerUser->setPassword($func::createPassword($formData['password']));
     $registerUser->setRegistered(date('Y-m-d H:i:s', time()));
     $registerUser->setIp($remote->getIpAddress());
     $registerUser->setEmail($formData['email']);
     $registerUser->setLanguage($this->language());
     $this->getTable('SD\\Admin\\Model\\UserTable')->saveUser($registerUser);
     $this->setLayoutMessages($this->translate('REGISTRATION_SUCCESS'), 'success');
     return $this->redirect()->toUrl('/login');
 }
 /**
  * Validate spam IP
  *
  * @param $value
  * @param array $context
  * @return boolean
  */
 public function validateSpamIp($value, array $context = [])
 {
     $remote = new RemoteAddress();
     $remote->setUseProxy(true);
     return $this->model->isSpamIp($remote->getIpAddress()) ? false : true;
 }
Exemple #21
0
 /**
  * Add page rating
  *
  * @param integer $pageId
  * @param integer $widgetConnectionId
  * @param float $ratingValue
  * @param string $slug
  * @return string|float
  */
 public function addPageRating($pageId, $widgetConnectionId, $ratingValue, $slug = null)
 {
     try {
         $this->adapter->getDriver()->getConnection()->beginTransaction();
         $pageRatingId = 0;
         $remote = new RemoteAddress();
         $remote->setUseProxy(true);
         $visitorIp = inet_pton($remote->getIpAddress());
         // check the page's rating existing
         if (null == ($pageRateInfo = $this->getPageRatingInfo($pageId, $slug))) {
             // create a new page rating
             $insert = $this->insert()->into('page_rating')->values(['page_id' => $pageId, 'widget_connection' => $widgetConnectionId, 'slug' => $slug, 'total_rating' => $ratingValue, 'total_count' => 1]);
             $statement = $this->prepareStatementForSqlObject($insert);
             $statement->execute();
             $pageRatingId = $this->adapter->getDriver()->getLastGeneratedValue();
         } else {
             // update the existing page's rating
             $update = $this->update()->table('page_rating')->set(['total_rating' => new Expression('total_rating + ?', [$ratingValue]), 'total_count' => new Expression('total_count + 1')])->where(['page_id' => $pageId, 'slug' => $slug]);
             $statement = $this->prepareStatementForSqlObject($update);
             $statement->execute();
         }
         // add a track info
         $insert = $this->insert()->into('page_rating_track')->values(['rating_id' => !empty($pageRateInfo['id']) ? $pageRateInfo['id'] : $pageRatingId, 'ip' => $visitorIp, 'rating' => $ratingValue, 'created' => time()]);
         $statement = $this->prepareStatementForSqlObject($insert);
         $statement->execute();
         $this->adapter->getDriver()->getConnection()->commit();
     } catch (Exception $e) {
         $this->adapter->getDriver()->getConnection()->rollback();
         ApplicationErrorLogger::log($e);
         return $e->getMessage();
     }
     return !empty($pageRateInfo) ? ($pageRateInfo['total_rating'] + $ratingValue) / ($pageRateInfo['total_count'] + 1) : $ratingValue;
 }
Exemple #22
0
 /**
  * Returns client IP address.
  *
  * @return string IP address.
  */
 protected function getIpAddress()
 {
     $remoteAddress = new RemoteAddress();
     $remoteAddress->setUseProxy(static::$useProxy);
     $remoteAddress->setTrustedProxies(static::$trustedProxies);
     $remoteAddress->setProxyHeader(static::$proxyHeader);
     return $remoteAddress->getIpAddress();
 }
 public function handle()
 {
     $args = func_get_arg(0);
     $serviceManager = ServiceLocatorFactory::getInstance()->getServiceLocator();
     $config = $serviceManager->get('config');
     $headers = $serviceManager->get('request')->getHeaders();
     $this->_customConfig = $config["GTErrorTracker"];
     $this->_customConfig['errorCodeResponse'] = $this->_customConfig['errorCodeResponse'] ? $this->_customConfig['errorCodeResponse'] : self::ERROR_CODE_RESPONSE;
     $this->_customConfig['secondsPreventErrorRecursion'] = $this->_customConfig['secondsPreventErrorRecursion'] ? $this->_customConfig['secondsPreventErrorRecursion'] : self::SECONDS_PREVENT_ERROR_RECURSION;
     $this->_headerSignKey = $headers->get('Signkey');
     $this->_headerToken = $headers->get('Token');
     if ($args instanceof \Exception) {
         $this->_f_event_file = $args->getFile();
         $this->_f_message = $args->getMessage();
         $this->_f_line = $args->getLine();
         $this->_f_event_code = "Exception:" . $args->getCode();
         $this->_f_stack_trace = $this->stackTraceProcessing($args->getTrace(), $args->getMessage());
         if (isset($args->xdebug_message)) {
             $this->_f_xdebug_message = $args->xdebug_message;
         }
     } else {
         //Arguments Order
         //$errno, $errstr, $errfile, $errline, $trace
         $args = func_get_args();
         $errno = $args[0];
         $errstr = $args[1];
         $this->_f_event_file = $args[2];
         $this->_f_line = $args[3];
         $trace = $args[4];
         // trace array
         $errcontext = $args[5];
         // variables value near error
         $route = isset($args[6]) ? $args[6] : null;
         //wrong route on 404 page
         $type = "Undefined";
         switch ($errno) {
             case E_ERROR:
                 $type = "E_ERROR";
                 break;
             case E_WARNING:
                 $type = "E_WARNING";
                 break;
             case E_PARSE:
                 $type = "E_PARSE";
                 break;
             case E_NOTICE:
                 $type = "E_NOTICE";
                 break;
             case E_CORE_ERROR:
                 $type = "E_CORE_ERROR";
                 break;
             case E_CORE_WARNING:
                 $type = "E_CORE_WARNING";
                 break;
             case E_COMPILE_ERROR:
                 $type = "E_COMPILE_ERROR";
                 break;
             case E_COMPILE_WARNING:
                 $type = "E_COMPILE_WARNING";
                 break;
             case E_USER_ERROR:
                 $type = "E_USER_ERROR";
                 break;
             case E_USER_WARNING:
                 $type = "E_USER_WARNING";
                 break;
             case E_USER_NOTICE:
                 $type = "E_USER_NOTICE";
                 break;
             case E_STRICT:
                 $type = "E_STRICT";
                 break;
             case E_RECOVERABLE_ERROR:
                 $type = "E_RECOVERABLE_ERROR";
                 break;
             case E_DEPRECATED:
                 $type = "E_DEPRECATED";
                 break;
             case E_USER_DEPRECATED:
                 $type = "E_USER_DEPRECATED";
                 break;
             case Application::ERROR_CONTROLLER_NOT_FOUND:
                 $type = "ERROR_CONTROLLER_NOT_FOUND";
                 break;
             case Application::ERROR_CONTROLLER_INVALID:
                 $type = "ERROR_CONTROLLER_INVALID";
                 break;
             case Application::ERROR_ROUTER_NO_MATCH:
                 $type = "ERROR_ROUTER_NO_MATCH";
                 break;
             case Application::ERROR_CONTROLLER_CANNOT_DISPATCH:
                 $type = "ERROR_CONTROLLER_CANNOT_DISPATCH";
                 break;
         }
         $this->_f_event_code = $type;
         if ($this->_f_event_type == EventType::ROUTER_NOT_MATCH) {
             $this->_f_message = "{$errstr} at route: {$route}";
         } else {
             $this->_f_message = "Backtrace from {$this->_f_event_code} {$errstr} at {$this->_f_event_file} {$this->_f_line} ";
         }
         $this->_f_stack_trace = $this->stackTraceProcessing($trace, $this->_f_message);
     }
     $remote = new RemoteAddress();
     $this->_f_ip_address = $remote->getIpAddress();
     $hasGTCurrentUser = ServiceLocatorFactory::getInstance()->getServiceLocator()->has('gt_current_user');
     if ($hasGTCurrentUser) {
         $user = ServiceLocatorFactory::getInstance()->getServiceLocator()->get('gt_current_user');
         if ($user instanceof GTUserInterface) {
             $this->_f_user_id = $user->getId();
         }
     }
     $event_hash = $this->getHash();
     $session = new Container('user');
     if ($session->eventHash == $event_hash) {
         if ($this->_f_date_time - $session->errorTime < $this->_customConfig['secondsPreventErrorRecursion']) {
             $this->echoIfDevMode($session->lastEventId);
         } else {
             $session->errorTime = $this->_f_date_time;
             // save time when error has been occurred
             $this->redirectIfDevMode($session->lastEventId);
         }
     } else {
         $this->_f_event_hash = $event_hash;
         if ($this->_customConfig["GTErrorTypesSaveToDb"][H\EventType::getName($this->_f_event_type)]) {
             $this->save();
             $session->eventHash = $event_hash;
             // save new Hash to session
             $session->lastEventId = $this->_f_event_logger_id;
             // save new ID to session
             $session->errorTime = $this->_f_date_time;
             // save time when error has been occurred
             $this->redirectIfDevMode($session->lastEventId);
         }
     }
 }
 /**
  * @return \Zend\Http\Response
  */
 public function newpasswordprocessAction()
 {
     $func = $this->getFunctions();
     /*
      * @var NewPasswordForm
      */
     $form = $this->newPasswordForm;
     /** @var \Zend\Http\Request $request */
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setInputFilter($form->getInputFilter());
         $form->setData($request->getPost());
         if (!$form->isValid()) {
             $this->setLayoutMessages($form->getMessages(), 'error');
         }
         $formData = $form->getData();
         $pw = $func::createPassword($formData['password']);
         if (!empty($pw)) {
             /** @var \SD\Admin\Entity\User $user */
             $user = $this->getTable('SD\\Admin\\Model\\UserTable')->getUser($this->getTranslation()->offsetGet('resetpwUserId'));
             $remote = new RemoteAddress();
             $user->setPassword($pw);
             $user->setIp($remote->getIpAddress());
             $this->getTable('SD\\Admin\\Model\\UserTable')->saveUser($user);
             $this->setLayoutMessages($this->translate('NEW_PW_SUCCESS'), 'success');
         } else {
             $this->setLayoutMessages($this->translate('PASSWORD_NOT_GENERATED'), 'error');
         }
     }
     return $this->redirect()->toUrl('/login');
 }
Exemple #25
0
 private function getRemoteAddress()
 {
     $remoteAddress = new RemoteAddress();
     return $remoteAddress->getIpAddress();
 }
 public function getIp()
 {
     $remote = new RemoteAddress();
     return $remote->getIpAddress();
 }
 /**
  * Add comment
  *
  * @param string $language
  * @param integer $maxNestedLevel
  * @param string $pageUrl
  * @param array $basicData
  *      integer active
  *      string comment
  *      string name
  *      string email
  *      integer user_id
  * @param integer $pageId
  * @param string $slug
  * @param integer $replyId
  * @return array|string
  */
 public function addComment($language, $maxNestedLevel, $pageUrl, array $basicData, $pageId, $slug = null, $replyId = null)
 {
     $replyComment = false;
     // get a reply comment info
     if ($replyId) {
         $replyComment = $this->getCommentInfo($replyId, $pageId, $slug);
         if ($replyComment['level'] > $maxNestedLevel) {
             return;
         }
     }
     // the reply comment doesn't exist or not active
     if ($replyId && !$replyComment) {
         return;
     }
     $filter = ['page_id' => $pageId, 'slug' => $slug];
     $remote = new RemoteAddress();
     $remote->setUseProxy(true);
     $commentHidden = $basicData['active'] == self::COMMENT_STATUS_NOT_ACTIVE || $replyComment && $replyComment['hidden'] == CommentNestedSet::COMMENT_STATUS_HIDDEN;
     $data = array_merge($basicData, ['hidden' => $commentHidden ? self::COMMENT_STATUS_HIDDEN : self::COMMENT_STATUS_NOT_HIDDEN, 'page_id' => $pageId, 'slug' => $slug, 'ip' => inet_pton($remote->getIpAddress()), 'guest_id' => empty($basicData['user_id']) ? $this->getGuestId() : null, 'created' => time(), 'language' => $language]);
     $parentLevel = $replyComment ? $replyComment['level'] : 0;
     $parentLeftKey = $replyComment ? $replyComment['left_key'] : 0;
     // add reply comments to the start
     if ($parentLevel) {
         $commentId = $this->insertNodeToStart($parentLevel, $parentLeftKey, $data, $filter);
     } else {
         $lastRightNode = $this->getLastNode($filter);
         // add a comment to the end
         $commentId = $lastRightNode ? $this->insertNode($parentLevel, $lastRightNode, $data, $filter) : $this->insertNodeToStart($parentLevel, $parentLeftKey, $data, $filter);
     }
     if (is_numeric($commentId)) {
         $commentInfo = $this->getCommentInfo($commentId, $pageId, $slug);
         // fire the add comment event
         CommentEvent::fireAddCommentEvent($pageUrl, $commentInfo, $replyComment);
         return $commentInfo;
     }
     return $commentId;
 }
Exemple #28
0
 /**
  * @param MvcEvent                $event
  * @param ServiceLocatorInterface $sm
  *
  * @return ErrorHandling
  */
 private function logAuthorisationError(MvcEvent $event, ServiceLocatorInterface $sm)
 {
     $remote = new RemoteAddress();
     $errorMsg = ' *** LOG ***
     Controller: ' . $event->getRouteMatch()->getParam('controller') . ',
     Controller action: ' . $event->getRouteMatch()->getParam('action') . ',
     IP: ' . $remote->getIpAddress() . ',
     Browser string: ' . $sm->get('Request')->getServer()->get('HTTP_USER_AGENT') . ',
     Date: ' . date('Y-m-d H:i:s', time()) . ',
     Full URL: ' . $sm->get('Request')->getRequestUri() . ',
     Method used: ' . $sm->get('Request')->getMethod() . "\n";
     chmod($this->destination . date('F') . '.txt', 0777, true);
     $writer = new Stream($this->destination . date('F') . '.txt');
     $this->logger->addWriter($writer);
     $this->logger->info($errorMsg);
     return $this;
 }
 /**
  * @return \Zend\Http\Response
  */
 public function processloginAction()
 {
     $this->getView()->setTemplate('application/login/index');
     /** @var \Zend\Http\Request $request */
     $request = $this->getRequest();
     if (!$request->isPost()) {
         return $this->redirect()->toUrl('/login');
     }
     /*
      * @var LoginForm
      */
     $form = $this->loginForm;
     $form->setInputFilter($form->getInputFilter());
     $form->setData($request->getPost());
     /*
      * See if form is valid
      */
     if (!$form->isValid()) {
         $this->setLayoutMessages($form->getMessages(), 'error');
         return $this->redirect()->toUrl('/login');
     }
     $formData = $form->getData();
     $adapter = $this->getAuthAdapter($formData);
     $auth = new AuthenticationService();
     $result = $auth->authenticate($adapter);
     /*
      * See if authentication is valid
      */
     if (!$result->isValid()) {
         $this->setLayoutMessages($result->getMessages(), 'error');
         return $this->redirect()->toUrl('/login');
     }
     $user = $result->getIdentity();
     /*
      * If account is disabled/banned (call it w/e you like) clear user data and redirect
      */
     if ((int) $user->isDisabled() === 1) {
         $this->setLayoutMessages($this->translate('LOGIN_ERROR'), 'error');
         return $this->redirect()->toUrl('/login');
     }
     $remote = new RemoteAddress();
     $user->setLastLogin(date('Y-m-d H:i:s', time()));
     $user->setIp($remote->getIpAddress());
     $this->getTable('SD\\Admin\\Model\\UserTable')->saveUser($user);
     $manager = Container::getDefaultManager();
     if ($formData['rememberme'] == 1) {
         $manager->rememberMe(864000);
         //10 days
         $manager->getConfig()->setRememberMeSeconds(864000);
     }
     $manager->regenerateId();
     $this->authService->getStorage()->write($user);
     // puts only id in session!
     return $this->redirect()->toUrl('/');
 }