| | 1 | = UseCase0001 - Најава на корисник = |
| | 2 | |
| | 3 | '''Актер иницијатор:''' Ненајавен корисник |
| | 4 | |
| | 5 | '''Други актери:''' нема |
| | 6 | |
| | 7 | == Опис == |
| | 8 | |
| | 9 | Корисникот внесува корисничко име и лозинка за да се најави во системот. Системот проверува дали постои таков корисник, дали е активен и дали лозинката е точна. Доколку е успешно, се креира сесија и корисникот се пренасочува кон главниот екран зависно од неговата улога. |
| | 10 | |
| | 11 | == Сценарио == |
| | 12 | |
| | 13 | 1. Корисникот отвора ја апликацијата и се прикажува екранот за најава. |
| | 14 | 2. Корисникот внесува корисничко име и лозинка. |
| | 15 | |
| | 16 | 3. Системот проверува дали корисникот постои: |
| | 17 | {{{ |
| | 18 | SELECT user_id, password_hash, role_id, active |
| | 19 | FROM project.app_user |
| | 20 | WHERE username = 'petar_waiter'; |
| | 21 | }}} |
| | 22 | |
| | 23 | 4. Системот ја проверува лозинката (хеш споредба) и дали корисникот е активен. |
| | 24 | |
| | 25 | 5. Доколку е успешно, системот креира нова сесија: |
| | 26 | {{{ |
| | 27 | INSERT INTO project.session (user_id, expires_at) |
| | 28 | VALUES (3, now() + interval '12 hours') |
| | 29 | RETURNING token; |
| | 30 | }}} |
| | 31 | |
| | 32 | 6. Системот го запишува настанот во дневникот: |
| | 33 | {{{ |
| | 34 | INSERT INTO project.audit_log (user_id, action, entity_name) |
| | 35 | VALUES (3, 'LOGIN', 'app_user'); |
| | 36 | }}} |
| | 37 | |
| | 38 | 7. Системот ја чита улогата на корисникот: |
| | 39 | {{{ |
| | 40 | SELECT r.role_name |
| | 41 | FROM project.role r |
| | 42 | JOIN project.app_user u ON u.role_id = r.role_id |
| | 43 | WHERE u.user_id = 3; |
| | 44 | }}} |
| | 45 | |
| | 46 | 8. Системот го пренасочува корисникот кон главниот екран. |