| | 1 | = UC0008 Prototype Implementation - Log In to the System = |
| | 2 | |
| | 3 | '''Initiating actor:''' Student / Teaching Staff / Faculty Administrator |
| | 4 | |
| | 5 | '''Other actors:''' None |
| | 6 | |
| | 7 | The user authenticates by entering their institutional email and password. The system looks up the user by email and verifies the password using bcrypt. On success, the user is presented with a role-based main menu. On failure, a generic error message is shown to prevent user enumeration. |
| | 8 | |
| | 9 | == Scenario == |
| | 10 | |
| | 11 | 1. The user launches the application and is presented with the login prompt. The user enters their email address and password. |
| | 12 | {{{ |
| | 13 | === FRRUAS - Login === |
| | 14 | |
| | 15 | Email: elena.stojanova@finki.ukim.mk |
| | 16 | Password: ******** |
| | 17 | }}} |
| | 18 | |
| | 19 | 2. The system queries the database for the user account by email. |
| | 20 | {{{ |
| | 21 | SELECT u.user_id, u.first_name, u.last_name, u.password, ut.type_name |
| | 22 | FROM users u |
| | 23 | JOIN user_types ut ON u.type_id = ut.type_id |
| | 24 | WHERE u.email = 'elena.stojanova@finki.ukim.mk'; |
| | 25 | }}} |
| | 26 | |
| | 27 | 3. The system verifies the entered password against the stored bcrypt hash using `bcrypt.checkpw()`. The credentials are valid. |
| | 28 | |
| | 29 | 4. The system displays a welcome message and the role-based main menu. |
| | 30 | {{{ |
| | 31 | Welcome, Elena Stojanova (Teaching Staff)! |
| | 32 | |
| | 33 | === Main Menu (Elena Stojanova - Teaching Staff) === |
| | 34 | |
| | 35 | 1. Browse Available Resources |
| | 36 | 2. Make a Resource Reservation |
| | 37 | 3. Logout |
| | 38 | 0. Cancel / Go back |
| | 39 | }}} |
| | 40 | |
| | 41 | == Alternative: Invalid Credentials == |
| | 42 | |
| | 43 | 3a. If the email is not found or the password does not match, the system displays a generic error message. |
| | 44 | {{{ |
| | 45 | Invalid email or password. Please try again. |
| | 46 | }}} |