= Финална имплементација на случаи на употреба = На следната табела се прикажани сработените кориснички сценарија || ID || Use Case || || 1 || Кошничка - нелогиран корисник || || 2 || Логирање - Оpen Authorization protocol || || 3 || Известување при промена на статус || || 4 || Известување на продавачот за нова нарачка || || 5 || Додај во омилени (wishlist) || [[Image()]] == ИД: 1 - Kошничка - нелогиран корисник == При вчитување на основната страна, сега корисникот иако не е најавен ќе може да види дека има опција за да се купи производот. Доколку сака истиот да го купи, ќе го пренасочи на страната за логирање. [[Image(home_nelogiran.jpg)]] [[BR]] Кошничката работи за најавени корисници преку серверски API, а за нелогирани се зачувува во localStorage и синхронизира при најава. [[Image(koshnicka_nk.png)]] == ИД: 2 - Логирање - Оpen Authorization protocol == Корисниците се аутентицираат со JWT или преку Google OAuth; при OAuth backend ги линкува или креира корисниците, а ако постои сметка со лозинка OAuth се блокира. Кога корисникот ќе ја кликне опцијата за најава со google, на backend делот се иницира OAuth протоколот кон Google и се автентицира корисничката сметка и повикува callback на backend-от каде ќе проба да најде корисник по google_id. Ако постои го враќа тој корисник. Ако не најде по google_id ќе проба по email. Ако има user со тој email и тој user има password, OAuth логин се одбива и враќа порака да се најави со лозинка. Ако има user со тој email но нема password, се „линкува“ Google профилот и се враќа тој user, а ако нема user со тој email се креира нов user во users табелата со google_id и генераран username, и се враќа новиот user. По успешен автентицирање, backend издава JWT и се враќа кон frontend callback страница со токен. [[Image(oauth_1.png)]] [[BR]] [[Image(oauth_2.png)]] [[Image(oauth_3.png)]] [[Image(oauth_4.png)]] == ИД: 3 - Известување при промена на статус == Со промена на статусот од страна на продавницата, на страната на купувачот, во делот за известувања му стигнува нова порака дека статусот на нарачаниот продукт е променет. [[Image(Izvestuvanje_kupuvac.jpg)]] [[BR]] [[Image(naracki_kupuvac.png)]] [[Image(notification_frontend_1.png)]] [[Image(notification_frontend_2.png)]] [[BR]] Eве ги следните функционалности на страната на серверот. [[Image(notification_backend_1.png)]] [[Image(notification_backend_2.png)]] [[Image(notification_backend_3.png)]] [[Image(notifications.png)]] == ИД: 4 - Известување на продавачот за нова нарачка == Кога ќе се купи продукт од таа продавница, на профилот на продавачот, во header-от кај делот за известувања се појакува икона дека е стигната пораката и доколку се отвори самата порака се пренасочува корисникот до продавачкиот панел каде може да ги разгледа сите нарачки. [[Image(izvestuvanje_prodavac.jpg)]] [[BR]] [[Image(prodavacki_panel.png)]] [[BR]] По успешен checkout, се предаваат информациите за ид на продавач и ид на купувач во функцијата createNotification, кој само вметнува ред во базата за податоци. [[Image(notification_buyer.png)]] [[Image(notification_buyer_baza.png)]] == ИД: 5 - Додај во омилени (wishlist) == [[Image(wishlist.jpg)]] [[BR]] [[Image(wishlist2.jpg)]] [[Image(favourite_frontend.png)]] [[Image(favourites_backend_1.png)]] [[Image(favourites_backend_2.png)]]