= Имплементација на случаите на употреба ---- ** Преглед на Model класите ** [[Image(Screenshot_20230122_072453.png, width=100%)]] ---- == Регуларен корисник === Ги прелистува секциите за дискусија Текот на податоци откако корисникот ќе внесе 4 знаци во полето за пребарување на професори и предмети. \\ [[Image(prelistuva1.png, width=100%)]] ---- Истиот тек го следат повеќето делови од апликацијата. На пример, приказот на сите теми за даден предмет откако корисникот ќе се најде на страницата /subject/[subjectId], го спроведува компонентата Topic.js на сличен начин како погоре. \\ [[Image(prelistuva2.png, width=100%)]] === Корисничка регистрација Главниот дел од логиката за корисничка регистрација се содржи во register методата од RegistrationService која се одзива на повик од RegistrationController и која прима податоци за новата корисничка сметка што треба да ја креира. \\ Истата зависи од неколку сервис класи кои содржат методи за валидација на примените податоци, како и од repository слојот. Вторава зависност е да се провери дали во базата постои корисник со ист e-mail (уникатна колона во случајов) и ако постои, дали сметката му е активирана. Во случајот да постои и да е активирана, се враќа исклучок со порака што се пропагира до UI слојот. Во спротивно, се инстанцира и перзистира во база објект од класата ConfirmationToken, со чиешто уникатно поле се гради линк за активација на сметката. Со помош на трета зависност - EmailSender класата (која повикува методи од JavaMail API) се испраќа мејл со линкот за активација, кој води до GET повик на кој се одзива confirm методот од RegistrationController, чијашто задача е да провери дали во базата постои токенот кој го добива како параметар. Доколку постои и е важечки (генериран пред доволно краток временски период), методот ја овозможува сметката и тоа го соопштува на UI слојот со враќање на стрингот „Confirmed“. [[Image(registracija1.png, width=100%)]] === Корисничка најава Најавата се врши преку кориснички интерфејс, со POST повик до сервисот за најава. Апликацијата користи автентикација со помош на колачиња. Доколку корисничкото име и лозинката се валидни, сервисот за најава му враќа на клиентот променлива (JSESSIONID), која вториот ја зачувува како колаче во прелистувачот и ја користи за сите понатамошни повици до други сервиси, сè додека корисникот не се одјави и колачето не се избрише. Колачето не се користи само за backend сервиси кои бараат автентикација, туку и за контрола на погледот во самиот клиент. Имено, многу UI компоненти се ограничени (се целосно скриени или видоизменети) зависно од глобална променлива „auth“ која се поставува на true доколку колачето е вчитано. [[Image(najava.png, width=100%)]] === Додава мислење во секција за дискусија [[Image(dodava1.jpg, width=80%)]] === Коментира туѓо мислење [[Image(replicira1.jpg, width=80%)]] === Оценува туѓо мислење [[Image(ocenuva1.png, width=80%)]] === Пријавува туѓо мислење [[Image(prijavuva1.png, width=80%)]] === Го уредува својот кориснички профил ''Случајот на употреба нема да се имплементира.'' === Го верификува својот кориснички профил ''Случајот на употреба нема да се имплементира.'' == Модератор === Прегледува пријави за содржината === Изменува или брише напишана содржина