-
Notifications
You must be signed in to change notification settings - Fork 1
Documentation
A rendszer kliens-szerver architektúrát követ. A kliens biztonságos HTTPS kapcsolaton keresztül kommunikál a szerverrel, amely a kérésekre json formátumú üzenetekkel válaszol. A szerver oldal a felhasználók adatait és a CAFF fájlokhoz tartozó meta információkat (pl.: a feltöltő azonosítója, a kommentek listája, stb.) relációs adatbázisban tárolja. Az Entity Framework ORM keretrendszernek köszönhetően az alkalmazás több adatbázismotorral is kompatibilis, a konkrét technológia konfiguráció segítségével adható meg. A tényleges CAFF fájlok fájlrendszerben tárolódnak. A szerver egy REST API-t nyújt a funkcióinak elérésére, melynek megvalósításához az ASP.Net Core technológiát választottuk. Ezen keresztül van lehetőség a felhasználók kezelésére, a bejelentkezésre és a CAFF fájlok kezelésére valamint kommentek létrehozására is. A kliens oldal megvalósításához egy Android alkalmazást választottunk.
Az Android alkalmazás elkészítéséhez a Google által fejlesztett és támogatott Kotlin nyelvet választottuk, mivel lényegesen nagyobb kifejezőerővel bír és gyorsabb fejlesztést tesz lehetővé, mint a korábbi alternatíva, a Java. Az alkalmazás alapvető felépítése az MVVM mintát követi. A View mappában található a nézetek létrehozásáért felelős kód. Az alkalmazás egy activity-t tartalmaz, a különböző funkciók különböző fregmenseken érhetők el. A felhasználói interakciókat a ViewModel osztályok látják el, valamint a szerverről érkező adatok tárolása is itt történik meg. A VM osztályok** Service**-eket használnak fel a hálózati adatok küldéséhez. A REST alapú kommunikációt a Retrofit könyvtár felhasználásával oldottuk meg. A Model osztályok tartalmazzák az hálózaton átküldött és json-be sorosított adatok Kotlin reprezentációját. Ezeket data class formájában implementáltuk.
Az alkalmazás funkciói csak regisztráció és bejelentkezés után érhetőek el. A regisztráció során a rendszer ellenőrzi, hogy a felhasználónév nem foglalt-e, illetve a jelszó megfelel-e a policy.-nak. Utóbbinak az ellenőrzése kliens és szerver oldalon egyaránt megtörténik. Sikeres bejelentkezés során a kliens válaszként egy JWT tokent kap, melyet eltárol és későbbi kérések során header paraméterként mindig felküld a szerverre. A szerver ennek segítségével hitelesíti a felhasználót, illetve a token a felhasználó jogusultsági szintjét is tartalmazza. Mobilon külön felület tartozik a normál (user) és az adminisztrátori (admin) felhasználókhoz. Bizonyos funkciók, mint a kommentek vagy a Caff fájlok törlése csak adminisztrátorok számára látható. (A műveletek során természetesen szerver oldalon is történik ellenőrzés, hiszen a REST API-n keresztül nem csak mobilos kliensről kommunikálhatunk.) Az Android beépített biztonsági funkciói közül felhasználjuk az engedélyek (permission) rendszerét, hiszen a hálózati kommunikációhoz és a fájlrendszer művelethez engedély szükséges.