Server IP : 1.179.227.78 / Your IP : 10.104.4.41 Web Server : Apache System : Linux afdc-mdu34 5.4.0-153-generic #170-Ubuntu SMP Fri Jun 16 13:43:31 UTC 2023 x86_64 User : www ( 1001) PHP Version : 7.4.30 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/afdc-mdu34.rtarf.mi.th/joomla/plugins/system/remember/ |
Upload File : |
<?php /** * @package Joomla.Plugin * @subpackage System.remember * * @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Joomla! System Remember Me Plugin * * @since 1.5 */ class PlgSystemRemember extends JPlugin { /** * Application object. * * @var JApplicationCms * @since 3.2 */ protected $app; /** * Remember me method to run onAfterInitialise * Only purpose is to initialise the login authentication process if a cookie is present * * @return void * * @since 1.5 * @throws InvalidArgumentException */ public function onAfterInitialise() { // Get the application if not done by JPlugin. This may happen during upgrades from Joomla 2.5. if (!$this->app) { $this->app = JFactory::getApplication(); } // No remember me for admin. if ($this->app->isClient('administrator')) { return; } // Check for a cookie if user is not logged in if (JFactory::getUser()->get('guest')) { $cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent(); // Try with old cookieName (pre 3.6.0) if not found if (!$this->app->input->cookie->get($cookieName)) { $cookieName = JUserHelper::getShortHashedUserAgent(); } // Check for the cookie if ($this->app->input->cookie->get($cookieName)) { $this->app->login(array('username' => ''), array('silent' => true)); } } } /** * Imports the authentication plugin on user logout to make sure that the cookie is destroyed. * * @param array $user Holds the user data. * @param array $options Array holding options (remember, autoregister, group). * * @return boolean */ public function onUserLogout($user, $options) { // No remember me for admin if ($this->app->isClient('administrator')) { return true; } $cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent(); // Check for the cookie if ($this->app->input->cookie->get($cookieName)) { // Make sure authentication group is loaded to process onUserAfterLogout event JPluginHelper::importPlugin('authentication'); } return true; } /** * Method is called before user data is stored in the database * Invalidate all existing remember-me cookies after a password change * * @param array $user Holds the old user data. * @param boolean $isnew True if a new user is stored. * @param array $data Holds the new user data. * * @return boolean * * @since 3.8.6 */ public function onUserBeforeSave($user, $isnew, $data) { // Irrelevant on new users if ($isnew) { return true; } // Irrelevant, because password was not changed by user if (empty($data['password_clear'])) { return true; } /* * But now, we need to do something * Delete all tokens for this user! */ $db = JFactory::getDbo(); $query = $db->getQuery(true) ->delete('#__user_keys') ->where($db->quoteName('user_id') . ' = ' . $db->quote($user['username'])); try { $db->setQuery($query)->execute(); } catch (RuntimeException $e) { // Log an alert for the site admin JLog::add( sprintf('Failed to delete cookie token for user %s with the following error: %s', $user['username'], $e->getMessage()), JLog::WARNING, 'security' ); } return true; } }