[Piwik-svn] r529 - trunk/plugins/Login
svnmaster at piwik.org
svnmaster at piwik.org
Thu Jun 26 02:20:23 CEST 2008
Author: matt
Date: 2008-06-26 02:20:22 +0200 (Thu, 26 Jun 2008)
New Revision: 529
Modified:
trunk/plugins/Login/Controller.php
Log:
- added new feature
You can now go to
/pathpiwik/index.php?module=Login&action=logme&login=root&password=yourPWD
and that will redirect you to the index.php on succesful login
You can also specify the URL to redirect after successful login, if for some reasons you want to redirect somewhere else or to a different default page.
/pathpiwik/index.php?module=Login&action=logme&login=your_login&password=your_pwd&url=http://piwik.mycompany.com/subpath/
Modified: trunk/plugins/Login/Controller.php
===================================================================
--- trunk/plugins/Login/Controller.php 2008-06-26 00:01:03 UTC (rev 528)
+++ trunk/plugins/Login/Controller.php 2008-06-26 00:20:22 UTC (rev 529)
@@ -1,11 +1,11 @@
<?php
/**
* Piwik - Open source web analytics
- *
+ *
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html Gpl v3 or later
* @version $Id$
- *
+ *
* @package Piwik_Login
*/
@@ -14,9 +14,8 @@
require_once "Login/PasswordForm.php";
require_once "View.php";
-
/**
- *
+ *
* @package Piwik_Login
*/
class Piwik_Login_Controller extends Piwik_Controller
@@ -25,47 +24,26 @@
{
return 'login';
}
-
+
function login( $messageNoAccess = null )
{
$form = new Piwik_Login_Form;
- $AccessErrorString = false;
- $currentUrl = Piwik_Url::getCurrentUrl();
// get url from POSTed form or GET parameter (getting back from password remind form)
- $urlToRedirect = Piwik_Common::getRequestVar('form_url', htmlspecialchars($currentUrl), 'string');
-
+ $urlToRedirect = Piwik_Common::getRequestVar('form_url', htmlspecialchars(Piwik_Url::getCurrentUrl()), 'string');
+
if($form->validate())
{
- // value submitted in form
$login = $form->getSubmitValue('form_login');
$password = $form->getSubmitValue('form_password');
- $password = md5($password);
-
- $tokenAuth = Piwik_UsersManager_API::getTokenAuth($login, $password);
-
- Piwik_Login::prepareAuthObject($login, $tokenAuth);
-
- $auth = Zend_Registry::get('auth');
-
- if($auth->authenticate()->isValid())
+ $authenticated = $this->authenticateAndRedirect($login, $password, $urlToRedirect);
+
+ if($authenticated === false)
{
- $authCookieName = 'piwik-auth';
- $authCookieExpiry = time() + 3600;
- $cookie = new Piwik_Cookie($authCookieName, $authCookieExpiry);
- $cookie->set('login', $login);
- $tokenAuth = $auth->getTokenAuth();
- $cookie->set('token_auth', $tokenAuth);
- $cookie->save();
-
- $urlToRedirect = htmlspecialchars_decode($urlToRedirect);
- Piwik_Url::redirectToUrl($urlToRedirect);
- }
- else
- {
$messageNoAccess = Piwik_Translate('Login_LoginPasswordNotCorrect');
}
}
+
$view = new Piwik_View('Login/templates/login.tpl');
// make navigation login form -> reset password -> login form remember your first url
$view->urlToRedirect = $urlToRedirect;
@@ -76,25 +54,54 @@
echo $view->render();
}
+ function logme()
+ {
+ $login = Piwik_Common::getRequestVar('login', null, 'string');
+ $password = Piwik_Common::getRequestVar('password', null, 'string');
+ $urlToRedirect = Piwik_Common::getRequestVar('url', Piwik_Url::getCurrentUrlWithoutFileName(), 'string');
+ $authenticated = $this->authenticateAndRedirect($login, $password, $urlToRedirect);
+ if($authenticated === false)
+ {
+ echo Piwik_Translate('Login_LoginPasswordNotCorrect');
+ }
+ }
+
+ protected function authenticateAndRedirect($login, $password, $urlToRedirect)
+ {
+ $password = md5($password);
+ $tokenAuth = Piwik_UsersManager_API::getTokenAuth($login, $password);
+ Piwik_Login::prepareAuthObject($login, $tokenAuth);
+
+ $auth = Zend_Registry::get('auth');
+ if($auth->authenticate()->isValid())
+ {
+ $authCookieName = 'piwik-auth';
+ $authCookieExpiry = time() + 3600;
+ $cookie = new Piwik_Cookie($authCookieName, $authCookieExpiry);
+ $cookie->set('login', $login);
+ $tokenAuth = $auth->getTokenAuth();
+ $cookie->set('token_auth', $tokenAuth);
+ $cookie->save();
+
+ $urlToRedirect = htmlspecialchars_decode($urlToRedirect);
+ Piwik_Url::redirectToUrl($urlToRedirect);
+ }
+ return false;
+ }
+
function lostpassword($messageNoAccess = null)
{
$form = new Piwik_Login_PasswordForm;
- $AccessErrorString = false;
-
- $currentUrl = Piwik_Url::getCurrentUrlWithoutQueryString();
+ $currentUrl = Piwik_Url::getCurrentUrlWithoutQueryString();
$urlToRedirect = Piwik_Common::getRequestVar('form_url', htmlspecialchars($currentUrl), 'string');
-
+
if($form->validate())
{
- // value submitted in form (login or email)
$loginMail = $form->getSubmitValue('form_login');
-
- // get admin privileges before calling API
Piwik::setUserIsSuperUser();
-
+
$user = null;
-
- // determine if given value is login or email
+
if( Piwik_UsersManager_API::userExists($loginMail) )
{
$user = Piwik_UsersManager_API::getUser($loginMail);
@@ -102,29 +109,29 @@
else if( Piwik_UsersManager_API::userEmailExists($loginMail) )
{
$user = Piwik_UsersManager_API::getUserByEmail($loginMail);
+ }
+ if( $user === null )
+ {
+ $messageNoAccess = Piwik_Translate('Login_InvalidUsernameEmail');
}
-
- // if user exists
- if( $user != null )
+ else
{
$view = new Piwik_View('Login/templates/passwordsent.tpl');
-
+
$login = $user['login'];
$email = $user['email'];
-
$randomPassword = Piwik_Common::getRandomString(8);
-
Piwik_UsersManager_API::updateUser($login, $randomPassword);
// send email with new password
- try
+ try
{
$mail = new Piwik_Mail();
$mail->addTo($email, $login);
- $mail->setSubject(Piwik_Translate('Login_MailTopicPasswordRecovery'));
+ $mail->setSubject(Piwik_Translate('Login_MailTopicPasswordRecovery'));
$mail->setBodyText(sprintf(Piwik_Translate('Login_MailBodyPasswordRecovery'),
- $login, $randomPassword, Piwik_Url::getCurrentUrlWithoutQueryString()));
+ $login, $randomPassword, Piwik_Url::getCurrentUrlWithoutQueryString()));
$host = $_SERVER['HTTP_HOST'];
if(strlen($host) == 0)
@@ -142,33 +149,24 @@
$view->linkTitle = Piwik::getRandomTitle();
$view->urlToRedirect = $urlToRedirect;
echo $view->render();
-
return;
}
- else
- {
- $messageNoAccess = Piwik_Translate('Login_InvalidUsernameEmail');
- }
- }
- $view = new Piwik_View('Login/templates/lostpassword.tpl');
+ }
+ $view = new Piwik_View('Login/templates/lostpassword.tpl');
$view->AccessErrorString = $messageNoAccess;
- // make navigation login form -> reset password -> login form remember your first url
+ // make navigation login form -> reset password -> login form remember your first url
$view->urlToRedirect = $urlToRedirect;
$view->linkTitle = Piwik::getRandomTitle();
$view->addForm( $form );
$view->subTemplate = 'genericForm.tpl';
- echo $view->render();
+ echo $view->render();
}
-
+
function logout()
- {
+ {
$authCookieName = 'piwik-auth';
$cookie = new Piwik_Cookie($authCookieName);
$cookie->delete();
-
- // after logout we redirect to the Homepage instead of the referer
Piwik::redirectToModule('Home');
}
-
}
-
More information about the Piwik-svn
mailing list