diff --git a/frontend/README.md b/frontend/README.md index f7c60552c..0140adc8d 100755 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,397 +1,10 @@ # Vue Gradido Wallet - -## install mit yarn +## install grass, a faster sass compiler written in rust +First install [rust](https://www.rust-lang.org/) if not already installed. + +Then install grass, it need some time, because it will be compiled. ```bash -cd frontend -yarn install -yarn run serve - -# build -yarn run build -``` - -## install mit docker - -```bash -# build -docker build -t gradido-frontend . - -# run -docker run -it -p 80:80 --rm gradido-frontend -``` - -**Fully Coded Components** - -Bootstrap Vue Gradido Wallet - - - **DEMO:** [https://vast-atoll-44277.herokuapp.com/](https://vast-atoll-44277.herokuapp.com/) - - -ISSUES: - - - [ ] csrf token management - - - - [ ] Userdaten - Testbenutzer - test.json - - - - [ ] Session Cookie: GRADIDO_LOGIN enhancement - - - - [ ] 🚀 [Feature] - Create a dockerfile for the frontend application enhancement - - - **DEMO:** [https://vast-atoll-44277.herokuapp.com/](https://vast-atoll-44277.herokuapp.com/) - - - - ___________ - - -# 🌟 [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":}}``` - - -# 🌟 [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, // GDT - "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: - -wenn nicht type 7 dann "amount" in euro ansonsten in GDT - -## Additional Software - -For `yarn locales` you will need `jq` to use it. -You can install it (on arch) via - -``` -sudo pacman -S jq -``` \ No newline at end of file +cargo install grass +``` +Now with using yarn compile-sass or turbo compile-sass grass will be used.