From: <gem...@li...> - 2012-03-21 17:27:08
|
Revision: 559 http://gemstracker.svn.sourceforge.net/gemstracker/?rev=559&view=rev Author: matijsdejong Date: 2012-03-21 17:26:57 +0000 (Wed, 21 Mar 2012) Log Message: ----------- Start login by e-mail Extra documentation for form Modified Paths: -------------- trunk/library/classes/Gems/User/Form/LoginForm.php trunk/library/classes/Gems/User/UserLoader.php trunk/library/classes/MUtil/Form.php trunk/library/languages/default-nl.mo trunk/library/languages/default-nl.po Modified: trunk/library/classes/Gems/User/Form/LoginForm.php =================================================================== --- trunk/library/classes/Gems/User/Form/LoginForm.php 2012-03-21 14:05:39 UTC (rev 558) +++ trunk/library/classes/Gems/User/Form/LoginForm.php 2012-03-21 17:26:57 UTC (rev 559) @@ -222,7 +222,7 @@ } /** - * Returns/sets a link to the reset password page + * Returns an html link to the reset password page * * @return MUtil_Html_AElement */ @@ -343,7 +343,7 @@ // Veld token $element = new MUtil_Form_Element_Html($this->_tokenFieldName); // $element->br(); - $element->a(array('controller' => 'ask', 'action' => 'token'), $this->translate->_('Enter your token...'), array('class' => 'actionlink')); + $element->setValue($this->getTokenLink()); $this->addElement($element); } @@ -352,6 +352,15 @@ } /** + * Returns an html link for the token input page. + * + * @return MUtil_Html_AElement + */ + public function getTokenLink() + { + return MUtil_Html::create('a', array('controller' => 'ask', 'action' => 'token'), $this->translate->_('Enter your token...'), array('class' => 'actionlink')); + } + /** * Returns/sets a login name element. * * @return Zend_Form_Element_Text Modified: trunk/library/classes/Gems/User/UserLoader.php =================================================================== --- trunk/library/classes/Gems/User/UserLoader.php 2012-03-21 14:05:39 UTC (rev 558) +++ trunk/library/classes/Gems/User/UserLoader.php 2012-03-21 17:26:57 UTC (rev 559) @@ -267,12 +267,12 @@ */ public function getUser($login_name, $currentOrganization) { - list($defName, $userOrganization) = $this->getUserClassInfo($login_name, $currentOrganization); + list($defName, $userOrganization, $userName) = $this->getUserClassInfo($login_name, $currentOrganization); // MUtil_Echo::track($defName, $userOrganization); $definition = $this->getUserDefinition($defName); - $values = $definition->getUserData($login_name, $userOrganization); + $values = $definition->getUserData($userName, $userOrganization); // MUtil_Echo::track($defName, $login_name, $userOrganization, $values); if (! isset($values['user_active'])) { @@ -285,6 +285,7 @@ $values['__user_definition'] = $defName; $user = $this->_loadClass('User', true, array($values, $definition)); + // MUtil_Echo::track($user->getAllowedOrganizations()); $user->setCurrentOrganization($currentOrganization); @@ -328,18 +329,23 @@ * * @param string $login_name * @param int $organization - * @return array Containing definitionName, organizationId + * @return array Containing definitionName, organizationId, (real) userName */ protected function getUserClassInfo($login_name, $organization) { if ((null == $login_name) || (null == $organization)) { - return array(self::USER_NOLOGIN . 'Definition', $organization); + return array(self::USER_NOLOGIN . 'Definition', $organization, $login_name); } if ($this->isProjectUser($login_name)) { - return array(self::USER_PROJECT . 'Definition', $organization); + return array(self::USER_PROJECT . 'Definition', $organization, $login_name); } try { + /* + $select = $this->getUserClassSelect($login_name, $organization); + $row = $this->db->fetchRow($select, null, Zend_Db::FETCH_NUM); + // */ + //* $sql = "SELECT CONCAT(gul_user_class, 'Definition'), gul_id_organization FROM gems__user_logins INNER JOIN gems__organizations ON gor_id_organization = gul_id_organization WHERE gor_active = 1 AND @@ -356,7 +362,7 @@ if (! $row) { // Try to get see if this is another allowed organization for this user - $sql = "SELECT CONCAT(gul_user_class, 'Definition'), gul_id_organization + $sql = "SELECT CONCAT(gul_user_class, 'Definition'), gul_id_organization, gul_login FROM gems__user_logins INNER JOIN gems__organizations ON gor_id_organization != gul_id_organization WHERE gor_active = 1 AND gul_can_login = 1 AND @@ -375,7 +381,7 @@ // // For optimization do set the allowed organizations // Try to get see if this is another allowed organization for this user - $sql = "SELECT CONCAT(gul_user_class, 'Definition'), gul_id_organization + $sql = "SELECT CONCAT(gul_user_class, 'Definition'), gul_id_organization, gul_login FROM gems__user_logins INNER JOIN gems__organizations ON gor_id_organization != gul_id_organization WHERE gor_active = 1 AND gul_can_login = 1 AND @@ -385,7 +391,7 @@ // MUtil_Echo::track($sql, $login_name); $row = $this->db->fetchRow($sql, $login_name, Zend_Db::FETCH_NUM); - } + } // */ if ($row) { // MUtil_Echo::track($row); @@ -435,12 +441,38 @@ // MUtil_Echo::r($e); } - return array(self::USER_OLD_STAFF . 'Definition', $organization); + return array(self::USER_OLD_STAFF . 'Definition', $organization, $login_name); } - return array(self::USER_NOLOGIN . 'Definition', $organization); + return array(self::USER_NOLOGIN . 'Definition', $organization, $login_name); } + /** + * + * @param string $login_name + * @param int $organization + * @return Zend_Db_Select + */ + protected function getUserClassSelect($login_name, $organization) + { + $select = $this->db->select(); + + $select->from('gems__user_logins', array("CONCAT(gul_user_class, 'Definition')", 'gul_id_organization', 'gul_login')) + ->from('gems__organizations', array()) + ->joinLeft('gems__staff', 'gul_login = gsf_login AND gul_id_organization = gsf_id_organization', array()) + ->joinLeft('gems__respondent2org', 'gul_login = gr2o_patient_nr AND gul_id_organization = gr2o_id_organization', array()) + ->joinLeft('gems__respondents', 'gr2o_id_user = grs_id_user', array()) + ->where('gor_active = 1') + ->where('gul_can_login = 1') + ->where('gor_id_organization = ?', $organization) + ->where('(gul_login = ? OR gsf_email = ? OR grs_email = ?)', $login_name) + ->order("CASE WHEN gor_id_organization = gul_id_organization THEN 1 WHEN gor_accessible_by LIKE CONCAT('%:', gul_id_organization, ':%') THEN 2 ELSE 3 END"); + + MUtil_Echo::track($select->__toString()); + + return $select; + } + protected function isProjectUser($login_name) { return $this->project->getSuperAdminName() == $login_name; Modified: trunk/library/classes/MUtil/Form.php =================================================================== --- trunk/library/classes/MUtil/Form.php 2012-03-21 14:05:39 UTC (rev 558) +++ trunk/library/classes/MUtil/Form.php 2012-03-21 17:26:57 UTC (rev 559) @@ -3,7 +3,7 @@ /** * Copyright (c) 2011, Erasmus MC * All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright @@ -14,7 +14,7 @@ * * Neither the name of Erasmus MC nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE @@ -25,19 +25,22 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * @version $Id$ + * * @package MUtil - * @subpackage Acl + * @subpackage Form + * @author Matijs de Jong <mj...@ma...> * @copyright Copyright (c) 2011 Erasmus MC * @license New BSD License + * @version $Id$ */ /** + * * @package MUtil * @subpackage Form * @copyright Copyright (c) 2011 Erasmus MC * @license New BSD License + * @since Class available since version 1.0 */ class MUtil_Form extends Zend_Form { @@ -96,9 +99,9 @@ return; } } - + ZendX_JQuery::enableView($view); - + if (false === $view->getPluginLoader('helper')->getPaths('MUtil_JQuery_View_Helper')) { $view->addHelperPath('MUtil/JQuery/View/Helper', 'MUtil_JQuery_View_Helper'); } @@ -157,7 +160,11 @@ return $this->_displayOrder; } - public function getHtml() + /** + * + * @return MUtil_Html_HtmlElement + */ + public function getHtml() { return $this->_html_element; } @@ -176,12 +183,12 @@ /** * Validate the form * - * As it is better for translation utilities to set the labels etc. translated, - * the MUtil default is to disable translation. - * + * As it is better for translation utilities to set the labels etc. translated, + * the MUtil default is to disable translation. + * * However, this also disables the translation of validation messages, which we * cannot set translated. The MUtil form is extended so it can make this switch. - * + * * @param array $data * @param boolean $disableTranslateValidators Extra switch * @return boolean @@ -253,6 +260,15 @@ return $this; } + /** + * Sets the layout to the use of html elements + * + * @see MUtil_Html + * + * @param string $html HtmlTag for element or empty sequence when empty + * @param string $args MUtil_Ra::args additional arguments for element + * @return MUtil_Form (continuation pattern) + */ public function setHtml($html = null, $args = null) { $options = MUtil_Ra::args(func_get_args(), 1); Modified: trunk/library/languages/default-nl.mo =================================================================== (Binary files differ) Modified: trunk/library/languages/default-nl.po =================================================================== --- trunk/library/languages/default-nl.po 2012-03-21 14:05:39 UTC (rev 558) +++ trunk/library/languages/default-nl.po 2012-03-21 17:26:57 UTC (rev 559) @@ -1089,7 +1089,7 @@ #: classes/Gems/Default/IndexAction.php:152 msgid "Login" -msgstr "Login" +msgstr "Inloggen" #: classes/Gems/Default/IndexAction.php:174 msgid "Back to login" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |