init projectmycelium
This commit is contained in:
160
src/static/js/user-database.js
Normal file
160
src/static/js/user-database.js
Normal file
@@ -0,0 +1,160 @@
|
||||
// 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_farmer',
|
||||
display_name: 'Sara Nicks',
|
||||
email: 'user1@example.com',
|
||||
password: 'password',
|
||||
role: 'farmer',
|
||||
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 farmer, 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;
|
||||
}
|
Reference in New Issue
Block a user