Integrated Library System with secure login, 2FA, search, issue, return functions Ideal use case is on the Staff side of a Library DBMS
- just run main.py!
- While there already is data in the server, the first step would be to create a Staff Account by choosing Librarian on the home page and then Create
- Second, create member accounts
- Now, users can log in as Librarian or Member and execute any of their actions
Passwords are stored as an SHA256 Hash. When logging in, the input's hash is computed and compared to stored hash
- Optional two-factor authentication with phone number verification code and email+password. For both Members and Staff
- Degree of obfuscation added to remote server password. Connection to the server is needed, and the password is stored as a AES-128 encrypted file, decrypted as needed.
- Uses 2FA to verify and sends an email using the SMTP server for the email domain name with a code (since it's not a web app can't do a url)
- Mainly to prevent injections. Input validation as well in order to prevent any mischief
Able to create members and librarian accounts, lookup book journal or magazine entries and alter their contents. Can also create new librarian and delete members. Checks borrowed books as well a whole list of books borrowed etc).
- Login Options: Email + Password or set up 2FA. Password stored as SHA256 Hash
- Using 2FA and email/pass for Staff and members
- Creates member account with info and member id
- 2FA
- Can view member issues and send email reminders by clicking Notify button
Can look up books, borrow books return books
- Currently via email + pass with 2FA
- Email based verification for reset (In Progress) - move to phone 2FA
- TODO - Parametrized queries against SQLi
- Set search filters and then view results
- TODO - State should be preserved on entering page
- Shows table of search results
- Issues table display TODO
- Remove button needed for state transition
Tests written for backend scripts. Slowly adding front-end behavior emulation
-
Overarching data-store class that allows for pre-computing of values.
-
Ex: moving from search to search results - search results table populated onclick 'borrow' on search, and reference stored in DataVault
-
Each trigger (button or other) to transition to next page calls a function that precomputes values and then loads those retrieved or updated rows into the UI before initializing that fragment
Pre-loader for documents already borrowed. Used by HomePage, and SearchResults. Runs when we trigger a state transition via button in these fragments. Also called when book is Returned, to 'refresh'
Pre-loader for document search. Used by HomePage, SearchBooks
Pre-loader for member details. Used by StaffActions to show member details
- Initial Commit, basic search functions working
- Added login with email ID and password instead of member id
- Stored password as hash, created staff home page
- Completed Member side (except for magazines and journals (low priority)
- Set up input validation for account creation (edge case - empty fields - defaults to date issue)
- Fixed state transition issues
- Added SMTP client for book reminder emails
- Added 2FA for member account create and login
- Changed all UI widgets to grid layout, earlier used tk.widget.pack()
- Refactor
- Check for if email already in use
- 2FA for Staff login added
- Fixed details regression
- Validation Class added
- insertBook added with input validation
- Logged in and out states reflect pages ie no return to login page until log out
- Fixed buggy state transition. Added SSH tunneling
- Password protected via AES-128 encryption in compiled file. Not visible to user at all