31require
'../main.inc.php';
32require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
33require_once DOL_DOCUMENT_ROOT.
'/core/lib/usergroups.lib.php';
34require_once DOL_DOCUMENT_ROOT.
'/core/lib/functions2.lib.php';
35if (isModEnabled(
'ldap')) {
36 require_once DOL_DOCUMENT_ROOT.
'/core/class/ldap.class.php';
48$langs->loadLangs(array(
'errors',
'users',
'companies',
'ldap',
'other'));
52 header(
"Location: ".DOL_URL_ROOT.
'/');
56$action =
GETPOST(
'action',
'aZ09');
57$mode = $dolibarr_main_authentication;
62$username =
GETPOST(
'username',
'alphanohtml');
63$passworduidhash =
GETPOST(
'passworduidhash',
'alpha');
64$setnewpassword =
GETPOST(
'setnewpassword',
'aZ09');
69$hookmanager->initHooks(array(
'passwordforgottenpage'));
72if (
GETPOST(
'dol_hide_leftmenu',
'alpha') || !empty($_SESSION[
'dol_hide_leftmenu'])) {
73 $conf->dol_hide_leftmenu = 1;
75if (
GETPOST(
'dol_hide_topmenu',
'alpha') || !empty($_SESSION[
'dol_hide_topmenu'])) {
76 $conf->dol_hide_topmenu = 1;
78if (
GETPOST(
'dol_optimize_smallscreen',
'alpha') || !empty($_SESSION[
'dol_optimize_smallscreen'])) {
79 $conf->dol_optimize_smallscreen = 1;
81if (
GETPOST(
'dol_no_mouse_hover',
'alpha') || !empty($_SESSION[
'dol_no_mouse_hover'])) {
82 $conf->dol_no_mouse_hover = 1;
84if (
GETPOST(
'dol_use_jmobile',
'alpha') || !empty($_SESSION[
'dol_use_jmobile'])) {
85 $conf->dol_use_jmobile = 1;
93$parameters = array(
'username' => $username);
94$reshook = $hookmanager->executeHooks(
'doActions', $parameters,
$object, $action);
96 $message = $hookmanager->error;
101if (empty($reshook)) {
103 if ($action ==
'validatenewpassword' && $username && $passworduidhash) {
104 $edituser =
new User($db);
105 $result = $edituser->fetch(0, $username,
'', 0,
$conf->entity);
107 $message =
'<div class="error">'.dol_escape_htmltag($langs->trans(
"ErrorTechnicalError")).
'</div>';
112 if ($edituser->pass_temp &&
dol_verifyHash($edituser->pass_temp.
'-'.$edituser->id.
'-'.
$conf->file->instance_unique_id, $passworduidhash)) {
114 unset($_SESSION[
'dol_login']);
115 $_SESSION[
'dol_loginmesg'] =
'<!-- warning -->'.$langs->transnoentitiesnoconv(
'NewPasswordValidated');
117 $newpassword = $edituser->setPassword($user, $edituser->pass_temp, 0);
118 dol_syslog(
"passwordforgotten.php new password for user->id=".$edituser->id.
" validated in database");
120 header(
"Location: ".DOL_URL_ROOT.
'/?username='.urlencode($edituser->login));
123 $langs->load(
"errors");
124 $message =
'<div class="error">'.$langs->trans(
"ErrorFailedToValidatePasswordReset").
'</div>';
130 if ($action ==
'buildnewpassword' && $username) {
131 $sessionkey =
'dol_antispam_value';
132 $ok = (array_key_exists($sessionkey, $_SESSION) && (strtolower($_SESSION[$sessionkey]) == strtolower(
GETPOST(
'code'))));
136 dol_syslog(
'Bad value for code, password reset refused', LOG_NOTICE);
138 $message =
'<div class="error">'.$langs->trans(
"ErrorBadValueForCode").
'</div>';
140 $isanemail = preg_match(
'/@/', $username);
142 $edituser =
new User($db);
143 $result = $edituser->fetch(0, $username,
'', 1,
$conf->entity);
144 if ($result == 0 && $isanemail) {
145 $result = $edituser->fetch(0,
'',
'', 1,
$conf->entity, $username);
150 $edituser->loadRights(
'user');
151 if (!$edituser->hasRight(
'user',
'self',
'password')) {
153 $edituser->error =
'USERNOTALLOWEDTOCHANGEPASS';
158 $messagewarning =
'<div class="warning paddingtopbottom'.(!
getDolGlobalString(
'MAIN_LOGIN_BACKGROUND') ?
'' :
' backgroundsemitransparent boxshadow').
'">';
160 $messagewarning .= $langs->trans(
"IfLoginExistPasswordRequestSent");
162 $messagewarning .= $langs->trans(
"IfEmailExistPasswordRequestSent");
164 $messagewarning .=
'</div>';
166 if ($result <= 0 && ($edituser->error ==
'USERNOTFOUND' || $edituser->error ==
'USERNOTALLOWEDTOCHANGEPASS')) {
168 $message .= $messagewarning;
171 if (empty($edituser->email)) {
173 $message .= $messagewarning;
175 $newpassword = $edituser->setPassword($user,
'', 1);
176 if (is_int($newpassword) && $newpassword < 0) {
178 $message =
'<div class="error">'.$langs->trans(
"ErrorFailedToChangePassword").
'</div>';
181 if ($edituser->send_password($user, $newpassword, 1) > 0) {
182 $message .= $messagewarning;
186 $message .=
'<div class="error">'.$edituser->error.
'</div>';
200$dol_url_root = DOL_URL_ROOT;
202$appli = constant(
'DOL_APPLICATION_TITLE');
205 $appli = (preg_match(
'/^\+/', $applicustom) ? $appli :
'').$applicustom;
207 $appli .=
" ".DOL_VERSION;
215if (!empty(
$conf->modules_parts[
'tpl'])) {
216 $dirtpls = array_merge(
$conf->modules_parts[
'tpl'], array(
'/core/tpl/'));
217 foreach ($dirtpls as $reldir) {
219 if (file_exists($tmp)) {
220 $template_dir = preg_replace(
'/passwordforgotten\.tpl\.php$/',
'', $tmp);
224} elseif (file_exists(DOL_DOCUMENT_ROOT.
"/theme/".
$conf->theme.
"/tpl/passwordforgotten.tpl.php")) {
225 $template_dir = DOL_DOCUMENT_ROOT.
"/theme/".
$conf->theme.
"/tpl/";
227 $template_dir = DOL_DOCUMENT_ROOT.
"/core/tpl/";
231 $focus_element =
'username';
233 $focus_element =
'password';
239$urllogo = DOL_URL_ROOT.
'/theme/common/login_logo.png';
240if (!empty($mysoc->logo_small) && is_readable(
$conf->mycompany->dir_output.
'/logos/thumbs/'.$mysoc->logo_small)) {
241 $urllogo = DOL_URL_ROOT.
'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode(
'logos/thumbs/'.$mysoc->logo_small);
242} elseif (!empty($mysoc->logo_small) && is_readable(
$conf->mycompany->dir_output.
'/logos/'.$mysoc->logo)) {
243 $urllogo = DOL_URL_ROOT.
'/viewimage.php?cache=1&modulepart=mycompany&file='.urlencode(
'logos/'.$mysoc->logo);
245} elseif (is_readable(DOL_DOCUMENT_ROOT.
'/theme/'.
$conf->theme.
'/img/dolibarr_logo.svg')) {
246 $urllogo = DOL_URL_ROOT.
'/theme/'.
$conf->theme.
'/img/dolibarr_logo.svg';
247} elseif (is_readable(DOL_DOCUMENT_ROOT.
'/theme/dolibarr_logo.svg')) {
248 $urllogo = DOL_URL_ROOT.
'/theme/dolibarr_logo.svg';
252$disabled =
'disabled';
253if (preg_match(
'/dolibarr/i', $mode)) {
267$parameters = array(
'entity' =>
GETPOSTINT(
'entity'));
268$hookmanager->executeHooks(
'getPasswordForgottenPageOptions', $parameters);
269if (is_array($hookmanager->resArray) && !empty($hookmanager->resArray)) {
270 $morelogincontent = $hookmanager->resArray;
272 $morelogincontent = $hookmanager->resPrint;
276$parameters = array(
'entity' =>
GETPOSTINT(
'entity'));
277$reshook = $hookmanager->executeHooks(
'getPasswordForgottenPageExtraOptions', $parameters);
278$moreloginextracontent = $hookmanager->resPrint;
280if (empty($setnewpassword)) {
281 include $template_dir.
'passwordforgotten.tpl.php';
283 include $template_dir.
'passwordreset.tpl.php';
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Class to manage Dolibarr users.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
dol_buildpath($path, $type=0, $returnemptyifnotfound=0)
Return path of url or filesystem.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
global $conf
The following vars must be defined: $type2label $form $conf, $lang, The following vars may also be de...
dol_verifyHash($chain, $hash, $type='0')
Compute a hash and compare it to the given one For backward compatibility reasons,...