Útfæra skal vefþjónustur fyrir sjónvarpsþáttavef:
- Gefin eru/verða gögn fyrir sjónvarpsþætti, season og staka þætti sem flytja þarf inn í gagnagrunn
- Hægt er að skoða öll gögn um sjónvarpsþætti án innskráningar
- Notendaumsjón
- Stjórnendur sem geta breytt, bætt við, og eytt sjónvarpsþáttum, seasons og stökum þáttum
- Notendum sem geta skráð sína „stöðu“ fyrir sjónvarpsþátt, season og staka þætti
Notendaumsjón skiptist í þrennt: óauðkenndur notandi, notendur og stjórnendur.
- Óauðkenndur notandi getur skoðað öll gögn.
- Óauðkenndur notandi getur skráð sig og skráð sig inn og orðið auðkenndur notandi.
- Notendum sem geta skráð sína „stöðu“ fyrir sjónvarpsþátt. Stöður eru:
Langar að horfa
Er að horfa
Hef horft
- Notendur geta skráð einkunn fyrir sjónvarpsþátt, heiltölugildi frá og með 0 til og með 5
- Stjórnendur geta breytt, bætt við, og eytt sjónvarpsþáttum, seasons og stökum þáttum.
- Stjórnendur geta gert aðra notendur að stjórnendum.
Nota skal JWT með passport og geyma notendur i gagnagrunni. Útfæra þarf auðkenningu, nýskráningu notanda og middleware sem passar upp á heimildir stjórnenda og notenda.
Útbúa skal í byrjun:
- Einn stjórnanda með notandanafn
admin
og þekkt lykilorð, skrá skal lykilorð íREADME
verkefnis. - Einn almennan notanda sem hefur vistaðar stöður á einhverjum af gefnum þáttum, season, þáttum, skrá skal upplýsingar um notanda í
README
- Þessi notandi er til þess að einfalda yfirferð á verkefni.
Skilgreina skal töflur fyrir:
- Sjónvarpsþætti
- Nafn, strengur, ekki tómt
- Fyrst sjónvarpað, dagsetning, má vera tóm
- Í framleiðslu?, boolean
- „Tagline“, strengur, má vera tóm
- Mynd, vísun í slóð, ekki tóm
- Lýsing, strengur, má vera tóm
- Tungumál, strengur (tæknilega
ISO 639-1
kóði fyrir tungumál), krafa en ekki þarf að staðfesta að gildi sé ISO 639-1 - Sjónvarpsstöð (e. network), strengur
- Vefsíða, strengur (url), má vera tómt
- Sjónvarpsþáttategund
- Nafn, strengur, ekki tómt
- Tengitafla milli sjónvaprsþátta og sjónvarpsþáttategundar
- Vísun í sjónvarpsþátt
- Vísun í sjónvarpsþáttategund
- Season af sjónvarpsþáttum
- Nafn, strengur, ekki tómt
- Númer, heiltala, stærri en 0, krafa
- Fyrst sjónvarpað, dagsetning, má vera tóm
- Lýsing, strengur, má vera tóm
- Poster, vísun í slóð, ekki tóm
- Vísun í sjónvarpsþátt
- Þætti
- Nafn, strengur, ekki tómt
- Númer, heiltala, stærri en 0, krafa
- Fyrst sjónvarpað, dagsetning, má vera tóm
- Lýsing, strengur, má vera tóm
- Vísun í season
- Notendur
- Notendanafn, einstakt, krafist
- Netfang, einstakt, krafist
- Lykilorð, krafist, a.m.k. 10 stafir, geymt sem hash úr bcrypt
- Stjórnandi, boolean, sjálfgefið false
- Tengitafla fyrir notendur og sjónvarpsþætti
- Vísun í sjónvarpsþátt
- Vísun í notanda
- Staða, má vera tóm, eitt af
Langar að horfa
,Er að horfa
,Hef horft
(hægt að nota strengi eðaenum
) - Einkunn, má vera tóm, heiltala,
0
,1
,2
,3
,4
,5
Töflur skulu hafa auðkenni og nota foreign keys þegar vísað er í aðrar töflur.
Nota þarf join til að sameina gögn notanda við sjónvarpsþáttagögn. Sjá dæmi í fyrirlestri 5.
Þegar verkefni er sett upp skal færa inn gögn sem gefin eru í data/
möppu.
data/series.csv
inniheldur 20 sjónvarpsseríur.serieId
skilgreinir auðkenni innan gagna.data/seasons.csv
inniheldur season fyrir allar sjónvarpsseríur. DálkurinnserieId
vísar í auðakenni þáttaraðar.data/episodes.csv
inniheldur þætti fyrir öll season. DálkurinnserieId
vísar í auðakenni þáttaraðar.
Þar sem vísað er í myndir er sú mynd í data/img
möppu.
Gögnin eru fengin frá The Movie Database og eru gögnin 20 vinsælustu þáttaraðirnar í febrúar 2021.
Gefnar eru myndir fyrir sjónvarpsþætti í img/
.
Allar myndir skal geyma í Cloudinary, bæði þær sem settar eru upp í byrjun og þær sem sendar eru inn gegnum vefþjónustu. Við notum Cloudinary þar sem boðið er upp á ókeypis aðgang, án kreditkorts.
Aðeins ætti að leyfa myndir af eftirfarandi tegund (mime type
):
- jpg,
image/jpeg
- png,
image/png
- gif,
image/gif
Þó svo að Cloudinary styðji fleiri tegundir, þá er hægt að staðfesta að við höfum mynd áður en uploadað á Cloudinary.
Útfæra skal vefþjónustur til að útfæra alla virkni. Nota skal JSON
í öllum samskiptum.
GET á /
skal skila lista af slóðum í mögulegar aðgerðir.
Þegar eining er búin til skal það aðeins gert ef notandi er stjórnandi og eining er rétt.
Ekki þarf að útfæra meira en tilgreint er (t.d. eyða, uppfæra tegund; uppfæra season; uppfæra sjónvarpsþátt).
Ef beðið er um einingu sem ekki er til skal skila 404
.
Ef beðið er um einingu eða reynt að framkvæma aðgerð sem ekki er leyfi fyrir skal skila 401
.
/tv
GET
skilar síðum af sjónvarpsþáttum með grunnupplýsingumPOST
býr til nýjan sjónvarpsþátt, aðeins ef notandi er stjórnandi
/tv/:id
GET
skilar stöku sjónvarpsþáttum með grunnupplýsingum, meðal einkunn sjónvarpsþáttar, fjölda einkunna sem hafa verið skráðar fyrir sjónvarpsþátt, fylki af tegundum sjónvarpsþáttar (genres), fylki af seasons, rating notanda, staða notandaPATCH
, uppfærir sjónvarpsþátt, reit fyrir reit, aðeins ef notandi er stjórnandiDELETE
, eyðir sjónvarpsþátt, aðeins ef notandi er stjórnandi
/tv/:id/season/
GET
skilar fylki af öllum seasons fyrir sjónvarpsþáttPOST
býr til nýtt í season í sjónvarpþætti, aðeins ef notandi er stjórnandi
/tv/:id/season/:id
GET
skilar stöku season fyrir þátt með grunnupplýsingum, fylki af þáttumDELETE
, eyðir season, aðeins ef notandi er stjórnandi
/tv/:id/season/:id/episode/
POST
býr til nýjan þátt í season, aðeins ef notandi er stjórnandi
/tv/:id/season/:id/episode/:id
GET
skilar upplýsingum um þáttDELETE
, eyðir þætti, aðeins ef notandi er stjórnandi
/genres
GET
skilar síðu af tegundum (genres)POST
býr til tegund, aðeins ef notandi er stjórnandi
/users/
GET
skilar síðu af notendum, aðeins ef notandi sem framkvæmir er stjórnandi
/users/:id
GET
skilar notanda, aðeins ef notandi sem framkvæmir er stjórnandiPATCH
breytir hvort notandi sé stjórnandi eða ekki, aðeins ef notandi sem framkvæmir er stjórnandi og er ekki að breyta sér sjálfum
/users/register
POST
staðfestir og býr til notanda. Skilar auðkenni og netfangi. Notandi sem búinn er til skal aldrei vera stjórnandi
/users/login
POST
með netfangi (eða notandanafni) og lykilorði skilar token ef gögn rétt
/users/me
GET
skilar upplýsingum um notanda sem á token, auðkenni og netfangi, aðeins ef notandi innskráðurPATCH
uppfærir netfang, lykilorð eða bæði ef gögn rétt, aðeins ef notandi innskráður
Aldrei skal skila eða sýna hash fyrir lykilorð.
/tv/:id/rate
POST
, skráir einkunn innskráðs notanda á sjónvarpsþætti, aðeins fyrir innskráða notendurPATCH
, uppfærir einkunn innskráðs notanda á sjónvarpsþættiDELETE
, eyðir einkunn innskráðs notanda á sjónvarpsþætti
/tv/:id/state
POST
, skráir stöðu innskráðs notanda á sjónvarpsþætti, aðeins fyrir innskráða notendurPATCH
, uppfærir stöðu innskráðs notanda á sjónvarpsþættiDELETE
, eyðir stöðu innskráðs notanda á sjónvarpsþætti
/tv/:id
- Ef notandi er innskráður skal sýna einkunn og stöðu viðkomandi á sjónvarpsþætti.
Allar niðurstöður sem geta skilað mörgum færslum (fleiri en 10) skulu skila síðum.
Ekki þarf að útfæra „týnt lykilorð“ virkni.
Lausn skal keyra á Heroku.
Hægt er að skoða sýnilausn á: https://vef2-2021-h1-synilausn.herokuapp.com/
.
Útfært:
- Gögn færð inn með myndum
- Óinnskráður notandi getur skoðað öll gögn
Verkefnið skal unnið í hóp, helst með þremur einstaklingum. Hópar með tveim eða fjórum einstaklingum eru einnig í lagi, ekki er dregið úr kröfum fyrir færri í hóp en gerðar eru auknar kröfur ef fleiri en þrír einstaklingar eru í hóp.
Hægt er að auglýsa eftir hóp á slack á rásinni #vef2-2021-hópur.
Hafið samband við kennara ef ekki tekst eða ekki er mögulegt að vinna í hóp.
Í rót verkefnis skal vera README.md
skjal sem tilgreinir:
- Upplýsingar um hvernig setja skuli upp verkefnið
- Dæmi um köll í vefþjónustu
- Innskráning fyrir
admin
stjórnanda ásamt lykilorði - Innskráning fyrir almennan notanda ásamt lykilorði
- Nöfn og notendanöfn allra í hóp
- 25% – Töflur og gögn lesin inn
- 25% – Auðkenning og notendaumsjón
- 50% — Vefþjónustur skilgreindar skv. forskrift
Verkefni sett fyrir í fyrirlestri fimmtudaginn 4. febrúar 2021.
Verkefni fullmótað sett fyrir á Canvas sunnudaginn 21. febrúar 2021.
Á Canvas eru skilgreindir 40 hópar (People > Hópverkefni 1) sem hópur þarf að skrá sig í. Fyrsti nemandi sem skráir sig er sjálfgefið hópstjóri.
Hópstjóri skilar fyrir hönd hóps á Canvas, í seinasta lagi fyrir lok dags sunnudaginn 21. mars 2021.
Skilaboð skulu innihalda slóð á GitHub repo fyrir verkefni, og dæmatímakennurum skal hafa verið boðið í repo (sjá leiðbeiningar) ásamt slóð á verkefnið keyrandi á Heroku. Notendanöfn þeirra eru:
jonnigs
mimiqkz
Steinalicious
zurgur
Athugið að skilum fyrir verkefni lokar kl. 23:59 sunnudaginn 21. mars 2021.
Sett verða fyrir 6 minni verkefni þar sem 5 bestu gilda 8% hvert, samtals 40% af lokaeinkunn.
Sett verða fyrir tvö hópverkefni þar sem hvort um sig gildir 10%, samtals 20% af lokaeinkunn.
Útgáfa 0.4
Útgáfa | Lýsing |
---|---|
0.1 | Fyrsta útgáfa, ekki er búið að fullskilgreina vefþjónustuskil eða útbúa gögn í byrjun, stefnt á að verði komið 7.–8. febrúar. Nota skal tíma þangað til, til þess að finna hóp, skipta með sér verkum, ákveða samskipti, og skilgreina tímalínu fyrir vinnu á verkefninu. Yfirferð í fyrirlestri 4 |
0.2 | Lýsing á gögnum, lýsing á þjónustum, mat, gögn |
0.3 | Lagfæringar á lýsingu. Vísun á vefþjónustu sýnilausnar |
0.4 | /user/login má taka við notandanafni |