Login and Roles

Add a login screen with hashed passwords and librarian vs member roles.

Goal for this part

Add a sign-in screen. On success, store the current user in memory and show a home pane that reflects librarian vs member. Sign out returns to the login form.

Concepts: desktop sessions

Unlike web apps, there is no cookie. The “session” is simply an object on the application instance until the user signs out or closes the window. Still hash passwords and use a generic failure message.

How to run it and what you should see

Sign in as Grace, then Ada. Confirm the role label changes. Try a wrong password and expect a single generic error.