/**
  * This is just a copy-paste of the parent's member.
  * It's sole reason for existence here is the fact that the parent has it
  * defined as "private". See https://github.com/piwik/piwik/pull/8681 for
  * information.
  *
  * @param View $view
  */
 protected function configureView($view)
 {
     $this->setBasicVariablesView($view);
     $view->linkTitle = Piwik::getRandomTitle();
     // crsf token: don't trust the submitted value; generate/fetch it from session data
     $view->nonce = Nonce::getNonce('Login.login');
 }
示例#2
0
 /**
  * Shows the "Track Visits" checkbox.
  */
 public function optOut()
 {
     $trackVisits = !IgnoreCookie::isIgnoreCookieFound();
     $nonce = Common::getRequestVar('nonce', false);
     $language = Common::getRequestVar('language', '');
     if ($nonce !== false && Nonce::verifyNonce('Piwik_OptOut', $nonce)) {
         Nonce::discardNonce('Piwik_OptOut');
         IgnoreCookie::setIgnoreCookie();
         $trackVisits = !$trackVisits;
     }
     $view = new View('@CoreAdminHome/optOut');
     $view->trackVisits = $trackVisits;
     $view->nonce = Nonce::getNonce('Piwik_OptOut', 3600);
     $view->language = APILanguagesManager::getInstance()->isLanguageAvailable($language) ? $language : LanguagesManager::getLanguageCodeForCurrentUser();
     return $view->render();
 }
示例#3
0
 public function safemode($lastError = array())
 {
     $this->tryToRepairPiwik();
     if (empty($lastError)) {
         $lastError = array('message' => Common::getRequestVar('error_message', null, 'string'), 'file' => Common::getRequestVar('error_file', null, 'string'), 'line' => Common::getRequestVar('error_line', null, 'integer'));
     }
     $outputFormat = Common::getRequestVar('format', 'html', 'string');
     $outputFormat = strtolower($outputFormat);
     if (!empty($outputFormat) && 'html' !== $outputFormat) {
         $errorMessage = $lastError['message'];
         if (Piwik::isUserIsAnonymous()) {
             $errorMessage = 'A fatal error occurred.';
         }
         $response = new \Piwik\API\ResponseBuilder($outputFormat);
         $message = $response->getResponseException(new Exception($errorMessage));
         return $message;
     }
     if (Common::isPhpCliMode()) {
         // TODO: I can't find how this will ever get called / safeMode is never set for Console
         throw new Exception("Error: " . var_export($lastError, true));
     }
     $view = new View('@CorePluginsAdmin/safemode');
     $view->lastError = $lastError;
     $view->isSuperUser = Piwik::hasUserSuperUserAccess();
     $view->isAnonymousUser = Piwik::isUserIsAnonymous();
     $view->plugins = Plugin\Manager::getInstance()->loadAllPluginsAndGetTheirInfo();
     $view->deactivateNonce = Nonce::getNonce(static::DEACTIVATE_NONCE);
     $view->uninstallNonce = Nonce::getNonce(static::UNINSTALL_NONCE);
     $view->emailSuperUser = implode(',', Piwik::getAllSuperUserAccessEmailAddresses());
     $view->piwikVersion = Version::VERSION;
     $view->showVersion = !Common::getRequestVar('tests_hide_piwik_version', 0);
     $view->pluginCausesIssue = '';
     if (!empty($lastError['file'])) {
         preg_match('/piwik\\/plugins\\/(.*)\\//', $lastError['file'], $matches);
         if (!empty($matches[1])) {
             $view->pluginCausesIssue = $matches[1];
         }
     }
     return $view->render();
 }
示例#4
0
 public function userPluginSettings()
 {
     Piwik::checkUserIsNotAnonymous();
     $settings = $this->getPluginSettings();
     $vars = array('nonce' => Nonce::getNonce(static::SET_PLUGIN_SETTINGS_NONCE), 'pluginsSettings' => $this->getSettingsByType($settings, 'user'), 'firstSuperUserSettingNames' => $this->getFirstSuperUserSettingNames($settings), 'mode' => 'user');
     return $this->renderTemplate('pluginSettings', $vars);
 }
示例#5
0
 /**
  * @return View
  * @throws \Exception
  */
 public function getOptOutView()
 {
     if ($this->view) {
         return $this->view;
     }
     $trackVisits = !IgnoreCookie::isIgnoreCookieFound();
     $dntFound = $this->getDoNotTrackHeaderChecker()->isDoNotTrackFound();
     $setCookieInNewWindow = Common::getRequestVar('setCookieInNewWindow', false, 'int');
     if ($setCookieInNewWindow) {
         $reloadUrl = Url::getCurrentQueryStringWithParametersModified(array('showConfirmOnly' => 1, 'setCookieInNewWindow' => 0));
     } else {
         $reloadUrl = false;
         $nonce = Common::getRequestVar('nonce', false);
         if ($nonce !== false && Nonce::verifyNonce('Piwik_OptOut', $nonce)) {
             Nonce::discardNonce('Piwik_OptOut');
             IgnoreCookie::setIgnoreCookie();
             $trackVisits = !$trackVisits;
         }
     }
     $language = Common::getRequestVar('language', '');
     $lang = APILanguagesManager::getInstance()->isLanguageAvailable($language) ? $language : LanguagesManager::getLanguageCodeForCurrentUser();
     $this->addQueryParameters(array('module' => 'CoreAdminHome', 'action' => 'optOut', 'language' => $lang, 'setCookieInNewWindow' => 1), false);
     $this->view = new View("@CoreAdminHome/optOut");
     $this->view->setXFrameOptions('allow');
     $this->view->dntFound = $dntFound;
     $this->view->trackVisits = $trackVisits;
     $this->view->nonce = Nonce::getNonce('Piwik_OptOut', 3600);
     $this->view->language = $lang;
     $this->view->showConfirmOnly = Common::getRequestVar('showConfirmOnly', false, 'int');
     $this->view->reloadUrl = $reloadUrl;
     $this->view->javascripts = $this->getJavascripts();
     $this->view->stylesheets = $this->getStylesheets();
     $this->view->title = $this->getTitle();
     $this->view->queryParameters = $this->getQueryParameters();
     return $this->view;
 }
示例#6
0
 public function privacySettings()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $view = new View('@PrivacyManager/privacySettings');
     if (Piwik::hasUserSuperUserAccess()) {
         $view->deleteData = $this->getDeleteDataInfo();
         $view->anonymizeIP = $this->getAnonymizeIPInfo();
         $view->dntSupport = DoNotTrackHeaderChecker::isActive();
         $view->canDeleteLogActions = Db::isLockPrivilegeGranted();
         $view->dbUser = PiwikConfig::getInstance()->database['username'];
         $view->deactivateNonce = Nonce::getNonce(self::DEACTIVATE_DNT_NONCE);
         $view->activateNonce = Nonce::getNonce(self::ACTIVATE_DNT_NONCE);
     }
     $view->language = LanguagesManager::getLanguageCodeForCurrentUser();
     $this->setBasicVariablesView($view);
     return $view->render();
 }
 /**
  * Action to generate a new Google Authenticator secret for the current user
  *
  * @return string
  * @throws \Exception
  * @throws \Piwik\NoAccessException
  */
 public function regenerate()
 {
     Piwik::checkUserIsNotAnonymous();
     $view = new View('@GoogleAuthenticator/regenerate');
     $this->setGeneralVariablesView($view);
     $googleAuth = new PHPGangsta\GoogleAuthenticator();
     $storage = new Storage(Piwik::getCurrentUserLogin());
     $secret = Common::getRequestVar('gasecret', '', 'string');
     $authCode = Common::getRequestVar('gaauthcode', '', 'string');
     $authCodeNonce = Common::getRequestVar('authCodeNonce', '', 'string');
     $title = Common::getRequestVar('gatitle', $storage->getTitle(), 'string');
     $description = Common::getRequestVar('gadescription', $storage->getDescription(), 'string');
     if (!empty($secret) && !empty($authCode) && Nonce::verifyNonce(self::AUTH_CODE_NONCE, $authCodeNonce) && $googleAuth->verifyCode($secret, $authCode, 2)) {
         $storage->setSecret($secret);
         $storage->setDescription($description);
         $storage->setTitle($title);
         $this->auth->setAuthCode($authCode);
         $this->auth->validateAuthCode();
         Url::redirectToUrl(Url::getCurrentUrlWithoutQueryString() . Url::getCurrentQueryStringWithParametersModified(array('action' => 'settings', 'activate' => '1')));
     }
     if (empty($secret)) {
         $secret = $googleAuth->createSecret(32);
     }
     $view->title = $title;
     $view->description = $description;
     $view->authCodeNonce = Nonce::getNonce(self::AUTH_CODE_NONCE);
     $view->newSecret = $secret;
     $view->googleAuthImage = $googleAuth->getQRCodeGoogleUrl($description, $secret, $title);
     return $view->render();
 }
示例#8
0
 public function privacySettings()
 {
     Piwik::checkUserHasSomeAdminAccess();
     $view = new View('@PrivacyManager/privacySettings');
     if (Piwik::hasUserSuperUserAccess()) {
         $view->deleteData = $this->getDeleteDataInfo();
         $view->anonymizeIP = $this->getAnonymizeIPInfo();
         $dntChecker = new DoNotTrackHeaderChecker();
         $view->dntSupport = $dntChecker->isActive();
         $view->canDeleteLogActions = Db::isLockPrivilegeGranted();
         $view->dbUser = PiwikConfig::getInstance()->database['username'];
         $view->deactivateNonce = Nonce::getNonce(self::DEACTIVATE_DNT_NONCE);
         $view->activateNonce = Nonce::getNonce(self::ACTIVATE_DNT_NONCE);
         $view->maskLengthOptions = array(array('key' => '1', 'value' => Piwik::translate('PrivacyManager_AnonymizeIpMaskLength', array("1", "192.168.100.xxx")), 'description' => ''), array('key' => '2', 'value' => Piwik::translate('PrivacyManager_AnonymizeIpMaskLength', array("2", "192.168.xxx.xxx")), 'description' => Piwik::translate('General_Recommended')), array('key' => '3', 'value' => Piwik::translate('PrivacyManager_AnonymizeIpMaskLength', array("3", "192.xxx.xxx.xxx")), 'description' => ''));
         $view->useAnonymizedIpForVisitEnrichmentOptions = array(array('key' => '1', 'value' => Piwik::translate('General_Yes'), 'description' => Piwik::translate('PrivacyManager_RecommendedForPrivacy')), array('key' => '0', 'value' => Piwik::translate('General_No'), 'description' => ''));
         $view->scheduleDeletionOptions = array(array('key' => '1', 'value' => Piwik::translate('Intl_PeriodDay')), array('key' => '7', 'value' => Piwik::translate('Intl_PeriodWeek')), array('key' => '30', 'value' => Piwik::translate('Intl_PeriodMonth')));
         $view->doNotTrackOptions = array(array('key' => '1', 'value' => Piwik::translate('PrivacyManager_DoNotTrack_Enable'), 'description' => Piwik::translate('General_Recommended')), array('key' => '0', 'value' => Piwik::translate('PrivacyManager_DoNotTrack_Disable'), 'description' => Piwik::translate('General_NotRecommended')));
     }
     $view->language = LanguagesManager::getLanguageCodeForCurrentUser();
     $this->setBasicVariablesView($view);
     return $view->render();
 }
示例#9
0
 public function safemode($lastError = array())
 {
     if (empty($lastError)) {
         $lastError = array('message' => Common::getRequestVar('error_message', null, 'string'), 'file' => Common::getRequestVar('error_file', null, 'string'), 'line' => Common::getRequestVar('error_line', null, 'integer'));
     }
     $outputFormat = Common::getRequestVar('format', 'html', 'string');
     $outputFormat = strtolower($outputFormat);
     if (!empty($outputFormat) && 'html' !== $outputFormat) {
         $errorMessage = $lastError['message'];
         if (Piwik::isUserIsAnonymous()) {
             $errorMessage = 'A fatal error occurred.';
         }
         $response = new \Piwik\API\ResponseBuilder($outputFormat);
         $message = $response->getResponseException(new Exception($errorMessage));
         return $message;
     }
     $view = new View('@CorePluginsAdmin/safemode');
     $view->lastError = $lastError;
     $view->isSuperUser = Piwik::isUserIsSuperUser();
     $view->isAnonymousUser = Piwik::isUserIsAnonymous();
     $view->plugins = Plugin\Manager::getInstance()->returnLoadedPluginsInfo();
     $view->deactivateNonce = Nonce::getNonce(static::DEACTIVATE_NONCE);
     $view->uninstallNonce = Nonce::getNonce(static::UNINSTALL_NONCE);
     $view->emailSuperUser = Piwik::getSuperUserEmail();
     $view->piwikVersion = Version::VERSION;
     $view->showVersion = !Common::getRequestVar('tests_hide_piwik_version', 0);
     $view->pluginCausesIssue = '';
     if (!empty($lastError['file'])) {
         preg_match('/piwik\\/plugins\\/(.*)\\//', $lastError['file'], $matches);
         if (!empty($matches[1])) {
             $view->pluginCausesIssue = $matches[1];
         }
     }
     return $view->render();
 }
示例#10
0
 function index()
 {
     $view = new View('@Feedback/index');
     $view->nonce = Nonce::getNonce('Feedback.sendFeedback', 3600);
     return $view->render();
 }
示例#11
0
 public function installPlugin()
 {
     $view = $this->createUpdateOrInstallView('installPlugin', static::INSTALL_NONCE);
     $view->nonce = Nonce::getNonce(PluginsController::ACTIVATE_NONCE);
     return $view->render();
 }
示例#12
0
 /**
  * Configure common view properties
  *
  * @param View $view
  */
 private function configureView($view)
 {
     $this->setBasicVariablesView($view);
     $view->linkTitle = Piwik::getRandomTitle();
     $view->forceSslLogin = Config::getInstance()->General['force_ssl_login'];
     // crsf token: don't trust the submitted value; generate/fetch it from session data
     $view->nonce = Nonce::getNonce('Login.login');
 }
示例#13
0
 /**
  * Shows the "Track Visits" checkbox.
  */
 public function optOut()
 {
     $trackVisits = !IgnoreCookie::isIgnoreCookieFound();
     $nonce = Common::getRequestVar('nonce', false);
     $language = Common::getRequestVar('language', '');
     if ($nonce !== false && Nonce::verifyNonce('Piwik_OptOut', $nonce)) {
         Nonce::discardNonce('Piwik_OptOut');
         IgnoreCookie::setIgnoreCookie();
         $trackVisits = !$trackVisits;
     }
     $lang = APILanguagesManager::getInstance()->isLanguageAvailable($language) ? $language : LanguagesManager::getLanguageCodeForCurrentUser();
     // should not use self::renderTemplate since that uses setBasicVariablesView. this will cause
     // an error when setBasicVariablesAdminView is called, and MenuTop is requested (the idSite query
     // parameter is required)
     $view = new View("@CoreAdminHome/optOut");
     $view->setXFrameOptions('allow');
     $view->trackVisits = $trackVisits;
     $view->nonce = Nonce::getNonce('Piwik_OptOut', 3600);
     $view->language = $lang;
     return $view->render();
 }
示例#14
0
    /**
     * Shows the "Track Visits" checkbox.
     */
    public function optOut()
    {
        $trackVisits = !IgnoreCookie::isIgnoreCookieFound();

        $dntChecker = new DoNotTrackHeaderChecker();
        $dntFound = $dntChecker->isDoNotTrackFound();

        $setCookieInNewWindow = Common::getRequestVar('setCookieInNewWindow', false, 'int');
        if ($setCookieInNewWindow) {
            $reloadUrl = Url::getCurrentQueryStringWithParametersModified(array(
                'showConfirmOnly' => 1,
                'setCookieInNewWindow' => 0,
            ));
        } else {
            $reloadUrl = false;

            $nonce = Common::getRequestVar('nonce', false);
            if ($nonce !== false && Nonce::verifyNonce('Piwik_OptOut', $nonce)) {
                Nonce::discardNonce('Piwik_OptOut');
                IgnoreCookie::setIgnoreCookie();
                $trackVisits = !$trackVisits;
            }
        }

        $language = Common::getRequestVar('language', '');
        $lang = APILanguagesManager::getInstance()->isLanguageAvailable($language)
            ? $language
            : LanguagesManager::getLanguageCodeForCurrentUser();

        // should not use self::renderTemplate since that uses setBasicVariablesView. this will cause
        // an error when setBasicVariablesAdminView is called, and MenuTop is requested (the idSite query
        // parameter is required)
        $view = new View("@CoreAdminHome/optOut");
        $view->setXFrameOptions('allow');
        $view->dntFound = $dntFound;
        $view->trackVisits = $trackVisits;
        $view->nonce = Nonce::getNonce('Piwik_OptOut', 3600);
        $view->language = $lang;
        $view->isSafari = $this->isUserAgentSafari();
        $view->showConfirmOnly = Common::getRequestVar('showConfirmOnly', false, 'int');
        $view->reloadUrl = $reloadUrl;
        return $view->render();
    }
示例#15
0
 /**
  * Shows the "Track Visits" checkbox.
  */
 public function optOut()
 {
     $trackVisits = !IgnoreCookie::isIgnoreCookieFound();
     $nonce = Common::getRequestVar('nonce', false);
     $language = Common::getRequestVar('language', '');
     if ($nonce !== false && Nonce::verifyNonce('Piwik_OptOut', $nonce)) {
         Nonce::discardNonce('Piwik_OptOut');
         IgnoreCookie::setIgnoreCookie();
         $trackVisits = !$trackVisits;
     }
     $lang = APILanguagesManager::getInstance()->isLanguageAvailable($language) ? $language : LanguagesManager::getLanguageCodeForCurrentUser();
     return $this->renderTemplate('optOut', array('trackVisits' => $trackVisits, 'nonce' => Nonce::getNonce('Piwik_OptOut', 3600), 'language' => $lang));
 }