Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
Downloads
/
vfm-admin
/
class
:
class.resetter.php
Voltar
Back Up
Advanced Editor
Save
<?php /** * Control password reset * * @category PHP * @package VenoFileManager * @author Nicola Franchini <info@veno.it> * @license Exclusively sold on CodeCanyon * @link http://filemanager.veno.it/ */ if (!class_exists('Resetter', false)) { /** * Class Resetter * * @category PHP * @package VenoFileManager * @author Nicola Franchini <info@veno.it> * @license Exclusively sold on CodeCanyon * @link http://filemanager.veno.it/ */ class Resetter { /** * Call update user functions * * @return $message */ public function init() { global $updater; global $resetter; $resetpwd = filter_input(INPUT_POST, 'reset_pwd', FILTER_SANITIZE_SPECIAL_CHARS); $resetconf = filter_input(INPUT_POST, 'reset_conf', FILTER_SANITIZE_SPECIAL_CHARS); $userh = filter_input(INPUT_POST, 'userh', FILTER_SANITIZE_SPECIAL_CHARS); $getrp = filter_input(INPUT_POST, 'getrp', FILTER_SANITIZE_SPECIAL_CHARS); if ($resetpwd && $resetconf && $userh && $getrp) { if ($resetpwd == $resetconf && $resetter->checkTok($getrp, $userh) === true) { $username = $resetter->getUserFromSha($userh); if ($username) { $new_users = $updater->updateUserPwd($username, $resetpwd, false); $updater->updateUserFile('password', false, $new_users); $resetter->resetToken($resetter->getMailFromSha($userh)); } } } } /** * Get user name from encrypted email * * @param string $usermailsha user email in SHA1 * * @return username */ public function getUserFromSha($usermailsha) { global $gateKeeper; $_USERS = $gateKeeper->getUsers(); foreach ($_USERS as $value) { if (isset($value['email']) && sha1($value['email']) === $usermailsha) { return $value['name']; } } return false; } /** * Get user mail from encrypted email * * @param string $usermailsha user email in SHA1 * * @return username */ public function getMailFromSha($usermailsha) { global $gateKeeper; $_USERS = $gateKeeper->getUsers(); foreach ($_USERS as $value) { if (isset($value['email']) && sha1($value['email']) === $usermailsha) { return $value['email']; } } return false; } /** * Get user name from email * * @param string $usermail user email * * @return username */ public function getUserFromMail($usermail) { global $gateKeeper; $_USERS = $gateKeeper->getUsers(); foreach ($_USERS as $value) { if (isset($value['email'])) { if ($value['email'] === $usermail) { return $value['name']; } } } return false; } /** * Reset token * * @param string $usermail user email * * @return mail to user */ public function resetToken($usermail) { $_TOKENS = $this->getTokens(); $tokens = $_TOKENS; unset($tokens[$usermail]); $tkns = '$_TOKENS = '; if (false == (file_put_contents(dirname(__DIR__).'/_content/users/token.php', "<?php\n\n $tkns".var_export($tokens, true).";\n"))) { Utils::setError('error, no token reset'); return false; } } /** * Set token for password recovering * * @param string $usermail user email * * @return mail to user */ public function setToken($usermail) { global $resetter; global $setUp; $_TOKENS = $this->getTokens(); $tokens = $_TOKENS; $birth = time(); $salt = $setUp->getConfig('salt'); $token = sha1($salt.$usermail.$birth); $tokens[$usermail]['token'] = $token; $tokens[$usermail]['birth'] = $birth; $tkns = '$_TOKENS = '; if (false == (file_put_contents(dirname(__DIR__).'/_content/users/token.php', "<?php\n\n $tkns".var_export($tokens, true).";\n"))) { return false; } else { $message = array(); $message['name'] = $resetter->getUserFromMail($usermail); $message['tok'] = '?rp='.$token.'&usr='.sha1($usermail); return $message; } return false; } /** * Check token validity and lifetime * * @param string $getrp time to check * @param string $getusr getusr to check * * @return true/false */ public function checkTok($getrp, $getusr) { $_TOKENS = $this->getTokens(); $now = time(); foreach ($_TOKENS as $key => $value) { if (sha1($key) === $getusr) { if ($value['token'] === $getrp) { if ($now < $value['birth'] + 3600) { return true; } } } } return false; } /** * Get available tokens * * @return $_TOKENS */ public function getTokens() { include dirname(__DIR__).'/_content/users/token.php'; return $_TOKENS; } /** * Set token for password recovering * * @param object $mail PHPMailer * @param string $usermail user email * @param string $username usename * @param bool $is_new new user or reminder * * @return mail to user */ public function sendUserReminder($mail, $usermail, $username, $is_new = false) { global $setUp; $setfrom = $setUp->getConfig('email_from'); if (strlen($setfrom) < 4) { Utils::setError('Please set a System E-mail under Preferences > E-Mail'); return false; } $token = $this->setToken($usermail); if (!$token) { Utils::setError('Error creating reset token'); return false; } $use_template = $is_new ? 'template-new-user' : 'template-reset-password'; $mail->CharSet = 'UTF-8'; $mail->setLanguage($setUp->lang); if ($setUp->getConfig('smtp_enable') == true) { $mail->isSMTP(); $mail->SMTPDebug = ($setUp->getConfig('debug_smtp') ? 2 : 0); $mail->Debugoutput = 'html'; $smtp_auth = $setUp->getConfig('smtp_auth'); $mail->Host = $setUp->getConfig('smtp_server'); $mail->Port = (int)$setUp->getConfig('port'); $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ) ); if ($setUp->getConfig('secure_conn') !== "none") { $mail->SMTPSecure = $setUp->getConfig('secure_conn'); } $mail->SMTPAuth = $smtp_auth; if ($smtp_auth == true) { $mail->Username = $setUp->getConfig('email_login'); $mail->Password = $setUp->getConfig('email_pass'); } } $script_url = $setUp->getConfig('script_url'); $mail->setFrom($setfrom, $setUp->getConfig('appname')); $mail->addAddress($usermail, '<'.$usermail.'>'); $email_logo = $setUp->getConfig('email_logo', false) ? '_content/uploads/'.$setUp->getConfig('email_logo') : 'images/px.png'; $mail->AddEmbeddedImage($email_logo, 'logoimg'); // Retrieve the email template required $message = file_get_contents(Template::getMailTemplate($use_template)); // Replace the % with the actual information $message = str_replace('%app_url%', $script_url, $message); $message = str_replace('%app_name%', $setUp->getConfig('appname'), $message); $message = str_replace('%translate_username%', $setUp->getString('username'), $message); $message = str_replace('%username%', $username, $message); if ($is_new) { $mail->Subject = $setUp->getConfig('appname').": ".$setUp->getString('new_user'); $message = str_replace('%translate_new_user_has_been_created%', $setUp->getString('new_user_has_been_created'), $message); $message = str_replace('%translate_password%', $setUp->getString('reset_password'), $message); $message = str_replace('%password%', $script_url.$token['tok'], $message); $altmessage = $script_url."\r\n" .$setUp->getString('new_user_has_been_created')."\r\n" .$setUp->getString('username').": ".$username."\r\n" .$setUp->getString('reset_password')."\r\n" .$script_url.$token['tok']; } else { $mail->Subject = $setUp->getConfig('appname').": ".$setUp->getString('login_details'); $message = str_replace( '%translate_someone_requested_pwd_reset_1%', $setUp->getString('someone_requested_pwd_reset_1'), $message ); $message = str_replace( '%translate_someone_requested_pwd_reset_2%', $setUp->getString('someone_requested_pwd_reset_2'), $message ); $message = str_replace( '%translate_someone_requested_pwd_reset_3%', $setUp->getString('someone_requested_pwd_reset_3'), $message ); $message = str_replace('%translate_reset_password%', $setUp->getString('reset_password'), $message); $message = str_replace('%tok%', $script_url.$token['tok'], $message); $altmessage = $script_url."\r\n" .$setUp->getString('username').": ".$username."\r\n" .$setUp->getString('reset_password')."\r\n" .$script_url.$token['tok']; } $mail->msgHTML($message); $mail->AltBody = $altmessage; if (!$mail->send()) { Utils::setError('<strong>Mailer Error:</strong> '.$mail->ErrorInfo); } else { Utils::setSuccess($setUp->getString("email_sent")); } } } }