Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/UsersManager/Controller.php')
-rw-r--r--plugins/UsersManager/Controller.php253
1 files changed, 245 insertions, 8 deletions
diff --git a/plugins/UsersManager/Controller.php b/plugins/UsersManager/Controller.php
index 630efcefb9..4ac8dca17f 100644
--- a/plugins/UsersManager/Controller.php
+++ b/plugins/UsersManager/Controller.php
@@ -17,11 +17,14 @@
*/
class Piwik_UsersManager_Controller extends Piwik_Controller
{
+ /**
+ * The "Manage Users and Permissions" Admin UI screen
+ */
function index()
{
$view = Piwik_View::factory('UsersManager');
- $IdSitesAdmin = Piwik_SitesManager_API::getSitesIdWithAdminAccess();
+ $IdSitesAdmin = Piwik_SitesManager_API::getInstance()->getSitesIdWithAdminAccess();
$idSiteSelected = 1;
if(count($IdSitesAdmin) > 0)
@@ -36,38 +39,272 @@ class Piwik_UsersManager_Controller extends Piwik_Controller
}
else
{
- $usersAccessByWebsite = Piwik_UsersManager_API::getUsersAccessFromSite( $idSiteSelected );
+ $usersAccessByWebsite = Piwik_UsersManager_API::getInstance()->getUsersAccessFromSite( $idSiteSelected );
}
// requires super user access
- $usersLogin = Piwik_UsersManager_API::getUsersLogin();
+ $usersLogin = Piwik_UsersManager_API::getInstance()->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( $login != $currentlyLogged
- && !isset($usersAccessByWebsite[$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();
+ $users = Piwik_UsersManager_API::getInstance()->getUsers();
}
$view->idSiteSelected = $idSiteSelected;
$view->users = $users;
$view->usersAccessByWebsite = $usersAccessByWebsite;
$view->formUrl = Piwik_Url::getCurrentUrl();
- $view->websites = Piwik_SitesManager_API::getSitesWithAdminAccess();
+ $view->websites = Piwik_SitesManager_API::getInstance()->getSitesWithAdminAccess();
+ $this->setGeneralVariablesView($view);
+ $view->menu = Piwik_GetAdminMenu();
+ echo $view->render();
+ }
+
+ const DEFAULT_DATE = 'today';
+
+ /**
+ * The "User Settings" admin UI screen view
+ */
+ public function userSettings()
+ {
+ $view = Piwik_View::factory('userSettings');
+
+ $userLogin = Piwik::getCurrentUserLogin();
+ if(Piwik::isUserIsSuperUser())
+ {
+ $view->userAlias = $userLogin;
+ $view->userEmail = Zend_Registry::get('config')->superuser->email;
+ if(!Zend_Registry::get('config')->isFileWritable())
+ {
+ $view->configFileNotWritable = true;
+ }
+ }
+ else
+ {
+ $user = Piwik_UsersManager_API::getInstance()->getUser($userLogin);
+ $view->userAlias = $user['alias'];
+ $view->userEmail = $user['email'];
+ }
+
+ $defaultReport = Piwik_UsersManager_API::getInstance()->getUserPreference($userLogin, Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT);
+ if($defaultReport === false)
+ {
+ $defaultReport = $this->getDefaultWebsiteId();
+ }
+ $view->defaultReport = $defaultReport;
+
+ $defaultDate = Piwik_UsersManager_API::getInstance()->getUserPreference($userLogin, Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT_DATE);
+ if($defaultDate === false)
+ {
+ $defaultDate = self::DEFAULT_DATE;
+ }
+ $view->defaultDate = $defaultDate;
+ $view->availableDefaultDates = array(
+ 'today' => Piwik_Translate('General_Today'),
+ 'yesterday' => Piwik_Translate('General_Yesterday'),
+ 'week' => Piwik_Translate('General_CurrentWeek'),
+ 'month' => Piwik_Translate('General_CurrentMonth'),
+ 'year' => Piwik_Translate('General_CurrentYear'),
+ );
+
+ $view->ignoreCookieSet = $this->isIgnoreCookieFound();
+ $this->initViewAnonymousUserSettings($view);
+ $view->piwikHost = Piwik_Url::getCurrentHost();
$this->setGeneralVariablesView($view);
$view->menu = Piwik_GetAdminMenu();
echo $view->render();
}
+
+ public function setIgnoreCookie()
+ {
+ Piwik::checkUserHasSomeViewAccess();
+ $this->checkTokenInUrl();
+ $cookie = $this->getIgnoreCookie();
+ if($cookie->isCookieFound())
+ {
+ $cookie->delete();
+ }
+ else
+ {
+ $cookie->save();
+ }
+ Piwik::redirectToModule('UsersManager', 'userSettings');
+ }
+
+ protected function getIgnoreCookie()
+ {
+ $cookie_name = Zend_Registry::get('config')->Tracker->ignore_visits_cookie_name;
+ $cookie_path = Zend_Registry::get('config')->Tracker->cookie_path;
+ return new Piwik_Cookie($cookie_name, null, $cookie_path);
+ }
+
+ protected function isIgnoreCookieFound()
+ {
+ $cookie = $this->getIgnoreCookie();
+ return $cookie->isCookieFound();
+ }
+
+ /**
+ * The Super User can modify Anonymous user settings
+ * @param $view
+ */
+ protected function initViewAnonymousUserSettings($view)
+ {
+ if(!Piwik::isUserIsSuperUser())
+ {
+ return;
+ }
+ $userLogin = 'anonymous';
+
+ // Which websites are available to the anonymous users?
+ $anonymousSitesAccess = Piwik_UsersManager_API::getInstance()->getSitesAccessFromUser($userLogin);
+ $anonymousSites = array();
+ foreach($anonymousSitesAccess as $info)
+ {
+ $idSite = $info['site'];
+ $anonymousSites[$idSite] = Piwik_SitesManager_API::getInstance()->getSiteFromId($idSite);
+ }
+ $view->anonymousSites = $anonymousSites;
+
+ // Which report is displayed by default to the anonymous user?
+ $anonymousDefaultReport = Piwik_UsersManager_API::getInstance()->getUserPreference($userLogin, Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT);
+ if($anonymousDefaultReport === false)
+ {
+ if(empty($anonymousSites))
+ {
+ $anonymousDefaultReport = Piwik::getLoginPluginName();
+ }
+ else
+ {
+ // we manually imitate what would happen, in case the anonymous user logs in
+ // and is redirected to the first website available to him in the list
+ // @see getDefaultWebsiteId()
+ reset($anonymousSites);
+ $anonymousDefaultReport = key($anonymousSites);
+ }
+ }
+ $view->anonymousDefaultReport = $anonymousDefaultReport;
+
+ $anonymousDefaultDate = Piwik_UsersManager_API::getInstance()->getUserPreference($userLogin, Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT_DATE);
+ if($anonymousDefaultDate === false)
+ {
+ $anonymousDefaultDate = self::DEFAULT_DATE;
+ }
+ $view->anonymousDefaultDate = $anonymousDefaultDate;
+ }
+
+ /**
+ * Records settings for the anonymous users (default report, default date)
+ */
+ public function recordAnonymousUserSettings()
+ {
+ $response = new Piwik_API_ResponseBuilder(Piwik_Common::getRequestVar('format'));
+ try {
+ Piwik::checkUserIsSuperUser();
+ $this->checkTokenInUrl();
+ $anonymousDefaultReport = Piwik_Common::getRequestVar('anonymousDefaultReport');
+ $anonymousDefaultDate = Piwik_Common::getRequestVar('anonymousDefaultDate');
+ $userLogin = 'anonymous';
+ Piwik_UsersManager_API::getInstance()->setUserPreference($userLogin,
+ Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT,
+ $anonymousDefaultReport);
+ Piwik_UsersManager_API::getInstance()->setUserPreference($userLogin,
+ Piwik_UsersManager_API::PREFERENCE_DEFAULT_REPORT_DATE,
+ $anonymousDefaultDate);
+ $toReturn = $response->getResponse();
+ } catch(Exception $e ) {
+ $toReturn = $response->getResponseException( $e );
+ }
+ echo $toReturn;
+ }
+
+ /**
+ * 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)
+ {
+ $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);
+ }
+
+ // logs the user in with the new password
+ if($newPassword !== false)
+ {
+ $info = array( 'login' => $userLogin,
+ 'md5Password' => md5($newPassword),
+ );
+ 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;
+ }
+
}