๐ Password Reset Tool (Normalized Database)
Checking database structure and fixing user passwords...
๐ Checking Available Roles:
| Role ID | Role Name |
|---|
| 1 | Super Admin |
| 2 | MD |
| 3 | Admin |
| 4 | Procurement Officer |
| 5 | Finance Manager |
| 6 | Department Head |
| 7 | Vendor |
| 10 | procurement |
| 11 | finance |
| 12 | hod |
๐ Checking Users Table Structure:
| Field | Type | Null | Key | Default |
|---|
| id | int | NO | PRI | |
| username | varchar(50) | NO | UNI | |
| email | varchar(100) | NO | UNI | |
| password_hash | varchar(255) | NO | | |
| first_name | varchar(50) | NO | | |
| last_name | varchar(50) | NO | | |
| phone | varchar(20) | YES | | |
| department | varchar(50) | YES | | |
| role_id | int | NO | MUL | |
| is_active | tinyint(1) | YES | MUL | 1 |
| last_login | timestamp | YES | | |
| created_at | timestamp | YES | | CURRENT_TIMESTAMP |
| updated_at | timestamp | YES | | CURRENT_TIMESTAMP |
| password | varchar(255) | NO | | |
| role | enum('admin','md','procurement','finance','hod') | NO | | |
| name | varchar(255) | NO | | |
| status | enum('active','inactive','suspended') | YES | | active |
| phone_number | varchar(20) | YES | | |
| full_name | varchar(100) | NO | | |
| department_id | int | YES | | |
๐ฅ Processing Users:
โ
Updated: admin@company.com (Role ID: 1)
โ
Updated: john.head@company.com (Role ID: 6)
โ
Updated: jane.finance@company.com (Role ID: 5)
โ
Updated: mike.procurement@company.com (Role ID: 4)
โ ๏ธ Warning: Could not find role 'managing director' for sarah.md@company.com, using default role ID: 1
โ
Updated: sarah.md@company.com (Role ID: 1)
๐ Current Users in Database:
| ID | Username | Email | Full Name | Role | Active |
|---|
| 100 | dept.head | dept.head@company.com | Department Head | Department Head (ID: 6) | Yes |
| 200 | test.hod | hod@company.com | Test Department Head | Department Head (ID: 6) | Yes |
| 25 | john.head | john.head@company.com | John Department Head | Department Head (ID: 6) | Yes |
| 101 | finance.mgr | finance.mgr@company.com | Finance Manager | Finance Manager (ID: 5) | Yes |
| 201 | test.finance | finance.test@company.com | Test Finance Manager | Finance Manager (ID: 5) | Yes |
| 4 | finance | finance@company.com | Finance Manager | Finance Manager (ID: 5) | Yes |
| 29 | jane.finance | jane.finance@company.com | Jane Finance Manager | Finance Manager (ID: 5) | Yes |
| 203 | test.md | md.test@company.com | Test Managing Director | MD (ID: 2) | Yes |
| 30 | mike.procurement | mike.procurement@company.com | Mike Procurement Manager | Procurement Officer (ID: 4) | Yes |
| 102 | proc.officer | proc.officer@company.com | Procurement Officer | Procurement Officer (ID: 4) | Yes |
| 202 | test.procurement | procurement.test@company.com | Test Procurement Officer | Procurement Officer (ID: 4) | Yes |
| 42 | admin | admin@company.com | System Administrator | Super Admin (ID: 1) | Yes |
| 2 | md | md@company.com | Managing Director | Super Admin (ID: 1) | Yes |
| 3 | procurement | procurement@company.com | Procurement Manager | Super Admin (ID: 1) | Yes |
| 31 | sarah.md | sarah.md@company.com | Sarah Managing Director | Super Admin (ID: 1) | Yes |
๐งช Test Login Credentials:
- Admin: admin@company.com / admin123
- Dept Head: john.head@company.com / password123
- Finance: jane.finance@company.com / password123
- Procurement: mike.procurement@company.com / password123
- MD: sarah.md@company.com / password123
๐ฏ Next Steps:
- Try logging in with admin@company.com / admin123
- If successful, delete this file for security
- Test other user accounts
- Check if your temp_login.php uses the correct JOIN with user_roles table
- Proceed with vendor management testing
โ ๏ธ IMPORTANT NOTES:
- Delete this file after use for security!
- Your temp_login.php should JOIN with user_roles table to get role names
- Example query:
SELECT u.*, r.role_name FROM users u JOIN user_roles r ON u.role_id = r.role_id WHERE u.email = ?