コード例 #1
0
ファイル: Auth.php プロジェクト: Doluci/tomatocart
 public function authenticate()
 {
     // we first try if the user is the super user
     $rootLogin = Zend_Registry::get('config')->superuser->login;
     $rootPassword = Zend_Registry::get('config')->superuser->password;
     $rootToken = Piwik_UsersManager_API::getTokenAuth($rootLogin, $rootPassword);
     //		echo $rootToken;
     //		echo "<br>". $this->_credential;exit;
     if ($this->_identity == $rootLogin && $this->_credential == $rootToken) {
         return new Piwik_Auth_Result(Piwik_Auth::SUCCESS_SUPERUSER_AUTH_CODE, $this->_identity, array());
     }
     // we then look if the user is API authenticated
     // API authentication works without login name, but only with the token
     // TODO the logic (sql select) should be in the Login plugin, not here
     // this class should stay simple. Another Login plugin should only have to create an auth entry
     // of this class in the zend_registry and it should work
     if (is_null($this->_identity)) {
         $authenticated = false;
         if ($this->_credential === $rootToken) {
             return new Piwik_Auth_Result(Piwik_Auth::SUCCESS_SUPERUSER_AUTH_CODE, $rootLogin, array());
         }
         $login = Zend_Registry::get('db')->fetchOne('SELECT login FROM ' . Piwik::prefixTable('user') . ' WHERE token_auth = ?', array($this->_credential));
         if ($login !== false) {
             return new Piwik_Auth_Result(Zend_Auth_Result::SUCCESS, $login, array());
         } else {
             return new Piwik_Auth_Result(Zend_Auth_Result::FAILURE, $this->_identity, array());
         }
     }
     // if not then we return the result of the database authentification provided by zend
     return parent::authenticate();
 }
コード例 #2
0
ファイル: Auth.php プロジェクト: BackupTheBerlios/oos-svn
	public function authenticate()
	{
		$rootLogin = Zend_Registry::get('config')->superuser->login;
		$rootPassword = Zend_Registry::get('config')->superuser->password;
		$rootToken = Piwik_UsersManager_API::getTokenAuth($rootLogin, $rootPassword);

		if($this->login == $rootLogin
			&& $this->token_auth == $rootToken)
		{
			return new Piwik_Auth_Result(Piwik_Auth_Result::SUCCESS_SUPERUSER_AUTH_CODE, $this->login, $this->token_auth );
		}

		if($this->token_auth === $rootToken)
		{
			return new Piwik_Auth_Result(Piwik_Auth_Result::SUCCESS_SUPERUSER_AUTH_CODE, $rootLogin, $rootToken );
		}

		$login = Piwik_FetchOne(
					'SELECT login FROM '.Piwik::prefixTable('user').' WHERE token_auth = ?',
					array($this->token_auth)
		);
		if($login !== false)
		{
			if(is_null($this->login)
				|| $this->login == $login)
			{
				return new Piwik_Auth_Result(Piwik_Auth_Result::SUCCESS, $login, $this->token_auth );
			}
		}
		return new Piwik_Auth_Result( Piwik_Auth_Result::FAILURE, $this->login, $this->token_auth );
	}
コード例 #3
0
ファイル: Auth.php プロジェクト: nnnnathann/piwik
    /**
     * Authenticates user
     *
     * @return Piwik_Auth_Result
     */
    public function authenticate()
    {
        $rootLogin = Piwik_Config::getInstance()->superuser['login'];
        $rootPassword = Piwik_Config::getInstance()->superuser['password'];
        $rootToken = Piwik_UsersManager_API::getInstance()->getTokenAuth($rootLogin, $rootPassword);
        if (is_null($this->login)) {
            if ($this->token_auth === $rootToken) {
                return new Piwik_Auth_Result(Piwik_Auth_Result::SUCCESS_SUPERUSER_AUTH_CODE, $rootLogin, $this->token_auth);
            }
            $login = Piwik_FetchOne('SELECT login
					FROM ' . Piwik_Common::prefixTable('user') . ' 
					WHERE token_auth = ?', array($this->token_auth));
            if (!empty($login)) {
                return new Piwik_Auth_Result(Piwik_Auth_Result::SUCCESS, $login, $this->token_auth);
            }
        } else {
            if (!empty($this->login)) {
                if ($this->login === $rootLogin && $this->getHashTokenAuth($rootLogin, $rootToken) === $this->token_auth || $rootToken === $this->token_auth) {
                    $this->setTokenAuth($rootToken);
                    return new Piwik_Auth_Result(Piwik_Auth_Result::SUCCESS_SUPERUSER_AUTH_CODE, $rootLogin, $this->token_auth);
                }
                $login = $this->login;
                $userToken = Piwik_FetchOne('SELECT token_auth
					FROM ' . Piwik_Common::prefixTable('user') . ' 
					WHERE login = ?', array($login));
                if (!empty($userToken) && ($this->getHashTokenAuth($login, $userToken) === $this->token_auth || $userToken === $this->token_auth)) {
                    $this->setTokenAuth($userToken);
                    return new Piwik_Auth_Result(Piwik_Auth_Result::SUCCESS, $login, $userToken);
                }
            }
        }
        return new Piwik_Auth_Result(Piwik_Auth_Result::FAILURE, $this->login, $this->token_auth);
    }
コード例 #4
0
ファイル: API.php プロジェクト: Doluci/tomatocart
 public static function getInstance()
 {
     if (self::$instance == null) {
         $c = __CLASS__;
         self::$instance = new $c();
     }
     return self::$instance;
 }
コード例 #5
0
 /**
  * Hooks when a website tracker cache is flushed (website/user updated, cache deleted, or empty cache)
  * Will record in the tracker config file the list of Admin token_auth for this website. This 
  * will be used when the Tracking API is used with setIp(), setForceDateTime(), setVisitorId(), etc. 
  * 
  * @param Piwik_Event_Notification $notification
  * @return void
  */
 function recordAdminUsersInCache($notification)
 {
     $idSite = $notification->getNotificationInfo();
     // add the 'hosts' entry in the website array
     $users = Piwik_UsersManager_API::getInstance()->getUsersWithSiteAccess($idSite, 'admin');
     $tokens = array();
     foreach ($users as $user) {
         $tokens[] = $user['token_auth'];
     }
     $array =& $notification->getNotificationObject();
     $array['admin_token_auth'] = $tokens;
 }
コード例 #6
0
	function index()
	{
		$view = Piwik_View::factory('UsersManager');
		
		$IdSitesAdmin = Piwik_SitesManager_API::getSitesIdWithAdminAccess();
		$idSiteSelected = 1;
		
		if(count($IdSitesAdmin) > 0)
		{
			$defaultWebsiteId = $IdSitesAdmin[0];
			$idSiteSelected = Piwik_Common::getRequestVar('idsite', $defaultWebsiteId);
		}
		
		if($idSiteSelected==='all')
		{
			$usersAccessByWebsite = array();
		}
		else
		{
			$usersAccessByWebsite = Piwik_UsersManager_API::getUsersAccessFromSite( $idSiteSelected );
		}
	
		// requires super user access
		$usersLogin = Piwik_UsersManager_API::getUsersLogin();
		
		// we dont want to display the user currently logged so that the user can't change his settings from admin to view...
		$currentlyLogged = Piwik::getCurrentUserLogin();
		foreach($usersLogin as $login)
		{
			if(!isset($usersAccessByWebsite[$login]))
			{
				$usersAccessByWebsite[$login] = 'noaccess';
			}
		}
		unset($usersAccessByWebsite[$currentlyLogged]);

		ksort($usersAccessByWebsite);
		
		$users = array();
		if(Zend_Registry::get('access')->isSuperUser())
		{
			$users = Piwik_UsersManager_API::getUsers();
		}
		
		$view->idSiteSelected = $idSiteSelected;
		$view->users = $users;
		$view->usersAccessByWebsite = $usersAccessByWebsite;
		$view->formUrl = Piwik_Url::getCurrentUrl();
		$view->websites = Piwik_SitesManager_API::getSitesWithAdminAccess();
		$this->setGeneralVariablesView($view);
		$view->menu = Piwik_GetAdminMenu();
		echo $view->render();
	}
コード例 #7
0
ファイル: Controller.php プロジェクト: nomoto-ubicast/piwik
 function redirectToCoreHomeIndex()
 {
     $defaultReport = Piwik_UsersManager_API::getInstance()->getUserPreference(Piwik::getCurrentUserLogin(), Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT);
     $module = 'CoreHome';
     $action = 'index';
     // User preference: default report to load is the All Websites dashboard
     if ($defaultReport == 'MultiSites' && Piwik_PluginsManager::getInstance()->isPluginActivated('MultiSites')) {
         $module = 'MultiSites';
     }
     if ($defaultReport == Piwik::getLoginPluginName()) {
         $module = Piwik::getLoginPluginName();
     }
     $idSite = Piwik_Common::getRequestVar('idSite', false, 'int');
     parent::redirectToIndex($module, $action, !empty($idSite) ? $idSite : null);
 }
コード例 #8
0
ファイル: API.php プロジェクト: nnnnathann/piwik
 /**
  * You can create your own Users Plugin to override this class.
  * Example of how you would overwrite the UsersManager_API with your own class:
  * Call the following in your plugin __construct() for example:
  *
  * Zend_Registry::set('UsersManager_API',Piwik_MyCustomUsersManager_API::getInstance());
  *
  * @throws Exception
  * @return Piwik_UsersManager_API
  */
 public static function getInstance()
 {
     try {
         $instance = Zend_Registry::get('UsersManager_API');
         if (!$instance instanceof Piwik_UsersManager_API) {
             // Exception is caught below and corrected
             throw new Exception('UsersManager_API must inherit Piwik_UsersManager_API');
         }
         self::$instance = $instance;
     } catch (Exception $e) {
         self::$instance = new self();
         Zend_Registry::set('UsersManager_API', self::$instance);
     }
     return self::$instance;
 }
コード例 #9
0
ファイル: ImportLogs.test.php プロジェクト: nnnnathann/piwik
 /**
  * Logs a couple visits for Aug 9, Aug 10, Aug 11 of 2012.
  */
 protected function trackVisits()
 {
     //FIXMETODO
     return;
     $pwd = Zend_Registry::get('config')->superuser->password;
     if (strlen($pwd) != 32) {
         $pwd = md5($pwd);
     }
     $token_auth = Piwik_UsersManager_API::getInstance()->getTokenAuth(Zend_Registry::get('config')->superuser->login, $pwd);
     $python = Piwik_Common::isWindows() ? "C:\\Python27\\python.exe" : 'python';
     $cmd = $python . ' "' . PIWIK_INCLUDE_PATH . '/misc/log-analytics/import_logs.py" ' . '--url="' . $this->getRootUrl() . 'tests/PHPUnit/proxy/" ' . '--idsite=' . $this->idSite . ' ' . '--token-auth="' . $token_auth . '" ' . '--recorders=4 ' . '--enable-http-errors ' . '--enable-http-redirects ' . '--enable-static ' . '--enable-bots "' . PIWIK_INCLUDE_PATH . '/tests/resources/fake_logs.log" ' . '2>&1';
     echo $cmd;
     exec($cmd, $output, $result);
     if ($result !== 0) {
         echo "<pre>command: {$cmd}\nresult: {$result}\noutput: " . implode("\n", $output) . "</pre>";
         throw new Exception("log importer failed");
     }
 }
コード例 #10
0
ファイル: Controller.php プロジェクト: nomoto-ubicast/piwik
 protected function _getDashboardView($template)
 {
     $view = Piwik_View::factory($template);
     $this->setGeneralVariablesView($view);
     $view->availableWidgets = Piwik_Common::json_encode(Piwik_GetWidgetsList());
     $view->availableLayouts = $this->getAvailableLayouts();
     $view->dashboardId = Piwik_Common::getRequestVar('idDashboard', 1, 'int');
     $view->dashboardLayout = $this->getLayout($view->dashboardId);
     $userList = array();
     // Copy Dashboard to User available to Super User only
     if (Piwik::isUserIsSuperUser()) {
         $users = Piwik_UsersManager_API::getInstance()->getUsers();
         foreach ($users as $user) {
             if ($user['login'] != Piwik::getCurrentUserLogin() && $user['login'] != 'anonymous') {
                 $userList[] = $user;
             }
         }
     }
     $view->availableUsers = $userList;
     return $view;
 }
コード例 #11
0
ファイル: View.php プロジェクト: neolf/PIWIK4MOBILE
 /**
  * Renders the current view.
  *
  * @return string Generated template
  */
 public function render()
 {
     try {
         $this->currentModule = Piwik::getModule();
         $this->currentAction = Piwik::getAction();
         $userLogin = Piwik::getCurrentUserLogin();
         $this->userLogin = $userLogin;
         // workaround for #1331
         $count = method_exists('Piwik', 'getWebsitesCountToDisplay') ? Piwik::getWebsitesCountToDisplay() : 1;
         $sites = Piwik_SitesManager_API::getInstance()->getSitesWithAtLeastViewAccess($count);
         usort($sites, create_function('$site1, $site2', 'return strcasecmp($site1["name"], $site2["name"]);'));
         $this->sites = $sites;
         $this->url = Piwik_Common::sanitizeInputValue(Piwik_Url::getCurrentUrl());
         $this->token_auth = Piwik::getCurrentUserTokenAuth();
         $this->userHasSomeAdminAccess = Piwik::isUserHasSomeAdminAccess();
         $this->userIsSuperUser = Piwik::isUserIsSuperUser();
         $this->latest_version_available = Piwik_UpdateCheck::isNewestVersionAvailable();
         $this->disableLink = Piwik_Common::getRequestVar('disableLink', 0, 'int');
         $this->isWidget = Piwik_Common::getRequestVar('widget', 0, 'int');
         if (Zend_Registry::get('config')->General->autocomplete_min_sites <= count($sites)) {
             $this->show_autocompleter = true;
         } else {
             $this->show_autocompleter = false;
         }
         // workaround for #1331
         $this->loginModule = method_exists('Piwik', 'getLoginPluginName') ? Piwik::getLoginPluginName() : 'Login';
         $user = Piwik_UsersManager_API::getInstance()->getUser($userLogin);
         $this->userAlias = $user['alias'];
     } catch (Exception $e) {
         // can fail, for example at installation (no plugin loaded yet)
     }
     $this->totalTimeGeneration = Zend_Registry::get('timer')->getTime();
     try {
         $this->totalNumberOfQueries = Piwik::getQueryCount();
     } catch (Exception $e) {
         $this->totalNumberOfQueries = 0;
     }
     // workaround for #1331
     if (method_exists('Piwik', 'overrideCacheControlHeaders')) {
         Piwik::overrideCacheControlHeaders('no-store');
     }
     @header('Content-Type: ' . $this->contentType);
     if ($this->xFrameOptions) {
         @header('X-Frame-Options: ' . $this->xFrameOptions);
     }
     return $this->smarty->fetch($this->template);
 }
コード例 #12
0
 /**
  * Renders the current view.
  *
  * @return string Generated template
  */
 public function render()
 {
     try {
         $this->currentModule = Piwik::getModule();
         $this->currentAction = Piwik::getAction();
         $userLogin = Piwik::getCurrentUserLogin();
         $this->userLogin = $userLogin;
         $count = Piwik::getWebsitesCountToDisplay();
         $sites = Piwik_SitesManager_API::getInstance()->getSitesWithAtLeastViewAccess($count);
         usort($sites, create_function('$site1, $site2', 'return strcasecmp($site1["name"], $site2["name"]);'));
         $this->sites = $sites;
         $this->url = Piwik_Common::sanitizeInputValue(Piwik_Url::getCurrentUrl());
         $this->token_auth = Piwik::getCurrentUserTokenAuth();
         $this->userHasSomeAdminAccess = Piwik::isUserHasSomeAdminAccess();
         $this->userIsSuperUser = Piwik::isUserIsSuperUser();
         $this->latest_version_available = Piwik_UpdateCheck::isNewestVersionAvailable();
         $this->disableLink = Piwik_Common::getRequestVar('disableLink', 0, 'int');
         $this->isWidget = Piwik_Common::getRequestVar('widget', 0, 'int');
         if (Piwik_Config::getInstance()->General['autocomplete_min_sites'] <= count($sites)) {
             $this->show_autocompleter = true;
         } else {
             $this->show_autocompleter = false;
         }
         $this->loginModule = Piwik::getLoginPluginName();
         $user = Piwik_UsersManager_API::getInstance()->getUser($userLogin);
         $this->userAlias = $user['alias'];
     } catch (Exception $e) {
         // can fail, for example at installation (no plugin loaded yet)
     }
     $this->totalTimeGeneration = Zend_Registry::get('timer')->getTime();
     try {
         $this->totalNumberOfQueries = Piwik::getQueryCount();
     } catch (Exception $e) {
         $this->totalNumberOfQueries = 0;
     }
     Piwik::overrideCacheControlHeaders('no-store');
     @header('Content-Type: ' . $this->contentType);
     // always sending this header, sometimes empty, to ensure that Dashboard embed loads (which could call this header() multiple times, the last one will prevail)
     @header('X-Frame-Options: ' . (string) $this->xFrameOptions);
     return $this->smarty->fetch($this->template);
 }
コード例 #13
0
ファイル: Login.test.php プロジェクト: nnnnathann/piwik
 public function test_authenticate()
 {
     // no login; no token auth
     $auth = new Piwik_Login_Auth();
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // empty login; no token auth
     $auth->setLogin('');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // non-existent user
     $auth->setLogin('nobody');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // anonymous user doesn't exist yet
     $auth->setLogin('anonymous');
     $auth->setTokenAuth('');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // empty login; anonymous user doesn't exist yet
     $auth->setLogin('');
     $auth->setTokenAuth('anonymous');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // API authentication; anonymous user doesn't exist yet
     $auth->setLogin(null);
     $auth->setTokenAuth('anonymous');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // anonymous user doesn't exist yet
     $auth->setLogin('anonymous');
     $auth->setTokenAuth('anonymous');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     Piwik::createAnonymousUser();
     // missing token_auth
     $auth->setLogin('anonymous');
     $auth->setTokenAuth('');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // empty login
     $auth->setLogin('');
     $auth->setTokenAuth('anonymous');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // not equal
     $auth->setLogin('anonymous');
     $auth->setTokenAuth(0);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // API authentication
     $auth->setLogin(null);
     $auth->setTokenAuth('anonymous');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::SUCCESS);
     // valid login & token auth
     $auth->setLogin('anonymous');
     $auth->setTokenAuth('anonymous');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::SUCCESS);
     $user = array('login' => 'user', 'password' => "geqgeagae", 'email' => "*****@*****.**", 'alias' => "alias");
     Piwik_UsersManager_API::getInstance()->addUser($user['login'], $user['password'], $user['email'], $user['alias']);
     $password = md5($user['password']);
     $tokenAuth = Piwik_UsersManager_API::getInstance()->getTokenAuth($user['login'], $password);
     // empty token auth
     $auth->setLogin($user['login']);
     $auth->setTokenAuth('');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // not a token auth
     $auth->setLogin($user['login']);
     $auth->setTokenAuth($user['password']);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // not a token auth
     $auth->setLogin($user['login']);
     $auth->setTokenAuth($password);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // empty login
     $auth->setLogin('');
     $auth->setTokenAuth($tokenAuth);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // not equal
     $auth->setLogin(0);
     $auth->setTokenAuth(0);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // not equal
     $auth->setLogin(0);
     $auth->setTokenAuth($tokenAuth);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // not equal
     $auth->setLogin($user['login']);
     $auth->setTokenAuth(0);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // API authentication
     $auth->setLogin(null);
     $auth->setTokenAuth($tokenAuth);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::SUCCESS);
     // valid login & token auth
     $auth->setLogin($user['login']);
     $auth->setTokenAuth($tokenAuth);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::SUCCESS);
     // valid login & hashed token auth
     $auth->setLogin($user['login']);
     $hash = $auth->getHashTokenAuth($user['login'], $tokenAuth);
     $auth->setTokenAuth($hash);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::SUCCESS);
     $user = Piwik_Config::getInstance()->superuser;
     $password = $user['password'];
     $tokenAuth = Piwik_UsersManager_API::getInstance()->getTokenAuth($user['login'], $password);
     // empty token auth
     $auth->setLogin($user['login']);
     $auth->setTokenAuth('');
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // not a token auth
     $auth->setLogin($user['login']);
     $auth->setTokenAuth($user['password']);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // not a token auth
     $auth->setLogin($user['login']);
     $auth->setTokenAuth($password);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // empty login
     $auth->setLogin('');
     $auth->setTokenAuth($tokenAuth);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // not equal
     $auth->setLogin($user['login']);
     $auth->setTokenAuth(0);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::FAILURE);
     // API authentication
     $auth->setLogin(null);
     $auth->setTokenAuth($tokenAuth);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::SUCCESS_SUPERUSER_AUTH_CODE);
     // valid login & token auth
     $auth->setLogin($user['login']);
     $auth->setTokenAuth($tokenAuth);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::SUCCESS_SUPERUSER_AUTH_CODE);
     // valid login & hashed token auth
     $auth->setLogin($user['login']);
     $hash = $auth->getHashTokenAuth($user['login'], $tokenAuth);
     $auth->setTokenAuth($hash);
     $rc = $auth->authenticate();
     $this->assertEqual($rc->getCode(), Piwik_Auth_Result::SUCCESS_SUPERUSER_AUTH_CODE);
 }
コード例 #14
0
 /**
  * test getUserByEmail
  * 
  * @group Plugins
  * @group UsersManager
  */
 public function testGetUserByEmail()
 {
     $user = array('login' => "login", 'password' => "geqgeagae", 'email' => "*****@*****.**", 'alias' => "alias");
     Piwik_UsersManager_API::getInstance()->addUser($user['login'], $user['password'], $user['email'], $user['alias']);
     $userByMail = Piwik_UsersManager_API::getInstance()->getUserByEmail($user['email']);
     $this->assertEquals($user['login'], $userByMail['login']);
     $this->assertEquals($user['email'], $userByMail['email']);
     $this->assertEquals($user['alias'], $userByMail['alias']);
 }
コード例 #15
0
 function test_getSitesIdFromSiteUrl_User()
 {
     $idsite = Piwik_SitesManager_API::getInstance()->addSite("site1", array("http://www.piwik.net", "http://piwik.com"));
     $idsite = Piwik_SitesManager_API::getInstance()->addSite("site2", array("http://piwik.com", "http://piwik.net"));
     $idsite = Piwik_SitesManager_API::getInstance()->addSite("site3", array("http://piwik.com", "http://piwik.org"));
     $saveAccess = Zend_Registry::get('access');
     Piwik_UsersManager_API::getInstance()->addUser("user1", "geqgegagae", "*****@*****.**", "alias");
     Piwik_UsersManager_API::getInstance()->setUserAccess("user1", "view", array(1));
     Piwik_UsersManager_API::getInstance()->addUser("user2", "geqgegagae", "*****@*****.**", "alias");
     Piwik_UsersManager_API::getInstance()->setUserAccess("user2", "view", array(1));
     Piwik_UsersManager_API::getInstance()->setUserAccess("user2", "admin", array(3));
     Piwik_UsersManager_API::getInstance()->addUser("user3", "geqgegagae", "*****@*****.**", "alias");
     Piwik_UsersManager_API::getInstance()->setUserAccess("user3", "view", array(1, 2));
     Piwik_UsersManager_API::getInstance()->setUserAccess("user3", "admin", array(3));
     $pseudoMockAccess = new FakeAccess();
     FakeAccess::$superUser = false;
     FakeAccess::$identity = 'user1';
     FakeAccess::setIdSitesView(array(1));
     FakeAccess::setIdSitesAdmin(array());
     Zend_Registry::set('access', $pseudoMockAccess);
     $idsites = Piwik_SitesManager_API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
     $this->assertTrue(count($idsites) == 1);
     // testing URL normalization
     $idsites = Piwik_SitesManager_API::getInstance()->getSitesIdFromSiteUrl('http://www.piwik.com');
     $this->assertTrue(count($idsites) == 1);
     $idsites = Piwik_SitesManager_API::getInstance()->getSitesIdFromSiteUrl('http://piwik.net');
     $this->assertTrue(count($idsites) == 1);
     $pseudoMockAccess = new FakeAccess();
     FakeAccess::$superUser = false;
     FakeAccess::$identity = 'user2';
     FakeAccess::setIdSitesView(array(1));
     FakeAccess::setIdSitesAdmin(array(3));
     Zend_Registry::set('access', $pseudoMockAccess);
     $idsites = Piwik_SitesManager_API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
     $this->assertTrue(count($idsites) == 2);
     $pseudoMockAccess = new FakeAccess();
     FakeAccess::$superUser = false;
     FakeAccess::$identity = 'user3';
     FakeAccess::setIdSitesView(array(1, 2));
     FakeAccess::setIdSitesAdmin(array(3));
     Zend_Registry::set('access', $pseudoMockAccess);
     $idsites = Piwik_SitesManager_API::getInstance()->getSitesIdFromSiteUrl('http://piwik.com');
     $this->assertTrue(count($idsites) == 3);
     Zend_Registry::set('access', $saveAccess);
 }
コード例 #16
0
ファイル: Controller.php プロジェクト: nomoto-ubicast/piwik
 /**
  * Returns default date for Piwik reports
  *
  * @return string  today, 2010-01-01, etc.
  */
 protected function getDefaultPeriod()
 {
     $userSettingsDate = Piwik_UsersManager_API::getInstance()->getUserPreference(Piwik::getCurrentUserLogin(), Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT_DATE);
     if ($userSettingsDate === false) {
         return Piwik_Config::getInstance()->General['default_period'];
     }
     if (in_array($userSettingsDate, array('today', 'yesterday'))) {
         return 'day';
     }
     if (strpos($userSettingsDate, 'last') === 0 || strpos($userSettingsDate, 'previous') === 0) {
         return 'range';
     }
     return $userSettingsDate;
 }
コード例 #17
0
 /**
  * Creates a website, then sets its creation date to a day earlier than specified dateTime
  * Useful to create a website now, but force data to be archived back in the past.
  *
  * @param $dateTime eg '2010-01-01 12:34:56'
  * @return $idSite of website created
  */
 protected function createWebsite($dateTime, $ecommerce = 0, $siteName = 'Piwik test')
 {
     $idSite = Piwik_SitesManager_API::getInstance()->addSite($siteName, "http://piwik.net/", $ecommerce, $ips = null, $excludedQueryParameters = null, $timezone = null, $currency = null);
     // Manually set the website creation date to a day earlier than the earliest day we record stats for
     Zend_Registry::get('db')->update(Piwik_Common::prefixTable("site"), array('ts_created' => Piwik_Date::factory($dateTime)->subDay(1)->getDatetime()), "idsite = {$idSite}");
     // Clear the memory Website cache
     Piwik_Site::clearCache();
     // add access to all test users if doing controller tests
     if (self::$widgetTestingLevel != self::NO_WIDGET_TESTING) {
         $usersApi = Piwik_UsersManager_API::getInstance();
         $usersApi->setUserAccess('anonymous', 'view', array($idSite));
         $usersApi->setUserAccess('test_view', 'view', array($idSite));
         $usersApi->setUserAccess('test_admin', 'admin', array($idSite));
     }
     return $idSite;
 }
コード例 #18
0
 protected function lostPasswordFormValidated($loginMail, $urlToRedirect)
 {
     Piwik::setUserIsSuperUser();
     $user = null;
     $isSuperUser = false;
     if ($loginMail == Zend_Registry::get('config')->superuser->email || $loginMail == Zend_Registry::get('config')->superuser->login) {
         $isSuperUser = true;
         $user = array('login' => Zend_Registry::get('config')->superuser->login, 'email' => Zend_Registry::get('config')->superuser->email);
     } else {
         if (Piwik_UsersManager_API::userExists($loginMail)) {
             $user = Piwik_UsersManager_API::getUser($loginMail);
         } else {
             if (Piwik_UsersManager_API::userEmailExists($loginMail)) {
                 $user = Piwik_UsersManager_API::getUserByEmail($loginMail);
             }
         }
     }
     if ($user === null) {
         $messageNoAccess = Piwik_Translate('Login_InvalidUsernameEmail');
     } else {
         $view = new Piwik_View('Login/templates/passwordsent.tpl');
         $login = $user['login'];
         $email = $user['email'];
         $randomPassword = Piwik_Common::getRandomString(8);
         if ($isSuperUser) {
             $user['password'] = md5($randomPassword);
             Zend_Registry::get('config')->superuser = $user;
         } else {
             Piwik_UsersManager_API::updateUser($login, $randomPassword);
         }
         // send email with new password
         try {
             $mail = new Piwik_Mail();
             $mail->addTo($email, $login);
             $mail->setSubject(Piwik_Translate('Login_MailTopicPasswordRecovery'));
             $mail->setBodyText(str_replace('\\n', "\n", sprintf(Piwik_Translate('Login_MailPasswordRecoveryBody'), $login, $randomPassword, Piwik_Url::getCurrentUrlWithoutQueryString())));
             $piwikHost = $_SERVER['HTTP_HOST'];
             if (strlen($piwikHost) == 0) {
                 $piwikHost = 'piwik.org';
             }
             $fromEmailName = Zend_Registry::get('config')->General->login_password_recovery_email_name;
             $fromEmailAddress = Zend_Registry::get('config')->General->login_password_recovery_email_address;
             $fromEmailAddress = str_replace('{DOMAIN}', $piwikHost, $fromEmailAddress);
             $mail->setFrom($fromEmailAddress, $fromEmailName);
             @$mail->send();
         } catch (Exception $e) {
             $view->ErrorString = $e->getMessage();
         }
         $view->linkTitle = Piwik::getRandomTitle();
         $view->urlToRedirect = $urlToRedirect;
         echo $view->render();
     }
 }
コード例 #19
0
ファイル: Controller.php プロジェクト: Doluci/tomatocart
 /**
  * Get user information
  *
  * @param string $loginMail (user login or email address)
  * @return array ("login" => '...', "email" => '...', "password" => '...') or null, if user not found
  */
 protected function getUserInformation($loginMail)
 {
     Piwik::setUserIsSuperUser();
     $user = null;
     if ($loginMail == Zend_Registry::get('config')->superuser->email || $loginMail == Zend_Registry::get('config')->superuser->login) {
         $user = array('login' => Zend_Registry::get('config')->superuser->login, 'email' => Zend_Registry::get('config')->superuser->email, 'password' => Zend_Registry::get('config')->superuser->password);
     } else {
         if (Piwik_UsersManager_API::getInstance()->userExists($loginMail)) {
             $user = Piwik_UsersManager_API::getInstance()->getUser($loginMail);
         } else {
             if (Piwik_UsersManager_API::getInstance()->userEmailExists($loginMail)) {
                 $user = Piwik_UsersManager_API::getInstance()->getUserByEmail($loginMail);
             }
         }
     }
     return $user;
 }
コード例 #20
0
ファイル: UsersManager.test.php プロジェクト: klando/pgpiwik
 /**
  * normal case, reused in other tests
  */
 function test_updateUser()
 {
     $login = "******";
     $user = array('login' => $login, 'password' => "geqgeagae", 'email' => "*****@*****.**", 'alias' => "alias");
     Piwik_UsersManager_API::addUser($user['login'], $user['password'], $user['email'], $user['alias']);
     Piwik_UsersManager_API::updateUser($login, "passowordOK", "*****@*****.**", "NEW ALIAS");
     $this->_checkUserHasNotChanged($user, "passowordOK", "*****@*****.**", "NEW ALIAS");
 }
コード例 #21
0
ファイル: Controller.php プロジェクト: nomoto-ubicast/piwik
 /**
  * Get user information
  *
  * @param string $loginMail user login or email address
  * @return array ("login" => '...', "email" => '...', "password" => '...') or null, if user not found
  */
 protected function getUserInformation($loginMail)
 {
     Piwik::setUserIsSuperUser();
     $user = null;
     if ($loginMail == Piwik::getSuperUserEmail() || $loginMail == Piwik_Config::getInstance()->superuser['login']) {
         $user = array('login' => Piwik_Config::getInstance()->superuser['login'], 'email' => Piwik::getSuperUserEmail(), 'password' => Piwik_Config::getInstance()->superuser['password']);
     } else {
         if (Piwik_UsersManager_API::getInstance()->userExists($loginMail)) {
             $user = Piwik_UsersManager_API::getInstance()->getUser($loginMail);
         } else {
             if (Piwik_UsersManager_API::getInstance()->userEmailExists($loginMail)) {
                 $user = Piwik_UsersManager_API::getInstance()->getUserByEmail($loginMail);
             }
         }
     }
     return $user;
 }
コード例 #22
0
 /**
  * Returns the super user token auth that can be used in tests. Can be used to
  * do bulk tracking.
  *
  * @return string
  */
 public static function getTokenAuth()
 {
     // get token auth
     $pwd = Zend_Registry::get('config')->superuser->password;
     if (strlen($pwd) != 32) {
         $pwd = md5($pwd);
     }
     return Piwik_UsersManager_API::getInstance()->getTokenAuth(Zend_Registry::get('config')->superuser->login, $pwd);
 }
コード例 #23
0
ファイル: Login.php プロジェクト: nomoto-ubicast/piwik
 /**
  * Authenticate user and initializes the session.
  * Listens to Login.initSession hook.
  *
  * @param Piwik_Event_Notification $notification  notification object
  * @throws Exception
  */
 function initSession($notification)
 {
     $info = $notification->getNotificationObject();
     $login = $info['login'];
     $md5Password = $info['md5Password'];
     $rememberMe = $info['rememberMe'];
     $tokenAuth = Piwik_UsersManager_API::getInstance()->getTokenAuth($login, $md5Password);
     $auth = Zend_Registry::get('auth');
     $auth->setLogin($login);
     $auth->setTokenAuth($tokenAuth);
     $authResult = $auth->authenticate();
     $authCookieName = Piwik_Config::getInstance()->General['login_cookie_name'];
     $authCookieExpiry = $rememberMe ? time() + Piwik_Config::getInstance()->General['login_cookie_expire'] : 0;
     $authCookiePath = Piwik_Config::getInstance()->General['login_cookie_path'];
     $cookie = new Piwik_Cookie($authCookieName, $authCookieExpiry, $authCookiePath);
     if (!$authResult->isValid()) {
         $cookie->delete();
         throw new Exception(Piwik_Translate('Login_LoginPasswordNotCorrect'));
     }
     $cookie->set('login', $login);
     $cookie->set('token_auth', $auth->getHashTokenAuth($login, $authResult->getTokenAuth()));
     $cookie->setSecure(Piwik::isHttps());
     $cookie->setHttpOnly(true);
     $cookie->save();
     @Piwik_Session::regenerateId();
     // remove password reset entry if it exists
     self::removePasswordResetInfo($login);
 }
コード例 #24
0
ファイル: API.php プロジェクト: Gninety/Microweber
 public function sendEmailReport($idReport, $idSite)
 {
     $reports = $this->getReports($idSite, $period = false, $idReport);
     $report = reset($reports);
     if ($report['period'] == 'never') {
         $report['period'] = 'day';
     }
     // Get user emails and languages
     $emails = self::getEmailsFromString($report['additional_emails']);
     if ($report['email_me'] == 1) {
         if (Piwik::getCurrentUserLogin() == $report['login']) {
             $emails[] = Piwik::getCurrentUserEmail();
         } elseif ($report['login'] == Zend_Registry::get('config')->superuser->login) {
             $emails[] = Zend_Registry::get('config')->superuser->email;
         } else {
             try {
                 $user = Piwik_UsersManager_API::getInstance()->getUser($report['login']);
             } catch (Exception $e) {
                 return;
             }
             $emails[] = $user['email'];
         }
     }
     $language = Piwik_LanguagesManager_API::getInstance()->getLanguageForUser($report['login']);
     list($outputFilename, $prettyDate, $websiteName) = $this->generateReport($idReport, Piwik_Date::now()->subPeriod(1, $report['period'])->toString(), $idSite, $language, $outputType = Piwik_PDFReports_API::OUTPUT_PDF_SAVE_ON_DISK);
     $this->sendReportEmailPdfAttached($emails, $outputFilename, $prettyDate, $websiteName, $report);
 }
コード例 #25
0
	/**
	 * Installation Step 5: Table Creation
	 */
	function tablesCreation()
	{
		$this->checkPreviousStepIsValid( __FUNCTION__ );

		$view = new Piwik_Installation_View(
						$this->pathView . 'tablesCreation.tpl',
						$this->getInstallationSteps(),
						__FUNCTION__
					);
		$this->skipThisStep( __FUNCTION__ );
		$this->createDbFromSessionInformation();

		if(Piwik_Common::getRequestVar('deleteTables', 0, 'int') == 1)
		{
			Piwik::dropTables();
			$view->existingTablesDeleted = true;

			// when the user decides to drop the tables then we dont skip the next steps anymore
			// workaround ZF-1743
			$tmp = $this->session->skipThisStep;
			$tmp['firstWebsiteSetup'] = false;
			$tmp['displayJavascriptCode'] = false;
			$this->session->skipThisStep = $tmp;
		}

		$tablesInstalled = Piwik::getTablesInstalled();
		$tablesToInstall = Piwik::getTablesNames();
		$view->tablesInstalled = '';
		if(count($tablesInstalled) > 0)
		{
			// we have existing tables
			$view->tablesInstalled = implode(', ', $tablesInstalled);
			$view->someTablesInstalled = true;

			$minimumCountPiwikTables = 18;
			$baseTablesInstalled = preg_grep('/archive_numeric|archive_blob/', $tablesInstalled, PREG_GREP_INVERT);

			Piwik::createAccessObject();
			Piwik::setUserIsSuperUser();

			if(count($baseTablesInstalled) >= $minimumCountPiwikTables &&
				count(Piwik_SitesManager_API::getInstance()->getAllSitesId()) > 0 &&
				count(Piwik_UsersManager_API::getInstance()->getUsers()) > 0)
			{
				$view->showReuseExistingTables = true;
				// when the user reuses the same tables we skip the website creation step
				// workaround ZF-1743
				$tmp = $this->session->skipThisStep;
				$tmp['firstWebsiteSetup'] = true;
				$tmp['displayJavascriptCode'] = true;
				$this->session->skipThisStep = $tmp;
			}
		}
		else
		{
			Piwik::createTables();
			Piwik::createAnonymousUser();

			$updater = new Piwik_Updater();
			$updater->recordComponentSuccessfullyUpdated('core', Piwik_Version::VERSION);
			$view->tablesCreated = true;
			$view->showNextStep = true;
		}

		$this->session->currentStepDone = __FUNCTION__;
		echo $view->render();
	}
コード例 #26
0
ファイル: PDFReports.php プロジェクト: nnnnathann/piwik
 /**
  * @param Piwik_Event_Notification $notification notification object
  */
 function sendReport($notification)
 {
     if (self::manageEvent($notification)) {
         $notificationInfo = $notification->getNotificationInfo();
         $report = $notificationInfo[Piwik_PDFReports_API::REPORT_KEY];
         $websiteName = $notificationInfo[Piwik_PDFReports_API::WEBSITE_NAME_KEY];
         $prettyDate = $notificationInfo[Piwik_PDFReports_API::PRETTY_DATE_KEY];
         $contents = $notificationInfo[Piwik_PDFReports_API::REPORT_CONTENT_KEY];
         $filename = $notificationInfo[Piwik_PDFReports_API::FILENAME_KEY];
         $additionalFiles = $notificationInfo[Piwik_PDFReports_API::ADDITIONAL_FILES_KEY];
         $periods = self::getPeriodToFrequency();
         $message = Piwik_Translate('PDFReports_EmailHello');
         $subject = Piwik_Translate('General_Report') . ' ' . $websiteName . " - " . $prettyDate;
         $mail = new Piwik_Mail();
         $mail->setSubject($subject);
         $fromEmailName = Piwik_Config::getInstance()->branding['use_custom_logo'] ? Piwik_Translate('CoreHome_WebAnalyticsReports') : Piwik_Translate('PDFReports_PiwikReports');
         $fromEmailAddress = Piwik_Config::getInstance()->General['noreply_email_address'];
         $attachmentName = $subject;
         $mail->setFrom($fromEmailAddress, $fromEmailName);
         switch ($report['format']) {
             case 'html':
                 // Needed when using images as attachment with cid
                 $mail->setType(Zend_Mime::MULTIPART_RELATED);
                 $message .= "<br/>" . Piwik_Translate('PDFReports_PleaseFindBelow', array($periods[$report['period']], $websiteName));
                 $mail->setBodyHtml($message . "<br/><br/>" . $contents);
                 break;
             default:
             case 'pdf':
                 $message .= "\n" . Piwik_Translate('PDFReports_PleaseFindAttachedFile', array($periods[$report['period']], $websiteName));
                 $mail->setBodyText($message);
                 $mail->createAttachment($contents, 'application/pdf', Zend_Mime::DISPOSITION_INLINE, Zend_Mime::ENCODING_BASE64, $attachmentName . '.pdf');
                 break;
         }
         foreach ($additionalFiles as $additionalFile) {
             $fileContent = $additionalFile['content'];
             $at = $mail->createAttachment($fileContent, $additionalFile['mimeType'], Zend_Mime::DISPOSITION_INLINE, $additionalFile['encoding'], $additionalFile['filename']);
             $at->id = $additionalFile['cid'];
             unset($fileContent);
         }
         // Get user emails and languages
         $reportParameters = $report['parameters'];
         $emails = array();
         if (isset($reportParameters[self::ADDITIONAL_EMAILS_PARAMETER])) {
             $emails = $reportParameters[self::ADDITIONAL_EMAILS_PARAMETER];
         }
         if ($reportParameters[self::EMAIL_ME_PARAMETER] == 1) {
             if (Piwik::getCurrentUserLogin() == $report['login']) {
                 $emails[] = Piwik::getCurrentUserEmail();
             } elseif ($report['login'] == Piwik_Config::getInstance()->superuser['login']) {
                 $emails[] = Piwik::getSuperUserEmail();
             } else {
                 try {
                     $user = Piwik_UsersManager_API::getInstance()->getUser($report['login']);
                 } catch (Exception $e) {
                     return;
                 }
                 $emails[] = $user['email'];
             }
         }
         foreach ($emails as $email) {
             if (empty($email)) {
                 continue;
             }
             $mail->addTo($email);
             try {
                 $mail->send();
             } catch (Exception $e) {
                 // If running from piwik.php with debug, we ignore the 'email not sent' error
                 if (!isset($GLOBALS['PIWIK_TRACKER_DEBUG']) || !$GLOBALS['PIWIK_TRACKER_DEBUG']) {
                     throw new Exception("An error occured while sending '{$filename}' " . " to " . implode(', ', $mail->getRecipients()) . ". Error was '" . $e->getMessage() . "'");
                 }
             }
             $mail->clearRecipients();
         }
     }
 }
コード例 #27
0
 public function sendEmailReport($idReport, $idSite, $period = false, $date = false)
 {
     Piwik::checkUserIsNotAnonymous();
     $reports = $this->getReports($idSite, false, $idReport);
     $report = reset($reports);
     if ($report['period'] == 'never') {
         $report['period'] = 'day';
     }
     if (!empty($period)) {
         $report['period'] = $period;
     }
     if (empty($date)) {
         $date = Piwik_Date::now()->subPeriod(1, $report['period'])->toString();
     }
     // Get user emails and languages
     $emails = self::getEmailsFromString($report['additional_emails']);
     if ($report['email_me'] == 1) {
         if (Piwik::getCurrentUserLogin() == $report['login']) {
             $emails[] = Piwik::getCurrentUserEmail();
         } elseif ($report['login'] == Piwik_Config::getInstance()->superuser['login']) {
             $emails[] = Piwik::getSuperUserEmail();
         } else {
             try {
                 $user = Piwik_UsersManager_API::getInstance()->getUser($report['login']);
             } catch (Exception $e) {
                 return;
             }
             $emails[] = $user['email'];
         }
     }
     $language = Piwik_LanguagesManager_API::getInstance()->getLanguageForUser($report['login']);
     list($outputFilename, $prettyDate, $websiteName, $reportFormat, $additionalFiles) = $this->generateReport($idReport, $date, $idSite, $language, self::OUTPUT_SAVE_ON_DISK, $report['period']);
     $this->sendReportEmail($emails, $outputFilename, $prettyDate, $websiteName, $report, $reportFormat, $additionalFiles);
 }
コード例 #28
0
ファイル: Piwik.php プロジェクト: neolf/PIWIK4MOBILE
 /**
  * Get current user email address
  *
  * @return string
  */
 public static function getCurrentUserEmail()
 {
     if (!Piwik::isUserIsSuperUser()) {
         $user = Piwik_UsersManager_API::getInstance()->getUser(Piwik::getCurrentUserLogin());
         return $user['email'];
     }
     return self::getSuperUserEmail();
 }
コード例 #29
0
ファイル: Piwik.php プロジェクト: Gninety/Microweber
 /**
  * Get current user email address
  *
  * @return string
  */
 public static function getCurrentUserEmail()
 {
     if (!Piwik::isUserIsSuperUser()) {
         $user = Piwik_UsersManager_API::getInstance()->getUser(Piwik::getCurrentUserLogin());
         return $user['email'];
     }
     $superuser = Zend_Registry::get('config')->superuser;
     return $superuser->email;
 }
コード例 #30
0
	/**
	 * Records settings from the "User Settings" page
	 */
	public function recordUserSettings()
	{
		$response = new Piwik_API_ResponseBuilder(Piwik_Common::getRequestVar('format'));
		try {
			$this->checkTokenInUrl();
			$alias = Piwik_Common::getRequestVar('alias');
			$email = Piwik_Common::getRequestVar('email');
			$defaultReport = Piwik_Common::getRequestVar('defaultReport');
			$defaultDate = Piwik_Common::getRequestVar('defaultDate');

			$newPassword = false;
			$password = Piwik_Common::getRequestvar('password', false);
			$passwordBis = Piwik_Common::getRequestvar('passwordBis', false);
			if(!empty($password)
				|| !empty($passwordBis))
			{
				if($password != $passwordBis)
				{
					throw new Exception(Piwik_Translate('Login_PasswordsDoNotMatch'));
				}
				$newPassword = $password;
			}
			
			$userLogin = Piwik::getCurrentUserLogin();
			if(Piwik::isUserIsSuperUser())
			{
				$superUser = Zend_Registry::get('config')->superuser;
				$updatedSuperUser = false;

				if($newPassword !== false)
				{
					$newPassword = Piwik_Common::unsanitizeInputValue($newPassword);
					$md5PasswordSuperUser = md5($newPassword);
					$superUser->password = $md5PasswordSuperUser;
					$updatedSuperUser = true;
				}
	 			if($superUser->email != $email)
				{
					$superUser->email = $email;
	 				$updatedSuperUser = true;
				}
				if($updatedSuperUser)
				{
					Zend_Registry::get('config')->superuser = $superUser->toArray();
				}
			}
			else
			{
				Piwik_UsersManager_API::getInstance()->updateUser($userLogin, $newPassword, $email, $alias);
				if($newPassword !== false)
				{
					$newPassword = Piwik_Common::unsanitizeInputValue($newPassword);
				}
			}

			// logs the user in with the new password
			if($newPassword !== false)
			{
				$info = array(
					'login' => $userLogin, 
					'md5Password' => md5($newPassword),
					'rememberMe' => false,
				);
				Piwik_PostEvent('Login.initSession', $info);
			}

			Piwik_UsersManager_API::getInstance()->setUserPreference($userLogin, 
																Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT, 
																$defaultReport);
			Piwik_UsersManager_API::getInstance()->setUserPreference($userLogin, 
																Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT_DATE, 
																$defaultDate);
			$toReturn = $response->getResponse();
		} catch(Exception $e ) {
			$toReturn = $response->getResponseException( $e );
		}
		echo $toReturn;
	}