| Server IP : 54.36.91.62 / Your IP : 216.73.217.112 Web Server : Apache System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : coopiak ( 151928) PHP Version : 8.3.23 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/coopiak/dansnotreville-fr/nice/components/com_rsfeedback/controllers/ |
Upload File : |
<?php
/**
* @package RSFeedback!
* @copyright (C) 2010-2018 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl.html
*/
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\Application\ApplicationHelper;
use Joomla\CMS\User\UserHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Factory;
class RSFeedbackControllerRemovedata extends BaseController
{
public function request() {
try {
$user = Factory::getUser();
if ($user->guest) {
throw new Exception(Text::_('COM_RSFEEDBACK_MUST_BE_LOGGED_IN'));
}
if (!RSFeedbackHelper::getConfig('allow_self_anonymisation')) {
throw new Exception(Text::_('COM_RSFEEDBACK_THIS_FEATURE_MUST_BE_ENABLED'));
}
if ($user->authorise('core.admin')) {
throw new Exception(Text::_('COM_RSFEEDBACK_THIS_FEATURE_IS_NOT_AVAILABLE_FOR_SUPER_USERS'));
}
// Get JConfig
$config = Factory::getConfig();
// Create a token
$token = ApplicationHelper::getHash(UserHelper::genRandomPassword(10));
$hashedToken = UserHelper::hashPassword($token);
// Save the token
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->clear()->select('*')
->from($db->qn('#__rsfeedback_tokens'))
->where($db->qn('user_id') . ' = ' . $db->q($user->id));
if ($db->setQuery($query)->loadObject()) {
$query->clear()
->update($db->qn('#__rsfeedback_tokens'))
->set($db->qn('token') . ' = ' . $db->q($hashedToken))
->where($db->qn('user_id') . ' = ' . $db->q($user->id));
} else {
$query->clear()
->insert($db->qn('#__rsfeedback_tokens'))
->columns(array($db->qn('user_id'), $db->qn('token')))
->values(implode(', ', array($db->q($user->id), $db->q($hashedToken))));
}
$db->setQuery($query)->execute();
// Create the URL
$uri = Uri::getInstance();
$base = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
$url = $base . Route::_('index.php?option=com_rsfeedback&task=removedata.process&token=' . $token, false);
Factory::getMailer()->sendMail($config->get('mailfrom'), $config->get('fromname'), $user->email, Text::sprintf('COM_RSFEEDBACK_REMOVE_REQUEST_EMAIL_SUBJECT', $user->username, $config->get('sitename')), Text::sprintf('COM_RSFEEDBACK_REMOVE_REQUEST_EMAIL_BODY', $user->name, $url), true);
} catch (Exception $e) {
jexit($e->getMessage());
}
jexit(Text::_('COM_RSFEEDBACK_LINK_HAS_BEEN_SENT'));
}
public function process() {
$app = Factory::getApplication();
$user = Factory::getUser();
try {
if ($user->guest) {
$link = base64_encode((string) Uri::getInstance());
$app->enqueueMessage(Text::_('COM_RSFEEDBACK_MUST_BE_LOGGED_IN'));
$app->redirect(Route::_('index.php?option=com_users&view=login&return=' . $link, false));
}
if (!RSFeedbackHelper::getConfig('allow_self_anonymisation')) {
throw new Exception(Text::_('COM_RSFEEDBACK_THIS_FEATURE_MUST_BE_ENABLED'));
}
if ($user->authorise('core.admin')) {
throw new Exception(Text::_('COM_RSFEEDBACK_THIS_FEATURE_IS_NOT_AVAILABLE_FOR_SUPER_USERS'));
}
$token = $app->input->getCmd('token');
if (!$token || strlen($token) != 32) {
throw new Exception(Text::_('COM_RSFEEDBACK_TOKEN_IS_INCORRECT'));
}
// Let's see if the token matches
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->clear()->select($db->qn('token'))
->from($db->qn('#__rsfeedback_tokens'))
->where($db->qn('user_id') . ' = ' . $db->q($user->id));
$dbToken = $db->setQuery($query)->loadResult();
if (!$dbToken || !UserHelper::verifyPassword($token, $dbToken)) {
throw new Exception(Text::_('COM_RSFEEDBACK_TOKEN_IS_INCORRECT'));
}
// Delete the token
$query->clear()
->delete($db->qn('#__rsfeedback_tokens'))
->where($db->qn('user_id') . ' = ' . $db->q($user->id));
$db->setQuery($query)->execute();
// Anonymise data
RSFeedbackHelper::anonymise($user->id);
$app->logout();
$app->redirect(Route::_('index.php?option=com_rsfeedback&view=removedata&layout=success', false));
} catch (Exception $e) {
$app->enqueueMessage($e->getMessage(), 'error');
$this->setRedirect(Route::_('index.php', false));
}
}
}