Etapp 4 - alajal/eneta GitHub Wiki
Esitatavad ülesanded:
- Autentimine Google accountiga
- Kasutaja tuvastamiseks on kasutatud Google'i OAuth 2.0 protokolli (https://developers.google.com/accounts/docs/OAuth2). POST päringuga saadakse accessToken (kuhu loetakse kogu POST päringu sisu), mille abil tuvastatake Google'i kasutaja. Peale andmete kättesaamist luuakse kohe uus "session" ning sessioni globaalsesse muutujasse salvestatakse kasutaja email ja google'i user-id. Peale seda uuendatakse lehte.
- Meldimise (log in) järel näidatakse lehte, millele kasutaja soovis minna (st. millele viidati)
- Kui kasutaja soovib minna lehele, mis peaks olema ainult sisseloginutele kättesaadav (näit http://eneta.azurewebsites.net/#sisestauudis), siis kuvatakse teade, et ta peab sisse logima. Peale sisselogimist, laetakse uus sisu.
- Autoriseerimine (st. ainult meldinutele kättesaadav funktsionaalsus ja sisu)
- Autoriseerimiseks kasutatakse PHP sessioneid (http://php.net/manual/en/features.sessions.php). Vt. ülesannet 1.
- Autoriseerimine tehtud uudiste tabis #sisestauudis ning #edit_xxx korral. Kui minna selle hashiga lehele, saadetakse AJAX päring serverile, kui sisse logitud kasutaja, siis saadetakse vastuseks sisestamise vorm (lisaks kontrollitakse andmebaasi lisamisel ka sisse logimist), muidu teade, et uudiste lisamiseks peab kasutaja sisse logima.
- AJAX viited (bookmarks)
Tehtud kaks erinevat lahendust:
- Uudiste lehel kasutatud window.onhashchange meetodit. Kui hash väärtus muutub, siis kuvatakse sobiv element (teised peidetakse). Samuti kontrollitakse hash väärtust lehe laadimisel (s.t. otselingid töötavad ka).
- Grupid lehel on kasutatud history.pushState meetodit, et mingi grupi lingil vajutades muuta URL'i ning meelde jätta muudetud elementi (#content-col-grupid). Edasi/tagasi nuppude tugi on tehtud window.onpopstate meetodiga - lihtsalt asendatakse elemendi sisu meeles olnud elemendiga. Uue sisu laadimiseks ning otselingi korral kasutatakse AJAX päringut.
Koodi seis Githubis: https://github.com/alajal/eneta/releases/tag/Etapp_4