AngularJS Auth

Hallo,

ich baue gerade eine AngularJS Statistic App, die auf unterschiedlichen Shopware systemen die statistiken abrufen soll.

Ich hänge seit drei tagen an der authentifizierung über username/accesstoken. statt dass die über den header mitgegebene auth verarbeitet wird, poppt bei mir immer eine basic auth loginmaske auf.

weiss irgendwer wie ich mich über den header mit username/token authentifizieren kann?

aktueller status:

var username = "test";
var password = "asdfasdf";
var encodedString = username + ':' + password;
$http({
   method: 'GET',
   url: url,
   header: {
      Authorization: 'Basic ' + encodedString
   }
})
.success(function (response, status) {
   deferred.resolve(response, status);
})
.error(function(response, status, headers, configs) {
   deferred.reject(response, status, headers, config);
});

 

Gehört hinter "Basic " kein Leerzeichen bevor der String kommt? Wäre diese Lösung zu einfach, dann lade dir mal Postman herunter. Da kannst du die funktionsfähigkeit generell erstmal testen.

Gruss

tatsächlich richtig, hab das leerzeichen hinzugefügt.

 

auch mit postman, bekomme ich trotz header eingabe kein result.

 

rufe ich alles über den browser auf, geht alles wunderbar

Greifst du auf die Standard Api zurück?

ja ich probiere es

Hat sonst noch jemand eine idee?

Ehm … willst du das komplette Backend über JS bzw. Angular machen oder wie?

Die Shopware API bietet auch keinen Endpunkt für die Statistiken wie Umsatz & Co. Das müsste man sich alles zusammen basteln über den Order Endpoint usw.

Ich mache es zwar nicht mit Angular, aber mit Vue. Sind ein wenig ähnlich.

Ich habe ein kleines Facade Package für Laravel geschrieben und verwende das Shopware SDK: GitHub - LeadCommerceDE/shopware-sdk: A PHP SDK for the Shopware 5 REST API

Vue authentifiziert sich dann über Token in meinen Backend. Das Backend holt sich die Daten entsprechend aus der Shopware API und spuckt entsprechend die Daten aus. Die eigenen API Endpoints kann man natürlich für alles möglich verwenden, ob nun Vue oder Angular.

hi,

nein ich will statistiken herausbekommen. dazu brauche ich dann auch benutzer berechtigungen, welche statistiken der user der sich bei mir im angular anmeldet sehen darf.

das was du mit vue gemacht hast, wäre dann das was ich mit shopware machen möchte :smiley:

wie sieht dein header aus, den deine applikation an shopware mitgeschickt? hast du was an der htaccess umgeschrieben?

 

 

Wie genau willst du die denn bekommen die Statistiken?

Angular ist ja auch ein Frontend Werkzeug, kein Backend. Das Backend musst du dir ja noch bauen wie bspw bei mir mit Laravel. Oder mit irgendeinen anderen Framework, oder etwas selbst gebastelten.

Die Shopware API bietet lediglich die Endpunkte, dass du entsprechende Daten abrufen kannst. 

Du hast ja einmal:

  • Die Shopware API
  • Dein Angular / Vue / React / was auch immer Frontend
  • Dein Backend welches die Daten der Shopware API verarbeitet und bereit stellt, nach deinen Wünschen.

Wenn du bspw. die Umsatz Statistken abrufen wollen würdest, dann müsstest du dir nen Connector bauen, der direkt auf die Datenbank zugreift, ohne die Shopware API Endpoints - Denn diese bieten keinen Endpunkt für die Statistiken.

Den Header, damit Vue mit dem Backend kommunizieren kann, übernimmt bei mir Laravel mit einem Token. Ansonsten kannst du auch bspw. auch auf das  JWT Tokens Package setzen: GitHub - tymondesigns/jwt-auth: 🔐 JSON Web Token Authentication for Laravel & Lumen setzen.

Hi,

danke erstmal für deine Anregungen, die helfen mir gerade sehr.

Ich habe für die Statistiken ein eigenes Plugin geschrieben, dieses führt die benötigten sql abfragen etc. aus.

Eigentlich wollte ich über „www.shopname1.de/api/pluginname“ meine json results ausliefern lassen.
aktuell läuft es jedoch unter „www.shopname1.de/pluginname“ und ist ungeschützt. (ist aber ein devel server)

unter www.shopname1.de/angularjs rendere ich das angularjs heraus.
Hier jedoch („api/“) stoße ich auf die Schwierigkeit, dass ich mich mit angularjs nicht einloggen kann. 
desweiteren kann ich dem user ja nicht zutrauen, dass er den ewig langen token bei sich auf dem ipad einträgt. hier wollte ich die möglichkeit schaffen, einen normalen backend user zugriff zu realisieren.
jwt auth werde ich jetzt doch mal ausprobieren, hatte das schon mehrmals gelesen.

 

Wo wir bei Angular sind, wenn jemand eine Auth. per Angular2 per http in Verbindung mit der Shopware API mit der Digest Auth. hinbekommt, hätte ich großes Interesse! Habe da nämlich nichts hinbekommen …

Schöne Grüße,
Niklas

kurze frage, warum verwendest du schon angular 2?

Wieso mit einer alten Version anfangen? ;) Du startest doch jetzt auch nicht mit Shopware 4, oder? :wink:

Angular 2 ist so weit und hat so viele Vorteile im Vergleich zu 1.x, da sehe ich es nicht ein, mit dem alten Stand anzufangen, gerade da man nicht einfach migrieren kann.
Alleine (!) Typescript ist so ein großer Mehrwert imho :slight_smile:

Schöne Grüße,
Niklas

Vue.js 2 ftw :stuck_out_tongue:

hat alles seine vor und nachteile :wink:

ich bleib bei angular :stuck_out_tongue:

Quatsch, Vue 2 hat keine Nachteile  Wearing-Sunglasses  Grin