Version: Joomla 4.3.2
PHP: 8.0
localhost (XAMPP)
Hallo zusammen,
auf Basis des Joomla Authentication Plugin, wollte ich ein eigenes Authentication Plugin erstellen. Ich hatte mir dazu das in J 4.3 bestehende kopiert und erst einmal mit meinen Namen/Bezeichnungen angepasst. Allerdings scheitere ich noch an der provider.php
Folgende Meldung wird ausgegeben:
0 Class "Itcs_email_login" not found
Inhalt der "services\provider.php" (Kopie vom Original)
use Joomla\Event\DispatcherInterface;
use ITCS\Plugin\Authentication\ItcsEmailLogin;
return new class () implements ServiceProviderInterface {
/**
* Registers the service provider with a DI container.
*
* @param Container $container The DI container.
*
* @return void
*
* @since 4.3.0
*/
public function register(Container $container)
{
$container->set(
PluginInterface::class,
function (Container $container) {
$dispatcher = $container->get(DispatcherInterface::class);
$plugin = new Itcs_email_login(
$dispatcher,
(array) PluginHelper::getPlugin('authentication', 'Itcs_email_login')
);
$plugin->setApplication(Factory::getApplication());
$plugin->setDatabase($container->get(DatabaseInterface::class));
return $plugin;
}
);
Alles anzeigen
Inhalt der "src\Extension\Itcs_email_login.php"
namespace ITCS\Plugin\Authentication\ItcsEmailLogin;
use Joomla\CMS\Authentication\Authentication;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\User\User;
use Joomla\CMS\User\UserHelper;
use Joomla\Database\DatabaseAwareTrait;
\defined('_JEXEC') or die;
/**
* Joomla Authentication plugin
*
* @since 1.5
*/
final class Itcs_email_login extends CMSPlugin
{
use DatabaseAwareTrait;
/**
* This method should handle any authentication and report back to the subject
*
* @param array $credentials Array holding the user credentials
* @param array $options Array of extra options
* @param object &$response Authentication response object
*
* @return void
*
* @since 1.5
*/
public function onUserAuthenticate($credentials, $options, &$response)
{
$response->type = 'Itcs_email_login';
// Joomla does not like blank passwords
Alles anzeigen
Der Namespace wird korrekt in die autoload_psr4.php geschrieben.
In der XML habe ich bei Namespace auch den Pfad "src" eingetragen.
Ich kann irgendwie keinen Fehler finden - komme aber nicht darauf, warum das nicht funktioniert.
Hat von Euch jemand einen Tipp?
Wollte demnächste noch weitere Plugins von J3 auf J4 umstellen und dann auch gleich auf den neusten Stand bringen. Das hier wäre mein erster Test.