| | 1 | = Use-case 001 Implementation - Најава на корисник |
| | 2 | |
| | 3 | == Актер |
| | 4 | * Ненајавен корисник |
| | 5 | |
| | 6 | == Опис |
| | 7 | Најава на корисникот во системот преку е-маил и лозинка со што добива пристап до функционалностите според неговата улога (студент или професор). |
| | 8 | |
| | 9 | == Главен тек |
| | 10 | |
| | 11 | Прво, корисникот ги внесува своите акредитиви (е-маил и лозинка) во формата за најава и клика на копчето за логирање. |
| | 12 | |
| | 13 | [[Image(login_form.jpeg, 800px)]] |
| | 14 | |
| | 15 | За да се провери дали корисникот постои во системот и да се преземат неговите податоци, се извршува следниот прашалник, каде `:email` е внесената е-маил адреса од формата: |
| | 16 | |
| | 17 | {{{ |
| | 18 | SELECT |
| | 19 | u."Id", |
| | 20 | u."Name", |
| | 21 | u."Surname", |
| | 22 | u."Email", |
| | 23 | u."PasswordHash", |
| | 24 | u."Role" |
| | 25 | FROM "User" u |
| | 26 | WHERE u."Email" = :email |
| | 27 | LIMIT 1; |
| | 28 | }}} |
| | 29 | |
| | 30 | Доколку корисникот постои, системот ја споредува внесената лозинка со хашираната лозинка (`PasswordHash`) добиена од базата. |
| | 31 | Ако лозинката е точна, се генерираат токени за автентикација (Access Token и Refresh Token). |
| | 32 | |
| | 33 | За да се зачува новиот Refresh Token во базата на податоци, се извршува следниот прашалник: |
| | 34 | |
| | 35 | {{{ |
| | 36 | INSERT INTO "RefreshToken" ("Token", "ExpiryDate", "UserId") |
| | 37 | VALUES (:token, :expiryDate, :userId); |
| | 38 | }}} |
| | 39 | |
| | 40 | По успешната најава, корисникот добива пристап и е пренасочен кон соодветната почетна страна (неговиот личен профил), во зависност од тоа дали е студент или професор. |
| | 41 | |
| | 42 | [[Image(successful_login.jpeg, 800px)]] |