diff --git a/include/init/init.php b/include/init/init.php index 8f24b4f55..0e4b6f588 100644 --- a/include/init/init.php +++ b/include/init/init.php @@ -128,11 +128,11 @@ if (!$has_user) {
- {[ "type": "password", "label": "'.tr('Password').'", "id": "password", "name": "admin_password", "value": "'.$osm_password.'", "placeholder": "'.tr("Digita la password dell'amministratore").'", "required": 1, "icon-after": "" ]} + {[ "type": "password", "label": "'.tr('Password').'", "id": "password", "name": "admin_password", "value": "'.$osm_password.'", "placeholder": "'.tr("Digita la password dell'amministratore").'", "required": 1 ]}
- {[ "type": "email", "label": "'.tr('Email').'", "name": "admin_email", "value": "'.$osm_email.'", "placeholder": "'.tr("Digita l'indirizzo email dell'amministratore").'" ]} + {[ "type": "email", "label": "'.tr('Email').'", "name": "admin_email", "value": "'.$osm_email.'", "placeholder": "'.tr("Digita l'indirizzo email dell'amministratore").'", "required": 1 ]}
diff --git a/index.php b/index.php index b0bc4fd39..1ec70e509 100644 --- a/index.php +++ b/index.php @@ -142,18 +142,25 @@ if (isset($username)) { } echo'> -
- - -
-
+ + {[ "type": "password", "name": "password", "autocomplete": "current-password", "placeholder": "'.tr('Password').'", "icon-before": "" ]} + +
+ '.tr('Dimenticata la password?').' +
+ +
+ +
'.tr('Mantieni attiva la sessione').' +
+
- {[ "type": "password", "label": "", "class": "", "name": "password", "value": "$password$", "icon-after": "\" class=\"fa fa-eye clickable\" >" ]} + {[ "type": "password", "label": "", "class": "", "name": "password", "value": "$password$" ]}
@@ -113,4 +113,4 @@ if (!empty($elementi)) { '.tr('Elimina').' '; } -?> \ No newline at end of file +?> diff --git a/modules/utenti/variables.php b/modules/utenti/variables.php new file mode 100644 index 000000000..303842d96 --- /dev/null +++ b/modules/utenti/variables.php @@ -0,0 +1,11 @@ +reset_token; + +return [ + 'username' => $record->username, + 'reset_token' => $reset_token, + 'reset_link' => ROOTDIR.'/reset.php?reset_token='.$reset_token, +]; diff --git a/reset.php b/reset.php new file mode 100644 index 000000000..df37e5402 --- /dev/null +++ b/reset.php @@ -0,0 +1,132 @@ +insert('zz_logs', [ + 'username' => $username, + 'ip' => get_client_ip(), + 'stato' => Auth::getStatus()['failed']['code'], + ]); + + $utente = User::where('username', $username)->where('email', $email)->first(); + if (!empty($utente)) { + $utente->reset_token = secure_random_string(); + $utente->save(); + + $n = new Notifications\EmailNotification(); + + $n->setTemplate('Reset password', $utente->id); + $n->setReceivers($utente->email); + + $n->send(); + } + + //$message_email = substr($email, 0, 2).str_repeat('*', strlen($email)-8).substr($email, -6); + + flash()->info(tr("Se le informazioni inserite corrispondono ai dati di un utente, riceverai a breve un'email all'indirizzo collegato").'.'); + + redirect(ROOTDIR.'/index.php'); + break; + + case 'update': + $password = post('password'); + + $utente = User::where('reset_token', $token)->first(); + if (!empty($utente)) { + $utente->password = $password; + $utente->reset_token = null; + + $utente->save(); + } + + flash()->info(tr('Password cambiata!')); + + redirect(ROOTDIR.'/index.php'); + break; +} + +$pageTitle = tr('Reimpostazione password'); + +include_once App::filepath('include|custom|', 'top.php'); + +// Controllo se è una beta e in caso mostro un warning +if (Auth::isBrute()) { + echo ' +
+
+

'.tr('Attenzione').'

+
+ +
+

'.tr('Sono stati effettuati troppi tentativi di accesso consecutivi!').'

+

'.tr('Tempo rimanente (in secondi)').': '.(Auth::getBruteTimeout() + 1).'

+
+
+ '; +} + +echo ' +
+
+

'.$pageTitle.'

+
+ +
'; + +if (empty($token)) { + echo ' + + +

'.tr("Per richiedere la reimpostazione della password, inserisci l'username e l'indirizzo email con cui hai accesso al gestionale").'.

+

'.tr("Una volta inviata e validata la richiesta, riceverai un'email dove sarà indicato un link a cui potrai reimpostare la password di accesso ad OpenSTAManager").'.

+ + {[ "type": "text", "label": "'.tr('Username').'", "placeholder": "'.tr('Username').'", "name": "username", "icon-before": "", "required": 1 ]} + + {[ "type": "email", "label": "'.tr('Email').'", "placeholder": "'.tr('Email').'", "name": "email", "icon-before": "", "required": 1 ]}'; +} else { + echo ' + + +

'.tr('Inserisci la nuova password per il tuo account').':

+ + {[ "type": "password", "label": "'.tr('Password').'", "name": "password", "icon-before": "" ]}'; +} + +echo ' +
+ + +
'; + +include_once App::filepath('include|custom|', 'bottom.php'); diff --git a/src/HTMLBuilder/Handler/DefaultHandler.php b/src/HTMLBuilder/Handler/DefaultHandler.php index 8ea797e1e..10155c292 100644 --- a/src/HTMLBuilder/Handler/DefaultHandler.php +++ b/src/HTMLBuilder/Handler/DefaultHandler.php @@ -82,8 +82,34 @@ class DefaultHandler implements HandlerInterface */ protected function password(&$values, &$extras) { + $values['icon-after'] = ''; + + $result = ' + '; + // Delega al metodo "text", per la generazione del codice HTML - return $this->text($values, $extras); + $result .= $this->text($values, $extras); + + return $result; } /** diff --git a/src/Models/User.php b/src/Models/User.php index adfbdbac5..29e867607 100644 --- a/src/Models/User.php +++ b/src/Models/User.php @@ -52,6 +52,11 @@ class User extends Model return $this->gruppo; } + public function setPasswordAttribute($value) + { + $this->attributes['password'] = \Auth::hashPassword($value); + } + /* Relazioni Eloquent */ public function group() diff --git a/update/2_4_11.sql b/update/2_4_11.sql index 882bf24c2..afbbbd09b 100644 --- a/update/2_4_11.sql +++ b/update/2_4_11.sql @@ -13,3 +13,9 @@ ALTER TABLE `co_documenti` ADD `dati_aggiuntivi_fe` TEXT; INSERT INTO `zz_prints` (`id_module`, `name`, `title`, `filename`, `directory`, `options`, `icon`, `enabled`, `default`) VALUES ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Contratti'), 'Consuntivo contratto interno', 'Consuntivo contratto interno', 'Consuntivo interno contratto num. {numero} del {data}', 'contratti_cons', '{"dir":"uscita"}', 'fa fa-print', 1, 1), ((SELECT `id` FROM `zz_modules` WHERE `name` = 'Preventivi'), 'Consuntivo preventivo interno', 'Consuntivo preventivo interno', 'Consuntivo interno preventivo num. {numero} del {data}', 'preventivi_cons', '{"dir":"uscita"}', 'fa fa-print', 1, 1); + +-- Reset password per gli utenti +ALTER TABLE `zz_users` ADD `reset_token` VARCHAR(255); + +INSERT INTO `zz_emails` (`id`, `id_module`, `id_smtp`, `name`, `icon`, `subject`, `reply_to`, `cc`, `bcc`, `body`, `read_notify`) VALUES +(NULL, (SELECT `id` FROM `zz_modules` WHERE `name` = 'Utenti e permessi'), 1, 'Reset password', 'fa fa-envelope', 'Richiesta di reset password', '', '', '', '

Gentile {username},

\r\n

a seguito della richiesta di reimpostazione della password del Suo account è pregato di inserire la nuova password che desidera utilizzare al seguente link:

\r\n

{reset_link}

\r\n

 

Se non sei il responsabile della richiesta in questione, contatta l''amministratore il prima possibile per richiedere un cambio di username.

\r\n

 

\r\n

Distinti saluti

\r\n', '0');