160 lines
5.5 KiB
JavaScript
160 lines
5.5 KiB
JavaScript
// 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;
|
|
} |