From 6aae0fee41f7f1868d46cb6d05a43c3ba6e6e94b Mon Sep 17 00:00:00 2001 From: admin Date: Thu, 17 Jul 2025 17:48:50 -0600 Subject: [PATCH] added in the user managment section. Need to also do some updates to the admin menue and whatnot however itll get figured. --- map/README.md | 25 +- map/app/controllers/usersController.js | 30 +- map/app/public/admin.html | 66 ++ map/app/public/css/admin.css | 562 ++++++++++++++++-- map/app/public/css/user.css | 324 ++++++++++ map/app/public/index.html | 8 +- map/app/public/js/admin.js | 336 ++++++----- map/app/public/js/user.js | 97 +++ map/app/public/user.html | 59 ++ map/app/routes/admin.js | 20 + map/app/routes/debug.js | 39 ++ map/app/routes/index.js | 5 + map/build-nocodb.md | 2 +- map/build-nocodb.sh | 6 +- map/files-explainer.md | 16 +- .../7ca622286d4c40d181cd6c809308aadd.png | Bin 0 -> 68446 bytes .../a0553b3e88ffc3c868350353b63036cb.png | Bin 0 -> 68632 bytes mkdocs/docs/config/map.md | 2 +- mkdocs/docs/how to/canvass.md | 4 + mkdocs/docs/manual/map.md | 3 +- mkdocs/site/config/map/index.html | 2 +- mkdocs/site/services/map/index.html | 2 +- 22 files changed, 1382 insertions(+), 226 deletions(-) create mode 100644 map/app/public/css/user.css create mode 100644 map/app/public/js/user.js create mode 100644 map/app/public/user.html create mode 100644 mkdocs/.cache/plugin/social/7ca622286d4c40d181cd6c809308aadd.png create mode 100644 mkdocs/.cache/plugin/social/a0553b3e88ffc3c868350353b63036cb.png create mode 100644 mkdocs/docs/how to/canvass.md diff --git a/map/README.md b/map/README.md index 522e86e..2f01973 100644 --- a/map/README.md +++ b/map/README.md @@ -15,10 +15,12 @@ A containerized web application that visualizes geographic data from NocoDB on a - 🎯 Configurable map start location - 📋 Walk Sheet generator for door-to-door canvassing - 🔗 QR code integration for digital resources -- � Volunteer shift management system with calendar and grid views +- 📅 Volunteer shift management system with calendar and grid views - ✋ User shift signup and cancellation with color-coded calendar - 👥 Admin shift creation and management -- �🐳 Docker containerization for easy deployment +- 👨‍💼 User management panel for admin users (create, delete users) +- 🔐 Role-based access control (Admin vs User permissions) +- 🐳 Docker containerization for easy deployment - 🆓 100% open source (no proprietary dependencies) ## Quick Start @@ -140,7 +142,7 @@ The build script automatically creates the following table structure: - `Support Level` (Single Select): Options: "1", "2", "3", "4" (1=Strong Support/Green, 2=Moderate Support/Yellow, 3=Low Support/Orange, 4=No Support/Red) - `Address` (Single Line Text): Street address - `Sign` (Checkbox): Has campaign sign -- `Sign Size` (Single Select): Options: "Small", "Medium", "Large" +- `Sign Size` (Single Select): Options: "Regular", "Large", "Unsure" - `Notes` (Long Text): Additional details and comments - `title` (Text): Location name (legacy field) - `category` (Single Select): Classification (legacy field) @@ -272,14 +274,27 @@ Users with admin privileges can access the admin panel at `/admin.html` to confi - **Live Preview**: See changes as you type - **Print Optimization**: Proper formatting for printing or PDF export - **Persistent Storage**: All QR codes and settings saved to NocoDB -- **Real-time Preview**: See changes immediately on the admin map -- **Validation**: Built-in coordinate and zoom level validation + +#### Shift Management + +- **Create Shifts**: Set up volunteer shifts with dates, times, and capacity +- **Manage Volunteers**: View signups and manage shift participants +- **Real-time Updates**: See shift status changes immediately + +#### User Management + +- **Create Users**: Add new user accounts with email and password +- **Role Assignment**: Assign admin or user privileges +- **User List**: View all registered users with their details and creation dates +- **Delete Users**: Remove user accounts (with confirmation prompts) +- **Security**: Password validation and admin-only access ### Access Control - Admin access is controlled via the `Admin` checkbox in the Login table - Only authenticated users with admin privileges can access `/admin.html` - Admin status is checked on every request to admin endpoints +- User management functions are restricted to admin users only ### Start Location Priority diff --git a/map/app/controllers/usersController.js b/map/app/controllers/usersController.js index 045a57b..c265c8a 100644 --- a/map/app/controllers/usersController.js +++ b/map/app/controllers/usersController.js @@ -6,19 +6,34 @@ const { sanitizeUser, extractId } = require('../utils/helpers'); class UsersController { async getAll(req, res) { try { + // Debug logging + logger.info('UsersController.getAll called'); + logger.info('loginSheetId from config:', config.nocodb.loginSheetId); + logger.info('NocoDB config:', { + apiUrl: config.nocodb.apiUrl, + hasToken: !!config.nocodb.apiToken, + projectId: config.nocodb.projectId, + tableId: config.nocodb.tableId, + loginSheetId: config.nocodb.loginSheetId + }); + if (!config.nocodb.loginSheetId) { + logger.error('Login sheet not configured in environment'); return res.status(500).json({ success: false, - error: 'Login sheet not configured' + error: 'Login sheet not configured. Please set NOCODB_LOGIN_SHEET in your environment variables.' }); } + logger.info('Fetching users from NocoDB...'); + // Remove the sort parameter that's causing the error const response = await nocodbService.getAll(config.nocodb.loginSheetId, { - limit: 100, - sort: '-created_at' + limit: 100 + // Removed: sort: '-created_at' }); const users = response.list || []; + logger.info(`Retrieved ${users.length} users from database`); // Remove password field from response for security const safeUsers = users.map(sanitizeUser); @@ -32,7 +47,7 @@ class UsersController { logger.error('Error fetching users:', error); res.status(500).json({ success: false, - error: 'Failed to fetch users' + error: 'Failed to fetch users: ' + error.message }); } } @@ -65,7 +80,7 @@ class UsersController { }); } - // Create new user + // Create new user - use the actual column names from your table const userData = { Email: email, email: email, @@ -74,9 +89,8 @@ class UsersController { Name: name || '', name: name || '', Admin: admin === true, - admin: admin === true, - 'Created At': new Date().toISOString(), - created_at: new Date().toISOString() + admin: admin === true + // Removed created_at fields as they might not exist }; const response = await nocodbService.create( diff --git a/map/app/public/admin.html b/map/app/public/admin.html index bac2651..f1dbd3a 100644 --- a/map/app/public/admin.html +++ b/map/app/public/admin.html @@ -38,6 +38,7 @@ Start Location Walk Sheet Shifts + User Management @@ -239,6 +240,71 @@ + + + diff --git a/map/app/public/css/admin.css b/map/app/public/css/admin.css index 4daff93..18c487e 100644 --- a/map/app/public/css/admin.css +++ b/map/app/public/css/admin.css @@ -564,90 +564,297 @@ color: var(--warning-color); } -/* Responsive - Scale down for smaller screens */ -@media (max-width: 1400px) { - .walk-sheet-preview .walk-sheet-page { - transform: scale(0.85); - transform-origin: top center; - } - .walk-sheet-preview { - min-height: 850px; - } +/* User Management Styles */ +.users-admin-container { + display: grid; + grid-template-columns: 1fr 2fr; + gap: 30px; + margin-top: 20px; } -/* Mobile/Small Screen Layout - Stack config above preview */ -@media (max-width: 1200px) { - .walk-sheet-container { - display: flex !important; /* Change from grid to flex */ - flex-direction: column !important; /* Stack vertically */ +.user-form, +.users-list { + background: white; + border-radius: var(--border-radius); + padding: 25px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + border: 1px solid #e0e0e0; +} + +.user-form h3, +.users-list h3 { + margin-bottom: 20px; + color: var(--dark-color); + border-bottom: 2px solid var(--primary-color); + padding-bottom: 10px; + font-size: 18px; +} + +.users-table { + width: 100%; + border-collapse: collapse; + margin-top: 15px; + font-size: 14px; +} + +.users-table th, +.users-table td { + padding: 12px; + text-align: left; + border-bottom: 1px solid #e0e0e0; +} + +.users-table th { + background-color: #f8f9fa; + font-weight: 600; + color: var(--dark-color); + font-size: 13px; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.users-table tbody tr { + transition: background-color 0.2s; +} + +.users-table tbody tr:hover { + background-color: #f8f9fa; +} + +.user-role { + padding: 4px 8px; + border-radius: 12px; + font-size: 11px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.user-role.admin { + background-color: #dc3545; + color: white; +} + +.user-role.user { + background-color: #28a745; + color: white; +} + +.user-actions { + display: flex; + gap: 8px; +} + +.user-actions .btn { + padding: 6px 12px; + font-size: 12px; + border-radius: var(--border-radius); + font-weight: 500; +} + +.btn-danger { + background-color: #dc3545; + color: white; + border: 1px solid #dc3545; + transition: var(--transition); +} + +.btn-danger:hover { + background-color: #c82333; + border-color: #c82333; + transform: translateY(-1px); +} + +.loading-message, +.empty-message { + text-align: center; + padding: 40px 20px; + color: #666; + font-style: italic; + background-color: #f8f9fa; + border-radius: var(--border-radius); + margin-top: 15px; +} + +.loading-message { + background-color: #e3f2fd; + color: #1976d2; +} + +/* User form specific styles */ +.user-form .form-group { + margin-bottom: 20px; +} + +.user-form .form-group label { + display: block; + margin-bottom: 8px; + font-weight: 600; + color: var(--dark-color); + font-size: 14px; +} + +.user-form .form-group label input[type="checkbox"] { + margin-right: 8px; + transform: scale(1.1); +} + +.user-form input[type="email"], +.user-form input[type="password"], +.user-form input[type="text"] { + width: 100%; + padding: 12px; + border: 2px solid #ddd; + border-radius: var(--border-radius); + font-size: 14px; + transition: var(--transition); + background-color: #fafafa; +} + +.user-form input:focus { + outline: none; + border-color: var(--primary-color); + background-color: white; + box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.1); +} + +.user-form .form-actions { + display: flex; + gap: 10px; + margin-top: 25px; +} + +.user-form .form-actions .btn { + flex: 1; + padding: 12px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.5px; + font-size: 13px; +} + +/* Responsive design for user management */ +@media (max-width: 768px) { + .users-admin-container { + grid-template-columns: 1fr; gap: 20px; } - .walk-sheet-config { - order: 1 !important; /* Config first */ - margin-bottom: 20px; + .users-table { + font-size: 12px; } - .walk-sheet-preview { - order: 2 !important; /* Preview second */ - padding: 20px; - min-height: auto; - max-width: 100vw; - overflow-x: auto; /* Allow horizontal scroll if needed */ - display: flex; - justify-content: center; /* Center the page */ + .users-table th, + .users-table td { + padding: 8px; } - .walk-sheet-preview .walk-sheet-page { - transform: scale(0.75); - transform-origin: top center; - margin-bottom: -200px; - max-width: 100%; /* Prevent overflow */ + .user-actions { + flex-direction: column; + gap: 4px; } -} - -@media (max-width: 1000px) { - .walk-sheet-preview .walk-sheet-page { - transform: scale(0.5); - margin-bottom: -400px; + + .user-actions .btn { + font-size: 11px; + padding: 4px 8px; } -} - -@media (max-width: 768px) { + + .user-form .form-actions { + flex-direction: column; + } + + /* Admin container mobile layout */ .admin-container { flex-direction: column; } + .admin-sidebar { width: 100%; border-right: none; border-bottom: 1px solid #e0e0e0; + padding: 15px; } + + .admin-nav { + flex-direction: row; + overflow-x: auto; + gap: 10px; + padding-bottom: 10px; + } + + .admin-nav a { + white-space: nowrap; + min-width: auto; + padding: 8px 12px; + font-size: 14px; + } + .header .header-actions { display: flex !important; gap: 10px; + flex-wrap: wrap; } + .header .header-actions .btn { padding: 6px 10px; font-size: 13px; } + .admin-info { font-size: 12px; } + .admin-map-container { grid-template-columns: 1fr; + gap: 15px; } + .admin-map { - height: 220px; + height: 250px; } + .admin-content { - padding: 8px; + padding: 15px; } + .admin-section { - padding: 10px; + padding: 15px; } + .form-row { grid-template-columns: 1fr; } + + /* Shifts admin mobile */ + .shifts-admin-container { + grid-template-columns: 1fr; + gap: 20px; + } + + .shift-admin-item { + flex-direction: column; + align-items: flex-start; + gap: 10px; + } + + .shift-actions { + width: 100%; + justify-content: flex-end; + } + + /* Walk sheet container mobile */ + .walk-sheet-container { + display: flex !important; + flex-direction: column !important; + gap: 20px; + } + + .walk-sheet-config { + order: 1 !important; + margin-bottom: 20px; + } + + /* Walk sheet mobile */ .walk-sheet-preview { min-width: 0; max-width: 100%; @@ -673,20 +880,124 @@ left: 50%; margin-left: -408px; /* Half of 816px to center it */ } -} - -/* Even smaller screens */ -@media (max-width: 480px) { - .walk-sheet-preview { - padding: 5px; - width: 100%; + + /* Status container mobile */ + .status-container { + top: 10px; + right: 10px; + left: 10px; + max-width: none; + display: flex; + flex-direction: column; + align-items: center; } - .walk-sheet-preview #walk-sheet-preview-content { + .status-message { + font-size: 13px; + padding: 10px 12px; + max-width: 90%; + text-align: center; + } +} + +@media (max-width: 480px) { + .users-table { + font-size: 11px; + } + + .user-role { + font-size: 10px; + padding: 2px 6px; + } + + .user-form input[type="email"], + .user-form input[type="password"], + .user-form input[type="text"] { + padding: 10px; + font-size: 13px; + } + + /* Very small screen adjustments */ + .admin-content { + padding: 10px; + } + + .admin-section { + padding: 10px; + } + + .admin-sidebar { + padding: 10px; + } + + .admin-nav a { + padding: 6px 10px; + font-size: 13px; + } + + .header .header-actions .btn { + padding: 5px 8px; + font-size: 12px; + } + + .admin-info { + display: none; /* Hide on very small screens */ + } + + .admin-map { + height: 200px; + } + + /* Walk sheet very small screens */ + .walk-sheet-preview { + padding: 10px; + width: 100%; + display: flex; + justify-content: center; + align-items: flex-start; + } + + .walk-sheet-preview .walk-sheet-page { transform: scale(0.25); + transform-origin: center top; margin-bottom: -750px; - left: 50%; - margin-left: -408px; /* Keep centered */ + margin-left: auto; + margin-right: auto; + } + + /* Form adjustments */ + .form-group input, + .form-group select { + font-size: 16px; /* Prevent zoom on iOS */ + } + + .btn { + min-height: 44px; /* Touch-friendly button size */ + padding: 10px 16px; + } + + .btn-sm { + min-height: 36px; + padding: 8px 12px; + } + + /* User management specific mobile adjustments */ + .user-container { + padding: 0.5rem; + } + + .user-profile { + padding: 1rem; + } + + .users-table th { + font-size: 10px; + } + + .user-actions .btn { + font-size: 10px; + padding: 3px 6px; + min-height: 32px; } } @@ -813,3 +1124,150 @@ grid-template-columns: 1fr; } } + +/* Additional mobile styles for better responsiveness */ +@media (max-width: 1200px) { + .walk-sheet-container { + display: flex !important; + flex-direction: column !important; + gap: 20px; + } + + .walk-sheet-config { + order: 1 !important; + margin-bottom: 20px; + } + + .walk-sheet-preview { + order: 2 !important; + padding: 20px; + min-height: auto; + max-width: 100vw; + overflow-x: auto; + display: flex; + justify-content: center; + align-items: flex-start; + } + + .walk-sheet-preview .walk-sheet-page { + transform: scale(0.75); + transform-origin: center top; + margin-bottom: -200px; + max-width: 100%; + margin-left: auto; + margin-right: auto; + } +} + +@media (max-width: 1000px) { + .walk-sheet-preview .walk-sheet-page { + transform: scale(0.5); + transform-origin: center top; + margin-bottom: -400px; + margin-left: auto; + margin-right: auto; + } +} + +/* Tablet and mobile header adjustments */ +@media (max-width: 1024px) { + .header { + padding: 10px 15px; + } + + .header h1 { + font-size: 20px; + } + + .header .header-actions { + gap: 8px; + } +} + +/* Responsive Table Styles for Mobile */ +@media (max-width: 640px) { + .users-table { + border: 0; + } + + .users-table thead { + border: none; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + } + + .users-table tr { + border-bottom: 3px solid #ddd; + display: block; + margin-bottom: 10px; + padding: 10px; + background: #f8f9fa; + border-radius: 6px; + } + + .users-table td { + border: none; + border-bottom: 1px solid #eee; + display: block; + font-size: 13px; + text-align: right; + padding: 8px 10px; + } + + .users-table td::before { + content: attr(data-label); + float: left; + font-weight: bold; + text-transform: uppercase; + font-size: 11px; + color: #666; + } + + .users-table td:last-child { + border-bottom: 0; + } + + .user-actions { + justify-content: flex-end; + margin-top: 8px; + } + + .user-actions .btn { + width: auto !important; + min-width: 80px; + flex: none; + } +} + +/* Enhanced mobile form styling */ +@media (max-width: 480px) { + .user-form input[type="email"], + .user-form input[type="password"], + .user-form input[type="text"] { + font-size: 16px; /* Prevent zoom on iOS */ + padding: 12px; + } + + .user-form .form-group label { + font-size: 14px; + } + + .user-form .form-actions .btn { + width: 100%; + margin-bottom: 8px; + } + + .users-table td { + font-size: 12px; + padding: 6px 8px; + } + + .users-table td::before { + font-size: 10px; + } +} diff --git a/map/app/public/css/user.css b/map/app/public/css/user.css new file mode 100644 index 0000000..860deac --- /dev/null +++ b/map/app/public/css/user.css @@ -0,0 +1,324 @@ +/* User Profile Styles */ + +.user-container { + max-width: 800px; + margin: 0 auto; + padding: 2rem; +} + +.user-profile { + background: #ffffff; + border-radius: 8px; + padding: 2rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + border: 1px solid #e0e0e0; +} + +.user-profile h2 { + margin-bottom: 1.5rem; + color: #333; + border-bottom: 2px solid #007bff; + padding-bottom: 0.5rem; +} + +.profile-info { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.profile-info .form-group { + display: flex; + align-items: center; + padding: 0.75rem 0; + border-bottom: 1px solid #f0f0f0; +} + +.profile-info .form-group:last-child { + border-bottom: none; +} + +.profile-info label { + font-weight: 600; + color: #555; + min-width: 100px; + margin-right: 1rem; +} + +.profile-info span { + color: #333; + flex: 1; +} + +/* Users Admin Table Styles (for admin panel) */ +.users-admin-container { + display: grid; + grid-template-columns: 1fr 2fr; + gap: 2rem; + margin-top: 1rem; +} + +.user-form, +.users-list { + background: #ffffff; + border-radius: 8px; + padding: 1.5rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + border: 1px solid #e0e0e0; +} + +.user-form h3, +.users-list h3 { + margin-bottom: 1rem; + color: #333; + border-bottom: 2px solid #007bff; + padding-bottom: 0.5rem; +} + +.users-table { + width: 100%; + border-collapse: collapse; + margin-top: 1rem; +} + +.users-table th, +.users-table td { + padding: 0.75rem; + text-align: left; + border-bottom: 1px solid #e0e0e0; +} + +.users-table th { + background-color: #f8f9fa; + font-weight: 600; + color: #555; +} + +.users-table tbody tr:hover { + background-color: #f8f9fa; +} + +.user-role { + padding: 0.25rem 0.5rem; + border-radius: 4px; + font-size: 0.8rem; + font-weight: 600; +} + +.user-role.admin { + background-color: #dc3545; + color: white; +} + +.user-role.user { + background-color: #28a745; + color: white; +} + +.user-actions { + display: flex; + gap: 0.5rem; +} + +.user-actions .btn { + padding: 0.25rem 0.5rem; + font-size: 0.8rem; +} + +.btn-danger { + background-color: #dc3545; + color: white; + border: 1px solid #dc3545; +} + +.btn-danger:hover { + background-color: #c82333; + border-color: #c82333; +} + +.loading-message, +.empty-message { + text-align: center; + padding: 2rem; + color: #666; + font-style: italic; +} + +/* Form styles specific to user creation */ +.user-form .form-group label { + display: block; + margin-bottom: 0.5rem; + font-weight: 600; + color: #333; +} + +.user-form .form-group label input[type="checkbox"] { + margin-right: 0.5rem; +} + +.user-form input[type="email"], +.user-form input[type="password"], +.user-form input[type="text"] { + width: 100%; + padding: 0.75rem; + border: 1px solid #ddd; + border-radius: 4px; + font-size: 1rem; +} + +.user-form input:focus { + outline: none; + border-color: #007bff; + box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); +} + +/* Responsive design */ +@media (max-width: 768px) { + .users-admin-container { + grid-template-columns: 1fr; + gap: 1rem; + } + + .users-table { + font-size: 0.9rem; + } + + .users-table th, + .users-table td { + padding: 0.5rem; + } + + .user-container { + padding: 1rem; + } + + /* Header mobile adjustments */ + .header { + padding: 10px 15px; + } + + .header h1 { + font-size: 20px; + } + + .header .header-actions { + display: flex !important; + gap: 8px; + flex-wrap: wrap; + } + + .header .header-actions .btn { + padding: 6px 10px; + font-size: 13px; + } + + .user-info { + font-size: 12px; + } + + /* User profile mobile */ + .user-profile { + padding: 1.5rem; + } + + .profile-info .form-group { + padding: 0.5rem 0; + flex-direction: column; + align-items: flex-start; + gap: 0.25rem; + } + + .profile-info label { + min-width: auto; + margin-right: 0; + font-size: 14px; + } + + .profile-info span { + font-size: 14px; + } + + /* Ensure all buttons are touch-friendly */ + .btn { + min-height: 44px; + padding: 12px 16px; + font-size: 14px; + } + + .btn-sm { + min-height: 36px; + padding: 8px 12px; + font-size: 13px; + } + + /* Better spacing for form elements */ + .form-group { + margin-bottom: 20px; + } + + /* Improve input focus visibility */ + input:focus, + select:focus, + textarea:focus { + outline: 2px solid #007bff; + outline-offset: 2px; + } +} + +@media (max-width: 480px) { + .users-table { + font-size: 0.8rem; + } + + .user-actions { + flex-direction: column; + gap: 0.25rem; + } + + .user-actions .btn { + font-size: 0.7rem; + } + + .user-container { + padding: 0.5rem; + } + + /* Very small screen adjustments */ + .header .header-actions .btn { + padding: 5px 8px; + font-size: 12px; + min-height: 36px; + } + + .user-info { + display: none; /* Hide on very small screens to save space */ + } + + .user-profile { + padding: 1rem; + } + + .user-profile h2 { + font-size: 18px; + margin-bottom: 1rem; + } + + .profile-info .form-group { + padding: 0.4rem 0; + } + + .profile-info label { + font-size: 13px; + font-weight: 500; + } + + .profile-info span { + font-size: 13px; + } + + /* Touch-friendly logout button */ + #logout-btn { + min-height: 44px; + padding: 10px 16px; + } +} diff --git a/map/app/public/index.html b/map/app/public/index.html index 4785ada..11d8c92 100644 --- a/map/app/public/index.html +++ b/map/app/public/index.html @@ -188,9 +188,9 @@ @@ -299,9 +299,9 @@ diff --git a/map/app/public/js/admin.js b/map/app/public/js/admin.js index 85edc85..a389dc5 100644 --- a/map/app/public/js/admin.js +++ b/map/app/public/js/admin.js @@ -260,6 +260,18 @@ function setupEventListeners() { if (clearShiftBtn) { clearShiftBtn.addEventListener('click', clearShiftForm); } + + // User form submission + const userForm = document.getElementById('user-form'); + if (userForm) { + userForm.addEventListener('submit', createUser); + } + + // Clear user form button + const clearUserBtn = document.getElementById('clear-user-form'); + if (clearUserBtn) { + clearUserBtn.addEventListener('click', clearUserForm); + } } // Setup navigation between admin sections @@ -297,6 +309,12 @@ function setupNavigation() { loadAdminShifts(); } + // If switching to users section, load users + if (targetId === 'users') { + console.log('Loading users...'); + loadUsers(); + } + // If switching to walk sheet section, load config if (targetId === 'walk-sheet') { loadWalkSheetConfig().then((success) => { @@ -537,9 +555,9 @@ function generateWalkSheetPreview() {
- S - M + R L + U
@@ -955,62 +973,6 @@ function displayAdminShifts(shifts) { setupShiftActionListeners(); } -// Fix the setupNavigation function to properly load shifts when switching to shifts section -function setupNavigation() { - const navLinks = document.querySelectorAll('.admin-nav a'); - const sections = document.querySelectorAll('.admin-section'); - - navLinks.forEach(link => { - link.addEventListener('click', (e) => { - e.preventDefault(); - - // Get target section ID - const targetId = link.getAttribute('href').substring(1); - - // Hide all sections - sections.forEach(section => { - section.style.display = 'none'; - }); - - // Show target section - const targetSection = document.getElementById(targetId); - if (targetSection) { - targetSection.style.display = 'block'; - } - - // Update active nav link - navLinks.forEach(navLink => { - navLink.classList.remove('active'); - }); - link.classList.add('active'); - - // If switching to shifts section, load shifts - if (targetId === 'shifts') { - console.log('Loading admin shifts...'); - loadAdminShifts(); - } - - // If switching to walk sheet section, load config - if (targetId === 'walk-sheet') { - loadWalkSheetConfig().then((success) => { - if (success) { - generateWalkSheetPreview(); - } - }); - } - }); - }); - - // Also check if we're already on the shifts page (via hash) - const hash = window.location.hash; - if (hash === '#shifts') { - const shiftsLink = document.querySelector('.admin-nav a[href="#shifts"]'); - if (shiftsLink) { - shiftsLink.click(); - } - } -} - // Fix the setupShiftActionListeners function function setupShiftActionListeners() { const list = document.getElementById('admin-shifts-list'); @@ -1112,101 +1074,181 @@ function clearShiftForm() { } } -// Update setupEventListeners to include shift form and clear button -function setupEventListeners() { - // Use current view button - const useCurrentViewBtn = document.getElementById('use-current-view'); - if (useCurrentViewBtn) { - useCurrentViewBtn.addEventListener('click', () => { - const center = adminMap.getCenter(); - const zoom = adminMap.getZoom(); - - document.getElementById('start-lat').value = center.lat.toFixed(6); - document.getElementById('start-lng').value = center.lng.toFixed(6); - document.getElementById('start-zoom').value = zoom; - - updateStartMarker(center.lat, center.lng); - showStatus('Captured current map view', 'success'); - }); - } +// User Management Functions +async function loadUsers() { + const loadingEl = document.getElementById('users-loading'); + const emptyEl = document.getElementById('users-empty'); + const tableBody = document.getElementById('users-table-body'); - // Save button - const saveLocationBtn = document.getElementById('save-start-location'); - if (saveLocationBtn) { - saveLocationBtn.addEventListener('click', saveStartLocation); - } + if (loadingEl) loadingEl.style.display = 'block'; + if (emptyEl) emptyEl.style.display = 'none'; + if (tableBody) tableBody.innerHTML = ''; - // Coordinate input changes - const startLatInput = document.getElementById('start-lat'); - const startLngInput = document.getElementById('start-lng'); - const startZoomInput = document.getElementById('start-zoom'); - - if (startLatInput) startLatInput.addEventListener('change', updateMapFromInputs); - if (startLngInput) startLngInput.addEventListener('change', updateMapFromInputs); - if (startZoomInput) startZoomInput.addEventListener('change', updateMapFromInputs); - - // Walk Sheet buttons - const saveWalkSheetBtn = document.getElementById('save-walk-sheet'); - const previewWalkSheetBtn = document.getElementById('preview-walk-sheet'); - const printWalkSheetBtn = document.getElementById('print-walk-sheet'); - const refreshPreviewBtn = document.getElementById('refresh-preview'); - - if (saveWalkSheetBtn) saveWalkSheetBtn.addEventListener('click', saveWalkSheetConfig); - if (previewWalkSheetBtn) previewWalkSheetBtn.addEventListener('click', generateWalkSheetPreview); - if (printWalkSheetBtn) printWalkSheetBtn.addEventListener('click', printWalkSheet); - if (refreshPreviewBtn) refreshPreviewBtn.addEventListener('click', generateWalkSheetPreview); - - // Auto-update preview on input change - const walkSheetInputs = document.querySelectorAll( - '#walk-sheet-title, #walk-sheet-subtitle, #walk-sheet-footer, ' + - '[id^="qr-code-"][id$="-url"], [id^="qr-code-"][id$="-label"]' - ); - - walkSheetInputs.forEach(input => { - if (input) { - input.addEventListener('input', debounce(() => { - generateWalkSheetPreview(); - }, 500)); + try { + const response = await fetch('/api/users'); + const data = await response.json(); + + if (loadingEl) loadingEl.style.display = 'none'; + + if (data.success && data.users) { + displayUsers(data.users); + } else { + throw new Error(data.error || 'Failed to load users'); } - }); - - // Add URL change listeners to detect when QR codes need regeneration - for (let i = 1; i <= 3; i++) { - const urlInput = document.getElementById(`qr-code-${i}-url`); - if (urlInput) { - let previousUrl = urlInput.value; - - urlInput.addEventListener('change', () => { - const currentUrl = urlInput.value; - if (currentUrl !== previousUrl) { - console.log(`QR Code ${i} URL changed from "${previousUrl}" to "${currentUrl}"`); - // Remove stored QR code so it gets regenerated - delete storedQRCodes[currentUrl]; - previousUrl = currentUrl; - generateWalkSheetPreview(); - } - }); + + } catch (error) { + console.error('Error loading users:', error); + if (loadingEl) loadingEl.style.display = 'none'; + if (emptyEl) { + emptyEl.textContent = 'Failed to load users'; + emptyEl.style.display = 'block'; } - } - - // Shift form submission - const shiftForm = document.getElementById('shift-form'); - if (shiftForm) { - shiftForm.addEventListener('submit', createShift); - } - - // Clear shift form button - const clearShiftBtn = document.getElementById('clear-shift-form'); - if (clearShiftBtn) { - clearShiftBtn.addEventListener('click', clearShiftForm); + showStatus('Failed to load users', 'error'); } } -// Add the missing clearShiftForm function -function clearShiftForm() { - const form = document.getElementById('shift-form'); - if (form) { - form.reset(); - showStatus('Form cleared', 'info'); +function displayUsers(users) { + const tableBody = document.getElementById('users-table-body'); + const emptyEl = document.getElementById('users-empty'); + + if (!tableBody) return; + + if (!users || users.length === 0) { + if (emptyEl) emptyEl.style.display = 'block'; + return; + } + + if (emptyEl) emptyEl.style.display = 'none'; + + tableBody.innerHTML = users.map(user => { + const createdDate = user.created_at || user['Created At'] || user.createdAt; + const formattedDate = createdDate ? new Date(createdDate).toLocaleDateString() : 'N/A'; + const isAdmin = user.admin || user.Admin || false; + const userId = user.Id || user.id || user.ID; + + return ` + + ${escapeHtml(user.email || user.Email || 'N/A')} + ${escapeHtml(user.name || user.Name || 'N/A')} + + + ${isAdmin ? 'Admin' : 'User'} + + + ${formattedDate} + + + + + `; + }).join(''); + + // Setup event listeners for user actions + setupUserActionListeners(); +} + +function setupUserActionListeners() { + const tableBody = document.getElementById('users-table-body'); + if (!tableBody) return; + + // Remove existing listeners by cloning the node + const newTableBody = tableBody.cloneNode(true); + tableBody.parentNode.replaceChild(newTableBody, tableBody); + + // Get the updated reference + const updatedTableBody = document.getElementById('users-table-body'); + + updatedTableBody.addEventListener('click', function(e) { + if (e.target.classList.contains('delete-user-btn')) { + const userId = e.target.getAttribute('data-user-id'); + const userEmail = e.target.getAttribute('data-user-email'); + console.log('Delete button clicked for user:', userId); + deleteUser(userId, userEmail); + } + }); +} + +async function deleteUser(userId, userEmail) { + if (!confirm(`Are you sure you want to delete user "${userEmail}"? This action cannot be undone.`)) { + return; + } + + try { + const response = await fetch(`/api/users/${userId}`, { + method: 'DELETE' + }); + + const data = await response.json(); + + if (data.success) { + showStatus(`User "${userEmail}" deleted successfully`, 'success'); + loadUsers(); // Reload the users list + } else { + throw new Error(data.error || 'Failed to delete user'); + } + + } catch (error) { + console.error('Error deleting user:', error); + showStatus(`Failed to delete user: ${error.message}`, 'error'); + } +} + +async function createUser(e) { + e.preventDefault(); + + const email = document.getElementById('user-email').value.trim(); + const password = document.getElementById('user-password').value; + const name = document.getElementById('user-name').value.trim(); + const admin = document.getElementById('user-admin').checked; + + if (!email || !password) { + showStatus('Email and password are required', 'error'); + return; + } + + if (password.length < 6) { + showStatus('Password must be at least 6 characters long', 'error'); + return; + } + + try { + const response = await fetch('/api/users', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + email, + password, + name: name || '', + admin + }) + }); + + const data = await response.json(); + + if (data.success) { + showStatus('User created successfully', 'success'); + clearUserForm(); + loadUsers(); // Reload the users list + } else { + throw new Error(data.error || 'Failed to create user'); + } + + } catch (error) { + console.error('Error creating user:', error); + showStatus(`Failed to create user: ${error.message}`, 'error'); + } +} + +function clearUserForm() { + const form = document.getElementById('user-form'); + if (form) { + form.reset(); + showStatus('User form cleared', 'info'); } } diff --git a/map/app/public/js/user.js b/map/app/public/js/user.js new file mode 100644 index 0000000..88bfeae --- /dev/null +++ b/map/app/public/js/user.js @@ -0,0 +1,97 @@ +// User profile JavaScript + +// Initialize when DOM is loaded +document.addEventListener('DOMContentLoaded', () => { + checkUserAuth(); + loadUserProfile(); + setupEventListeners(); +}); + +// Check if user is authenticated +async function checkUserAuth() { + try { + const response = await fetch('/api/auth/check'); + const data = await response.json(); + + if (!data.authenticated) { + window.location.href = '/login.html'; + return; + } + + // Update user info in header + const userInfo = document.getElementById('user-info'); + if (userInfo && data.user) { + userInfo.textContent = `${data.user.name || data.user.email}`; + } + + } catch (error) { + console.error('Auth check failed:', error); + window.location.href = '/login.html'; + } +} + +// Load user profile information +async function loadUserProfile() { + try { + const response = await fetch('/api/auth/check'); + const data = await response.json(); + + if (data.authenticated && data.user) { + document.getElementById('profile-email').textContent = data.user.email || 'N/A'; + document.getElementById('profile-name').textContent = data.user.name || 'N/A'; + document.getElementById('profile-role').textContent = data.user.isAdmin ? 'Administrator' : 'User'; + } + + } catch (error) { + console.error('Failed to load profile:', error); + showStatus('Failed to load profile information', 'error'); + } +} + +// Setup event listeners +function setupEventListeners() { + // Logout button + const logoutBtn = document.getElementById('logout-btn'); + if (logoutBtn) { + logoutBtn.addEventListener('click', handleLogout); + } +} + +// Handle logout +async function handleLogout() { + try { + const response = await fetch('/api/auth/logout', { + method: 'POST', + credentials: 'include' + }); + + if (response.ok) { + window.location.href = '/login.html'; + } else { + throw new Error('Logout failed'); + } + + } catch (error) { + console.error('Logout error:', error); + showStatus('Logout failed', 'error'); + } +} + +// Show status message +function showStatus(message, type = 'info') { + const container = document.getElementById('status-container'); + if (!container) return; + + const statusDiv = document.createElement('div'); + statusDiv.className = `status-message status-${type}`; + statusDiv.textContent = message; + + container.appendChild(statusDiv); + + // Auto remove after 5 seconds + setTimeout(() => { + if (statusDiv.parentNode) { + statusDiv.parentNode.removeChild(statusDiv); + } + }, 5000); +} diff --git a/map/app/public/user.html b/map/app/public/user.html new file mode 100644 index 0000000..d48d78e --- /dev/null +++ b/map/app/public/user.html @@ -0,0 +1,59 @@ + + + + + + + User Profile + + + + + + + + + + +
+ +
+

User Profile

+
+ ← Back to Map + + +
+
+ + +
+ +
+ + +
+
+ + + + + diff --git a/map/app/routes/admin.js b/map/app/routes/admin.js index 3083696..0210eec 100644 --- a/map/app/routes/admin.js +++ b/map/app/routes/admin.js @@ -2,6 +2,26 @@ const express = require('express'); const router = express.Router(); const settingsController = require('../controllers/settingsController'); +// Debug endpoint to check configuration +router.get('/config-debug', (req, res) => { + const config = require('../config'); + res.json({ + success: true, + config: { + nocodb: { + apiUrl: config.nocodb.apiUrl, + hasToken: !!config.nocodb.apiToken, + projectId: config.nocodb.projectId, + tableId: config.nocodb.tableId, + loginSheetId: config.nocodb.loginSheetId, + settingsSheetId: config.nocodb.settingsSheetId, + shiftsSheetId: config.nocodb.shiftsSheetId, + shiftSignupsSheetId: config.nocodb.shiftSignupsSheetId + } + } + }); +}); + // Start location management router.get('/start-location', settingsController.getStartLocation); router.post('/start-location', settingsController.updateStartLocation); diff --git a/map/app/routes/debug.js b/map/app/routes/debug.js index 362383b..3276851 100644 --- a/map/app/routes/debug.js +++ b/map/app/routes/debug.js @@ -222,4 +222,43 @@ router.get('/walk-sheet-raw', async (req, res) => { } }); +// Add this route to check login table structure +router.get('/login-structure', async (req, res) => { + try { + const loginSheetId = config.nocodb.loginSheetId; + + if (!loginSheetId) { + return res.status(400).json({ + success: false, + error: 'Login sheet ID not configured' + }); + } + + // Get table structure + const tableId = extractTableId(loginSheetId); + const response = await nocodbService.api.get(`/db/meta/tables/${tableId}`); + + const columns = response.data.columns.map(col => ({ + column_name: col.column_name, + title: col.title, + uidt: col.uidt, + required: col.rqd + })); + + res.json({ + success: true, + tableId, + columns, + columnNames: columns.map(c => c.column_name) + }); + + } catch (error) { + logger.error('Error fetching login table structure:', error); + res.status(500).json({ + success: false, + error: error.message + }); + } +}); + module.exports = router; \ No newline at end of file diff --git a/map/app/routes/index.js b/map/app/routes/index.js index 51b37a0..2eb0219 100644 --- a/map/app/routes/index.js +++ b/map/app/routes/index.js @@ -102,6 +102,11 @@ module.exports = (app) => { res.sendFile(path.join(__dirname, '../public', 'shifts.html')); }); + // User profile page route + app.get('/user.html', requireAuth, (req, res) => { + res.sendFile(path.join(__dirname, '../public', 'user.html')); + }); + // Catch all - redirect to login app.get('*', (req, res) => { res.redirect('/login.html'); diff --git a/map/build-nocodb.md b/map/build-nocodb.md index d97b586..8392110 100644 --- a/map/build-nocodb.md +++ b/map/build-nocodb.md @@ -344,7 +344,7 @@ Updated the build-nocodb.sh script to use proper NocoDB column types based on th - `unit_number` (SingleLineText) - `support_level` (SingleSelect with colors: 1=Green, 2=Yellow, 3=Orange, 4=Red) - `sign` (Checkbox) - - `sign_size` (SingleSelect: Small, Medium, Large) + - `sign_size` (SingleSelect: Regular, Large, Unsure) - `notes` (LongText) - `address` (SingleLineText instead of LongText) diff --git a/map/build-nocodb.sh b/map/build-nocodb.sh index e7c7666..785f6f9 100755 --- a/map/build-nocodb.sh +++ b/map/build-nocodb.sh @@ -343,9 +343,9 @@ create_locations_table() { "rqd": false, "colOptions": { "options": [ - {"title": "Small", "color": "#2196F3"}, - {"title": "Medium", "color": "#FF9800"}, - {"title": "Large", "color": "#4CAF50"} + {"title": "Regular", "color": "#2196F3"}, + {"title": "Large", "color": "#4CAF50"}, + {"title": "Unsure", "color": "#FF9800"} ] } }, diff --git a/map/files-explainer.md b/map/files-explainer.md index 63e045a..5bfd473 100644 --- a/map/files-explainer.md +++ b/map/files-explainer.md @@ -92,7 +92,7 @@ Winston logger configuration for backend logging. # app/public/admin.html -Admin panel HTML page for managing start location, walk sheet, and settings. +Admin panel HTML page for managing start location, walk sheet, shift management, and user management. # app/public/css/admin.css @@ -122,9 +122,21 @@ Login page HTML for user authentication. Volunteer shifts management and signup page HTML with both grid and calendar view options. +# app/public/user.html + +User profile page HTML for displaying user information and account management. + +# app/public/css/user.css + +CSS styles for the user profile page and user management components in the admin panel. + # app/public/js/admin.js -JavaScript for admin panel functionality (map, start location, walk sheet, etc). +JavaScript for admin panel functionality (map, start location, walk sheet, shift management, and user management). + +# app/public/js/user.js + +JavaScript for user profile page functionality and user account management. # app/public/js/auth.js diff --git a/mkdocs/.cache/plugin/social/7ca622286d4c40d181cd6c809308aadd.png b/mkdocs/.cache/plugin/social/7ca622286d4c40d181cd6c809308aadd.png new file mode 100644 index 0000000000000000000000000000000000000000..5dd10c68689805be81257f249fdc79fb9c167c7e GIT binary patch literal 68446 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 literal 0 HcmV?d00001 diff --git a/mkdocs/.cache/plugin/social/a0553b3e88ffc3c868350353b63036cb.png b/mkdocs/.cache/plugin/social/a0553b3e88ffc3c868350353b63036cb.png new file mode 100644 index 0000000000000000000000000000000000000000..441516d077507dca872d9ffecc07f28fab89ab03 GIT binary patch literal 68632 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 `B=j5OacQ~)qDdUc^f_)$3973rZGN0=BVNdt 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 literal 0 HcmV?d00001 diff --git a/mkdocs/docs/config/map.md b/mkdocs/docs/config/map.md index 113b39c..009116e 100644 --- a/mkdocs/docs/config/map.md +++ b/mkdocs/docs/config/map.md @@ -133,7 +133,7 @@ Main table for storing map data: - 3 = Low Support (Orange) - 4 = No Support (Red) - `Sign` (Checkbox): Has campaign sign -- `Sign Size` (Single Select): Options: "Small", "Medium", "Large" +- `Sign Size` (Single Select): Options: "Regular", "Large", "Unsure" - `Notes` (Long Text): Additional details and comments #### 2. Login Table diff --git a/mkdocs/docs/how to/canvass.md b/mkdocs/docs/how to/canvass.md new file mode 100644 index 0000000..553f7d5 --- /dev/null +++ b/mkdocs/docs/how to/canvass.md @@ -0,0 +1,4 @@ +# Canvas + +This is BNKops canvassing how to! In the following document, you will find all sorts of tips and tricks for door knocking, canvassing, and using the BNKops canvassing app. + diff --git a/mkdocs/docs/manual/map.md b/mkdocs/docs/manual/map.md index 6699944..df924a1 100644 --- a/mkdocs/docs/manual/map.md +++ b/mkdocs/docs/manual/map.md @@ -2,7 +2,8 @@ Quick Tips: -- Map works best when you clear your cookies, cache, and other data before use! This is because it is a web-app that pushes information to your phone. By clearing that data, you will always load the most recent version of the app to your browser. +- **Data:** Map works best when you clear your cookies, cache, and other data before use! This is because it is a web-app that pushes information to your phone. By clearing that data, you will always load the most recent version of the app to your browser. +- **Browser:** Map will work on nearly any browser however the developers test on Firefox, Brave, & Chromium. Firefox is what the bnkops team uses to access Map and is generally the most stable. ## How to add new location - Video diff --git a/mkdocs/site/config/map/index.html b/mkdocs/site/config/map/index.html index 99920b5..ddb613c 100644 --- a/mkdocs/site/config/map/index.html +++ b/mkdocs/site/config/map/index.html @@ -2629,7 +2629,7 @@ Changemaker Archive. Learn more

  • 3 = Low Support (Orange)
  • 4 = No Support (Red)
  • Sign (Checkbox): Has campaign sign
  • -
  • Sign Size (Single Select): Options: "Small", "Medium", "Large"
  • +
  • Sign Size (Single Select): Options: "Regular", "Large", "Unsure"
  • Notes (Long Text): Additional details and comments
  • 2. Login Table

    diff --git a/mkdocs/site/services/map/index.html b/mkdocs/site/services/map/index.html index 1e1167a..da5164d 100644 --- a/mkdocs/site/services/map/index.html +++ b/mkdocs/site/services/map/index.html @@ -1873,7 +1873,7 @@ Changemaker Archive. Learn more
  • 4 - No Support (Red)
  • Address (Text): Full street address
  • Sign (Checkbox): Has campaign sign (true/false)
  • -
  • Sign Size (Single Select): Small, Medium, Large
  • +
  • Sign Size (Single Select): Regular, Large, Unsure
  • Geo-Location (Text): Formatted as "latitude;longitude"
  • API Endpoints