-
Notifications
You must be signed in to change notification settings - Fork 0
01 Zadatak
Pojašnjenje: Potrebno je napraviti jednostavan web sajt, koji ima dva tipa korisnika. Prvi tip su zaposleni, drugi tip je administrator. Sajt treba da ima stranice za registraciju, logovanje, upis novog dogadjaja u dnevnik i stranicu za admina gdje može da pregleda sve događaje.
Ako uzmemo da se sajt nalazi na domenu dnevnik.me onda je potrebno da se na adresi dnevnik.me/register nalazi forma za registraciju novih zaposlenih.
Forma za registraciju treba da ima standardna polja koja ima Laravel forma za registraciju. Detalje o Laravel autentifikaciji (logovanju/registrovanju) korisnika možete naći na https://laravel.com/docs/5.4/authentication#authentication-quickstart
Pored ovoga da biste razlikovali tipove korisnika potrebno je da kreirate i neki način raspoznavanja tipa korisnika u backendu. Jedan predlog je da kreirate tabelu roles koja sadrži sve tipove korisnika i da onda svaki korisnik u tabeli users ima kolumnu role_id koja služi za raspoznavanje.
Svaki novi korisnik koje se registruje preko register forme, treba da dobije ulogu zaposlenog. Administratora ćete dodati preko Seed klase npr AdministratorSeeder.php.
Na strani dnevnik.me/login treba da se nalazi forma za login.
Sve navedene forme, stranice i logiku imate vec ugradjenu u Laravelu, ono sto nemate su tipovi korisnika.
U pozadini u LoginControlleru treba da utvrdite koji je tip korisnika i da ga usmjerite na njihove home stranice. Za zaposlenog neka home stranica bude dnevnik.me/home , a za admina neka bude dnevnik.me/admin
Da biste zaštitili rute od nedozvoljenog pristupa potrebno je da modifikujete (ili kreirate novi middleware) koji na osnovu tipa korisnika odobrava ili blokira pristup ruti.
Detalje o Laravel middleware-u možete naći na https://laravel.com/docs/5.4/middleware
Ako korisnik tipa zaposleni, proba da pristupi ruti dnevnik.me/admin sistem treba da ga blokira, tako sto ce ga redirektovati na naslovnu stranicu dnevnik.me ili sistem treba da prikaze abort gresku ( https://laravel.com/docs/5.4/helpers#method-abort ) Ako vam padne na pamet neki drugi naci, moze i to, samo da se ne dozvoli pristup.
Na ovoj stranici treba da se nalazi jedna forma za upisivanje novog dogadjaja u dnevnik, i tabela sa izlistanim prethodnim sadrzajem dnevnika.
Forma treba da sadrzi polja: naslov, opis i dugme submit. Oba polja su obavezna i potrebno je odraditi i backend validaciju da su polja ispunjena, detalji o validaciji https://laravel.com/docs/5.4/validation
Tabela na istoj stranici sadrži kolumne, naslov, opis i kreirano (created_at datum).
Iz ovoga vidite da ova stranica treba da koristi neku tabelu u bazi podataka za upis svih ovih događaja, npr. tabela events. Polja koja su očigledna su: id, title, description, user_id, created_at, updated_at.
Potrebno je da u tabeli na home stranici prikazujete samo događaje koji pripadaju ulogovanom korisniku, sortirane u opadajućem režimu.
Ova stranica treba da ima samo gore navedenu tabelu, sa tim što ona ovdje treba da ima još jednu kolumnu, a to je ime korisnika. I ona treba da prikaže događaje svih korisnika.
Obije stranice treba da imaju dugme Logout, koje vraca korisnika na login stranu.
Sav kod koji pišete treba da prati PSR-2 stil pisanja koda, detalje imate na http://www.php-fig.org/psr/psr-2/
Ovaj standard govori o tome, gdje ide novi red, gdje se piše velika zagrada i sl. Taj standard opisuje vizuelni izgled koda. Ako ste lijeni možete u PHPStorm da instalirate plugin koji automatski ispravlja vaš kod i primjenjuje ovaj standard.
Za sav frontend kod, tj. izgled stranica, formi i ostalog koristite Bootstrap 4 https://v4-alpha.getbootstrap.com/ Tamo imate stranicu Example https://v4-alpha.getbootstrap.com/examples/ koja sadrzi gotove primjere. Login stranu smo odradili tokom radionice, a register stranu mozete napraviti modifikacijom ove strane. Skrećem pažnju da Laravel već dolazi sa frontend kodom za registraciju i login, pa mozda su potrebne samo male modifikacije.
Ovakva stranica bi bila dobra za home i admin https://v4-alpha.getbootstrap.com/examples/sticky-footer-navbar/ sa tim sto biste makli nepotrebne elemente.
Za kreiranje svih tabela u bazi podataka koristite migracije, kako bismo mogli kasnije lagano da pokrenemo testni projekat.
Ukoliko ubacite neke dodatne opcije koje se vama čine potrebnim, to će biti posmatrano kao plus.
Sav kod pišite na engleskom jeziku, frontend strane (koje korisnik vidi iz browsera) mogu da sadrže maternji jezik.
Codingo D.O.O. Podgorica 2017.