= UseCase0001 - Најава на корисник = '''Актер иницијатор:''' Ненајавен корисник '''Други актери:''' нема == Опис == Корисникот внесува корисничко име и лозинка за да се најави во системот. Системот проверува дали постои таков корисник, дали е активен и дали лозинката е точна. Доколку е успешно, се креира сесија и корисникот се пренасочува кон главниот екран зависно од неговата улога. == Сценарио == 1. Корисникот отвора ја апликацијата и се прикажува екранот за најава. 2. Корисникот внесува корисничко име и лозинка. 3. Системот проверува дали корисникот постои: {{{ SELECT user_id, password_hash, role_id, active FROM project.app_user WHERE username = 'petar_waiter'; }}} 4. Системот ја проверува лозинката (хеш споредба) и дали корисникот е активен. 5. Доколку е успешно, системот креира нова сесија: {{{ INSERT INTO project.session (user_id, expires_at) VALUES (3, now() + interval '12 hours') RETURNING token; }}} 6. Системот го запишува настанот во дневникот: {{{ INSERT INTO project.audit_log (user_id, action, entity_name) VALUES (3, 'LOGIN', 'app_user'); }}} 7. Системот ја чита улогата на корисникот: {{{ SELECT r.role_name FROM project.role r JOIN project.app_user u ON u.role_id = r.role_id WHERE u.user_id = 3; }}} 8. Системот го пренасочува корисникот кон главниот екран.