// User Database Simulation // This file simulates a user database with realistic user profiles class UserDatabase { constructor() { this.initializeUsers(); } initializeUsers() { // Initialize mock users if not already in session storage if (!sessionStorage.getItem('userDatabase')) { const mockUsers = [ { id: 'user-001', username: 'sara_resource_provider', display_name: 'Sara Nicks', email: 'user1@example.com', password: 'password', role: 'resource_provider', location: 'Amsterdam, Netherlands', joined_date: '2024-01-15', reputation: 4.8, verified: true, stats: { nodes_operated: 5, total_uptime: 99.7, earnings_total: 2450 } }, { id: 'user-002', username: 'alex_dev', display_name: 'Alex Thompson', email: 'user2@example.com', password: 'password', role: 'app_provider', location: 'Berlin, Germany', joined_date: '2024-02-20', reputation: 4.9, verified: true, stats: { apps_published: 3, total_deployments: 150, revenue_total: 3200 } }, { id: 'user-003', username: 'mike_consultant', display_name: 'Mike Rodriguez', email: 'user3@example.com', password: 'password', role: 'service_provider', location: 'New York, USA', joined_date: '2024-01-10', reputation: 4.7, verified: true, stats: { services_offered: 4, clients_served: 25, hours_completed: 340 } }, { id: 'user-004', username: 'emma_security', display_name: 'Emma Wilson', email: 'user4@example.com', password: 'password', role: 'service_provider', location: 'London, UK', joined_date: '2024-03-05', reputation: 4.8, verified: true, stats: { services_offered: 2, clients_served: 18, hours_completed: 220 } }, { id: 'user-005', username: 'jordan_multi', display_name: 'Jordan Mitchell', email: 'user5@example.com', password: 'password', role: 'multi', // Can be resource_provider, app_provider, service_provider, user location: 'Toronto, Canada', joined_date: new Date().toISOString().split('T')[0], reputation: 5.0, verified: true, stats: { nodes_operated: 2, apps_published: 1, services_offered: 1, deployments: 5 } } ]; sessionStorage.setItem('userDatabase', JSON.stringify(mockUsers)); } } getUser(userId) { const users = JSON.parse(sessionStorage.getItem('userDatabase') || '[]'); return users.find(user => user.id === userId); } getUserByUsername(username) { const users = JSON.parse(sessionStorage.getItem('userDatabase') || '[]'); return users.find(user => user.username === username); } getAllUsers() { return JSON.parse(sessionStorage.getItem('userDatabase') || '[]'); } updateUserStats(userId, statUpdates) { const users = JSON.parse(sessionStorage.getItem('userDatabase') || '[]'); const userIndex = users.findIndex(user => user.id === userId); if (userIndex !== -1) { users[userIndex].stats = { ...users[userIndex].stats, ...statUpdates }; sessionStorage.setItem('userDatabase', JSON.stringify(users)); } } getCurrentUser() { return this.getUser('user-005'); // Current user } getUsersByRole(role) { const users = this.getAllUsers(); return users.filter(user => user.role === role || user.role === 'multi'); } authenticateUser(email, password) { const users = this.getAllUsers(); const user = users.find(user => user.email === email && user.password === password); return user || null; } validateCredentials(email, password) { return this.authenticateUser(email, password) !== null; } getUserByEmail(email) { const users = this.getAllUsers(); return users.find(user => user.email === email); } } // Initialize user database when script loads const userDB = new UserDatabase(); // Export for use in other modules if (typeof module !== 'undefined' && module.exports) { module.exports = UserDatabase; }