diff --git a/ChangeLog b/ChangeLog index 9f1ae0857a2..22b1631390f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,8 @@ English Dolibarr ChangeLog ***** ChangeLog for 3.7 compared to 3.6.* ***** For users: +- New: Match other auth system: Login can be done entering login or user + email (this open the road for SSO). - New: Agenda export by project #1967. - New: Increase length of thirdparty to 128 chars. - New: "Is Order shippable" icon #1975. diff --git a/htdocs/core/login/functions_dolibarr.php b/htdocs/core/login/functions_dolibarr.php index d1555678313..8e5a8b13ea9 100644 --- a/htdocs/core/login/functions_dolibarr.php +++ b/htdocs/core/login/functions_dolibarr.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2007-2014 Laurent Destailleur * Copyright (C) 2007-2009 Regis Houssin * Copyright (C) 2010-2011 Juanjo Menent * @@ -20,7 +20,7 @@ /** * \file htdocs/core/login/functions_dolibarr.php * \ingroup core - * \brief Authentication functions for Dolibarr mode + * \brief Authentication functions for Dolibarr mode (check user on login or email and check pass) */ @@ -50,13 +50,15 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest= { // If test username/password asked, we define $test=false and $login var if ok, set $_SESSION["dol_loginmesg"] if ko $table = MAIN_DB_PREFIX."user"; - $usernamecol = 'login'; + $usernamecol1 = 'login'; + $usernamecol2 = 'email'; $entitycol = 'entity'; - $sql ='SELECT rowid, entity, pass, pass_crypted'; + $sql ='SELECT rowid, login, entity, pass, pass_crypted'; $sql.=' FROM '.$table; - $sql.=' WHERE '.$usernamecol." = '".$db->escape($usertotest)."'"; - $sql.=' AND '.$entitycol." IN (0," . ($entity ? $entity : 1) . ")"; + $sql.=' WHERE ('.$usernamecol1." = '".$db->escape($usertotest)."'"; + if (preg_match('/@/',$usertotest)) $sql.=' OR '.$usernamecol2." = '".$db->escape($usertotest)."'"; + $sql.=') AND '.$entitycol." IN (0," . ($entity ? $entity : 1) . ")"; dol_syslog("functions_dolibarr::check_user_password_dolibarr", LOG_DEBUG); $resql=$db->query($sql); @@ -106,7 +108,7 @@ function check_user_password_dolibarr($usertotest,$passwordtotest,$entitytotest= // Password ok ? if ($passok) { - $login=$usertotest; + $login=$obj->login; } else { diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 6698866869e..51fa2cdf162 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1414,6 +1414,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a $loginhtmltext.=''.$langs->trans("User").''; $loginhtmltext.='
'.$langs->trans("Name").': '.$user->getFullName($langs); $loginhtmltext.='
'.$langs->trans("Login").': '.$user->login; + $loginhtmltext.='
'.$langs->trans("EMail").': '.$user->email; $loginhtmltext.='
'.$langs->trans("Administrator").': '.yn($user->admin); $type=($user->societe_id?$langs->trans("External").$company:$langs->trans("Internal")); $loginhtmltext.='
'.$langs->trans("Type").': '.$type;