diff --git a/README.md b/README.md index 867c2abb6..35ade8aa6 100755 --- a/README.md +++ b/README.md @@ -137,6 +137,194 @@ Within the download you'll find the following directories and files: ``` +🌟 [EPIC] - Gradido Web- and App- Client + +Web-App: +Einstiegspunkt: +[ ] Login-Server for app-requests (Sollte in der App einstellbar sein) https://staging.gradido.net/appRequest + +[ ] Auch die url für Community-Server requests sollte in einer Variable gespeichert sein. +CakePHP Seite auf die der Login-Server nach dem Login weiterleitet. +https://staging.gradido.net/client + +Hiermit kann ein Konto anlegt werden: +https://staging.gradido.net/account/registerDirect + +# Fehler im Code +Wenn etwas nicht stimmt, entweder mit den Input-Paremetern, oder ein Fehler im Code gibt es meistens folgendes als Ergebnis: +``` +{ + "state": "error", + "msg": "", + "details": "" +} + ``` + +# csfr Token +Bindet das js ein. +Stellt folgende js-Variablen zur Verfügung: + +csfr : string +csfr Token (https://book.cakephp.org/3/en/controllers/components/csrf.html) +user: object + +# Testbenutzer +Enthält Daten des aktuell eingeloggten Benutzers, z.B.: mein Testbenutzer: +console.log(user); +``` +{ + "created": 1578688666, + "disabled": false, + "email": "dervommond@gmail.com", + "email_checked": true, + "first_name": "Max", + "group_alias": "gdd1", + "ident_hash": 2928827813, + "last_name": "Miau", + "public_hex": "2ed28a1cf5e116d83615406bc577152221c2f774a5656f66a0e7540f7576d71b", + "role": "admin", + "username": "", + "balance": 174500, // Gradido Cent, 4 Nachkommastellen (2 Reserve) entspricht 17,45 + "id": 1, + "errorCount": 0 +} +``` +Das sind im Grunde die Benutzerangaben aus der Login-Server Datenbank. + +session :int +Login-Server session id, notwendig für alle ajax-request. + +# Seiten +Navigation: +Für alle Benutzer: + +Kontoübersicht +Startseite +Überweisung +Mitgliederbereich (externer Link zu elopage: https://elopage.com/s/gradido/sign_in) +Rechts oben: +Profil +Abmelden +Startseite: +Für alle Benutzer: +Kontoübersicht +Überweisung +Benutzer Suche: +http://daten.einhornimmond.de/gradido_mithril_user_search.zip + +# Mobile App +Login über eingebundene Login-Seite +auslesen der session_id aus dem Session Cookie: GRADIDO_LOGIN +Access Token vom Login-Server anfragen: +GET https://staging.gradido.net/appRequest/acquireAccessToken?session_id = +Du kannst auch den Cookie wieder mitschicken, solange die Login-Server Basis-url die gleiche ist, müsste das auch funktionieren. +Antwort: +``` +{ + "state":"success", + "access_token" : "", + "group_base_url":"" +} +``` +Unterschied Access Token von der session_id: Access Tokens sind länger gültig +Du kannst über eine gültige session_id einen Access Token erhalten der eine Woche gültig ist. Die Client-IP des Aufrufess muss die gleiche sein, mit der eingeloggt wurde. + +Mit einem gültigen Access-Token kannst du eine session_id erhalten. +GET https://staging.gradido.net/appRequest/appLogin?access_token = +Mit jedem Aufruf wird die Gültigkeit der Access-Tokens erneuert. +Antwort: +``` +{ + "state":"success", + "session_id" : "" +} +``` +# Kontoübersicht: +Liefert den aktuellen Kontostand. +Ajax: +GET https://staging.gradido.net/state-balances/ajaxGetBalance +Antwort: +`{"state":"success","balance":}` + +Listet die letzten Transaktionen auf, mit Paging. +Ajax: +GET https://staging.gradido.net/state-user-transactions/ajaxListTransactions// +page: Seite der Transaktionen, default = 1 +count: Wie viele Transaktionen pro Seite, default = 20 + +Antwort: +Wenn alles okay: +``` +{"state":"success", "transactions": + [ + { + "name": "", + "email": "", //optional, only if send or receive and other user is known + "type": "creation|send|receive", + "transaction_id": , // db id not id from blockchain + "date": "", + "balance": , + "memo": "", + "pubkey": "" + + } + ], + "transactionExecutingCount": , + "count": +} +``` +Holt die aktuelle Summe und Anzahl Einträge vom GDT Server für den Benutzer. +Ajax: +GET https://staging.gradido.net/state-balances/ajaxGdtOverview +```{"state": "success", "gdt": {"sum": , "count":}}``` + +Holt die letzten 100 GDT-Einträge für den Benutzer + +Ein GDT Eintrag sieht so aus: +``` +{ + "id": 8857, + "amount": 1000, // = 10,00 Euro + "date": "2020-06-17T14:12:00+00:00", + "email": "foerderkreis-1@gradido.org", + "comment": null, + "coupon_code": "", + "gdt_entry_type_id": 4, + "factor": "20.0000", + "amount2": 0, + "factor2": "0.0500", + "gdt": 1000 +} +``` +gdt entry types: (Auf welchen Weg der Eintrag eingetragen wurde) +1. Form: einzeln über das Formular, sollte nur wenige Einträg e betreffen +2. CVS: CVS Import, betrifft vor allem ältere Einträge von Spenden die weder über Elopage noch über Digistore reinkamen +3. Elopage: Alle GDT Einträge die automatisch durch eine Elopage-Transaktion erstellt wurden für den Einzahlenden. +4. Elopage-Publisher: Alle GDT Einträge die automatisch durch eine Elopage-Transaktion erstellt wurden für den Publisher, bis zu 5 Level nach oben. +5. Digistore: Alle GDT Einträge die automatisch durch eine Digistore-Transaktion angelegt wurden. +6. Cvs2: GDT Einträge die durch ein anderen CVS Import eingetragen wurden, betrifft ebenfalls nur alte Einträge. +amount: Menge in Euro-cent (2 Nachkommastellen) was eingezahlt wurde +factor: Der Umrechnungsfaktor der beim Einzahlen für den betreffenden Unterstützer galt. +amount2: ein Bonus Factor der drauf gerechnet wird bei Sonderaktionen, default 0 +factor2: ein Bonus-Factor, default 1, wird aktuell im Code auf für Publisher-Transactionen benutzt. +Gdt: resultierender GDT Wert, wird folgendermaßen aus den bisherigen Werten berechnet: +gdt = amount * factor * factor2 + amount2 +Es gibt zwei Arten von GDT Einträgen: + +Was der Benutzer selbst in Euro gespendet hat +Was jemand anderes an Euro gespendet hat, der den Benutzer als Publisher gewählt hat (publisher-id bei Elopage), Publisher bis Level 5 erhalten jeweils 5% an GDT was der Spender erhalten hat. +z.B. Anna spendet 100 Euro bei einem Faktor von 20, bekommt also 2000 GDT. +Sie hat als Publisher Bernd angegeben, Bern erhält 100 GDT. +Bernd hat als Publisher damals Paul angegeben, Paul erhält also ebenfalls noch 100 GDT. +Bis zum 5. (Bernd ist 2.) +Diese Beziehung wird durch die connectEntries dargestellt. +Insbesondere durch den publishersPath, connect enthält einfach nur alle mögliche Daten. + +# TODO +TODO: Update GDT-Server um paging und Zugriff auf alle Einträge zu erhalten, optimierter Zugriff +GET https://staging.gradido.net/state-balances/ajaxGdtTransactions +Liefert wenn alles in Ordnung ist: +