hallo Leute kurz ne frage: wie injecte ich einen eigenen Service (Vendor\Plugin\Service\MyService.php) in ein eigenes admnisitrationsmodul. Die doku ist wirklich unzureichend es wird immer nur ein beispiel behandelt und wie gesagt zusammen hängend. auch die backend videos sind nicht besser aufgebaut und infos finden ist sxchwer
das hier ist ein eigener servcie aber nur über js
hier ein beispiel wie man repository injectet
aber keine eigenen backend services. Dieses inject müsste doch irgendwo dokumentiert sein wo finde ich diese infos? oder gibts tatsächlich nur repositoryFactory?
also das erp hat das eben. ich muss mich im call jedes mall mit http einloggen. die zugangsdaten sind als konfiguration hinterlegt. aber auch wegen zu hoher last möchte ich nicht, dass man per url request einfach so importe starten kann.
Aber wenn ich eine Route fürp Store-Api festlege ist dass dann nur im BackendContext (wenn im Backend eingeloggt) erreichbar? oder kann ich das so einstellen?
Bin mir nicht sicher, ob der API-Call auf das Backend beschränkt werden kann. Ich verstehe ehrlich gesagt aber auch nicht, wieso das relevant ist. Wer kein Secret hat, der kann den Call nicht ausführen.
Ist es den nicht problematisch, dass dieser Key ganz einfach aus den kompilierten, public-js-Dateien ganz einfach gefunden werdenkann. ich finde es ist keine grosse Sicherheitshürde oder habe ich das falsch verstanden?
Das setzt ja voraus, dass sich jemand zuvor in das Admin-Backend erfolgreich eingeloggt hat. Dann musst du natürlich noch mit Benutzerrechten arbeiten, wenn du zwischen Admin und anderen Accounts, die Zugang zum Backend haben unterscheidest.
Ich hab verstanden was du meinst. dachte du sprich von sale chanel api token aber ich habe jetzt entdeckt, dass es auch funktionen wie loginService etc hibt wo man das access-Token ziehen kann.
Leider gibts nichts in der doku dazu. hat jemand ein aktuelles Beispiel? schein mit 6.4 was geändert zu haben…
<?php declare(strict_types=1);
namespace Vendor\Plugin\Controller\AdminApi\Example;
use Shopware\Core\Framework\Context;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Shopware\Core\Framework\Routing\Annotation\RouteScope;
/**
* @RouteScope(scopes={"api"})
*/
class ExampleController extends AbstractController
{
/**
* @Route("/api/my/call", name="api.my.call", methods={"GET"})
*/
public function myCall(): JsonResponse
{
return new JsonResponse(['You successfully created your first controller route']);
}
// hier mit weiteren "action" erweitern und bei Bedarf Services gemäss Doku injecten
}
im MyPlugin/…/config/services.xml gemäs doku ergänzen
im MyPlugin/…/config/routes.xml gemäss Doku ergänzen (ausser, dass meine Routen im Controller gesucht werden udn nicht in Core/Content → hier auch anpassen, falls andere Controller drin sind welche keine direkten Routen haben)
Laut alten Beispiel kann man auch die Base-Api-URl irgendwie auslesen (this.getApiBasePath()) aber in 6.4 funktionierts nicht mehr und die doku hilft leider wieder mal nicht weiter…