Skip to content

This is the backend part of our topic laboratories project. It is written in Java using the Spring Framework and MongoDB.

Notifications You must be signed in to change notification settings

Movesy/movesy-backend

Repository files navigation

Backend haladási napló

4. hét

Mostantól itt dokumentáljuk a backenndel kapcsolatos haladást. Azt beszéltük meg, hogy adatbázisnak a MongoDB-t fogjuk használni, mivel a usereket szereptől függetlenül fogjuk egy adatbázisban tárolni, így megspórolunk csomó null értéket. Csütörtökön létrehoztuk a projektet, majd elkezdtünk azzal foglalkozni, hogy létrehozzuk az endpointokat és összekössük a MongoDB-vel az alkalmazást (Ehhez létrehoztunk egy Atlas-os clustert hogy ne lokálisan tárolódjanak az adatok). Ez utóbbival rendesen elakadtunk, kb 5 óránk ment el azzal, hogy az application.properties-ben a Mongo URI-ját idézőjellel együtt írtuk meg, pedig anélkül kellett volna. Pénteken erre rájöttünk és folytattuk a munkát az endpointok megírásával. Ezek teszteléséhez a Postman-t használtuk. Miután megvoltunk a nagyjával, elkezdtünk azzal foglalkozni, hogy hostoljuk a Spring alkalmazást Heroku segítségével. Ez elérhető itt és tesztelhető is Postmannel, vagy a linkre kattintva.

5. hét

A feladatunk az volt erre a hétre, hogy jwt tokenes beléptetéssel bővítsük az alkalmazást, viszont sajnos nem jártunk sikerrel, mert nem sikerült teljesen megérteni hogy hogyan kellene ezt implementálnunk. Megnéztünk cikkeket a témában, meg több tutorial sorozatot is követtünk, de mindig egy ponton elakadtunk. Ezekből itt van néhány:

6. & 7. hét

Mivel a múlt héten nem sikerült a feladatunkat rendesen elvégezni, ezért ezen a héten is ugyan azt kell csinálnunk, ehhez pedig kaptunk egy tutorialt segítségül. Ezt végigcsinálva nem működött még az authentikáció, viszont rövid keresgélés után rájöttünk, hogy a jjwt dependency outdated, ezért kicseréltük frissekre az alábbi README alapján. Ezek után olyan hibába ütlöztünk, hogy néhány függvény deprecated lett azóta, ami miatt a secret-et nem az application.propertiesbe tettük hard codeolva, hanem generáltattunk egy megfelelőt a SecretKey secret = Keys.secretKeyFor(SignatureAlgorithm.HS512); kód segítségével. Így már működött is az authentikáció, viszont egyelőre csak egy beégetett felhasználó volt engedélyezett az oldalon, csak azzal a felhasználónévvel és jelszóval lehetett bármit csinálni az oldalon. Folytattuk tovább a tutorial sorozatot ezen a linken, hogy már ne csak egy, hanem az összes, az adatbázisunkban szereplő felhasználó be tudjon lépni az alkalmazásunkba. A felhasználók role-jait a jwt tokenbe tettük bele, hogy a későbbiekben le lehessen ellenőrizni, hogy bizonyos felhasználóknak milyen függvények hívásához van jogosultsága.

8. hét

Megírtuk az authorization részt, így most minden felhasználó csak azokat az endpointokat használhatja, amihez engedéle van a role-ja alapján. Ehhez a Spring hivatalos dokumentációjában találtunk segítséget. Pontosítottuk az alkalmazás OpenAPI dokumentációját és summary-kkel láttuk el, hogy könnyebben el lehessen rajta igazodni a frontendeseknek. Megpróbáltuk megoldani, hogy a MongoDB jelszavunk ne legyen kint githubon ahol bárki megtalálhatja, de hosszas próbálkozás után sajnos nem jártunk sikerrel. Arra jutottunk, hogy a Jasypt toollal titkosítani lehet bármit, amit el akarunk rejteni mások elől, majd egy előre megadott kulcs segítségével visszafejteni az eredeti Stringet, a kulcsot meg lokálisan kell tárolni a biztonságosság érdekében. Azért hagytuk abba a próbálkozást, mert rájöttünk, hogy ha ki akarjuk tenni Herokura az appot, akkor ott nem fog működni ez, hiszen nem tudunk a Heroku szerverekre kulcsokat pakolni. (Meg egyébként sincs akkora veszélynek kitéve az alkalmazásunk hogy erre nagy szükség legyen)

9. hét

Ezen a héten a validációval foglalkoztunk. A modeljeinket megváltoztattuk úgy, hogy csak az általunk megadott formátumú és hosszú adatokat fogadják el, ellenkező esetben pedig hibát dobjanak. Ezen felül a controllerekben le kellett ellenőrizni, hogy adott objektumok amiket szerkeszteni vagy törölni akar egy felhasználó, létezik-e, ezen felül pedig azt, hogy ha létezik, akkor az a saját idja-e, vagy ha nem, akkor ADMIN jogosultságú-e. Ez után az OfferController accept, reject és delete függvényeit refaktoráltuk hogy ne legyen kódismétlés de mégis jól szétválaszthatóak legyenek a függvények.

10. hét

Ezen a héten a sprint eltérítést valósítottuk meg és az OpenApi dokumentációt csináltuk újra mivel az ami idáig volt az egy generált dokumentáció volt(az IntelliJ által), és nem volt benne megtalálható ami egy OpenApi dokumentációban elvárható lenne.

11. hét

Ezen a héten a frontendesek kéréseit valósítottuk meg, ezzel kijavítva az alkalmazásban maradt hibákat. Ez után megírtuk a dokumentációját az appnak, majd legeneráltuk hozzá a szükséges diagramokat.

About

This is the backend part of our topic laboratories project. It is written in Java using the Spring Framework and MongoDB.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published