File manager - Edit - /home/ferretapmx/public_html/basic.tar
Back
basic.xml 0000644 00000001625 15231065040 0006347 0 ustar 00 <?xml version="1.0" encoding="UTF-8"?> <extension type="plugin" group="api-authentication" method="upgrade"> <name>plg_api-authentication_basic</name> <author>Joomla! Project</author> <creationDate>2005-11</creationDate> <copyright>(C) 2019 Open Source Matters, Inc.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <version>4.0.0</version> <description>PLG_API-AUTHENTICATION_BASIC_XML_DESCRIPTION</description> <namespace path="src">Joomla\Plugin\ApiAuthentication\Basic</namespace> <files> <folder plugin="basic">services</folder> <folder>src</folder> </files> <languages> <language tag="en-GB">language/en-GB/plg_api-authentication_basic.ini</language> <language tag="en-GB">language/en-GB/plg_api-authentication_basic.sys.ini</language> </languages> </extension> src/Extension/Basic.php 0000644 00000007572 15231065040 0011050 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Apiauthentication.basic * * @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\Plugin\ApiAuthentication\Basic\Extension; use Joomla\CMS\Authentication\Authentication; use Joomla\CMS\Event\User\AuthenticationEvent; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\User\UserFactoryAwareTrait; use Joomla\CMS\User\UserHelper; use Joomla\Database\DatabaseAwareTrait; use Joomla\Event\SubscriberInterface; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Joomla Authentication plugin * * @since 4.0.0 */ final class Basic extends CMSPlugin implements SubscriberInterface { use DatabaseAwareTrait; use UserFactoryAwareTrait; /** * Returns an array of events this subscriber will listen to. * * @return array * * @since 5.2.0 */ public static function getSubscribedEvents(): array { return ['onUserAuthenticate' => 'onUserAuthenticate']; } /** * This method should handle any authentication and report back to the subject * * @param AuthenticationEvent $event Authentication event * * @return void * * @since 4.0.0 */ public function onUserAuthenticate(AuthenticationEvent $event): void { $response = $event->getAuthenticationResponse(); $response->type = 'Basic'; $username = $this->getApplication()->getInput()->server->get('PHP_AUTH_USER', '', 'USERNAME'); $password = $this->getApplication()->getInput()->server->get('PHP_AUTH_PW', '', 'RAW'); if ($password === '') { $response->status = Authentication::STATUS_FAILURE; $response->error_message = $this->getApplication()->getLanguage()->_('JGLOBAL_AUTH_EMPTY_PASS_NOT_ALLOWED'); return; } $db = $this->getDatabase(); $query = $db->getQuery(true) ->select($db->quoteName(['id', 'password'])) ->from($db->quoteName('#__users')) ->where($db->quoteName('username') . ' = :username') ->bind(':username', $username); $db->setQuery($query); $result = $db->loadObject(); if ($result) { $match = UserHelper::verifyPassword($password, $result->password, $result->id); if ($match === true) { // Bring this in line with the rest of the system $user = $this->getUserFactory()->loadUserById($result->id); $response->email = $user->email; $response->fullname = $user->name; $response->username = $username; if ($this->getApplication()->isClient('administrator')) { $response->language = $user->getParam('admin_language'); } else { $response->language = $user->getParam('language'); } $response->status = Authentication::STATUS_SUCCESS; $response->error_message = ''; } else { // Invalid password $response->status = Authentication::STATUS_FAILURE; $response->error_message = $this->getApplication()->getLanguage()->_('JGLOBAL_AUTH_INVALID_PASS'); } } else { // Let's hash the entered password even if we don't have a matching user for some extra response time // By doing so, we mitigate side channel user enumeration attacks UserHelper::hashPassword($password); // Invalid user $response->status = Authentication::STATUS_FAILURE; $response->error_message = $this->getApplication()->getLanguage()->_('JGLOBAL_AUTH_NO_USER'); } } } src/Extension/.htaccess 0000555 00000000355 15231065040 0011105 0 ustar 00 <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>