✅ Admin Page & Login Feature Planning
- Designed an admin page (admin dashboard)
- Switched to authentication using
member_id + password
- Added
is_admin column to the members table to distinguish administrator accounts
- Removed the separate
admin_users table using:
DROP TABLE IF EXISTS admin_users;
✅ members Table Changes
- Added columns:
ALTER TABLE members ADD COLUMN password_hash VARCHAR(255);
ALTER TABLE members ADD COLUMN is_admin BOOLEAN DEFAULT FALSE;
- Set a dummy account as admin:
UPDATE members SET is_admin = 1 WHERE member_id = 'KA2025-351DA1';
✅ Code Changes
- Removed the unused
get_admin_user import
- Integrated login based on
member_id and password
- Updated
add_member to accept password_hash as a parameter
- Automatically generated random passwords using
generate_password_hash and stored them in the DB
- Stored
member_id and is_admin in session
- Checked
session['is_admin'] to protect admin dashboard routes
✅ Folder / Deployment Issues
static/qrcodes/ directory was missing on Heroku, causing FileNotFoundError
- Solution: added
os.makedirs("static/qrcodes", exist_ok=True) in the code
- or added a
.keep file to track the folder in git
- TemplateNotFound for login.html:
- caused by incorrect filename (case-sensitive)
- fixed by renaming to lowercase
login.html
- Added admin_dashboard.html template
✅ Testing and Debugging
- Used Postman to test /register and /login
- Followed Heroku logs to trace 400 and 500 errors
- 400: missing form
name attribute
- 500: missing
admin_login endpoint → corrected to url_for('login')
- Finally, verified login → admin_dashboard redirect worked successfully
✅ Additional Requests
- Provided a basic admin_dashboard.html sample
- Suggested future expansion: member list, password reset, account deletion features