Files
kokken/logs/out-0.log
Alex Polo e6a83da2ab Refactor API calls to use apiFetch for consistency and improved cookie handling
- Updated availability admin page to use apiFetch for fetching and modifying blocked dates.
- Enhanced menu generator page to ensure all expected arrays are initialized to avoid rendering issues.
- Added path to cookies in login and logout routes for better cookie management.
- Improved availability blocked API to log request headers and handle both date and id for deletion.
- Updated menu generator API to include tags in the response structure and ensure expected arrays are present.
- Enhanced middleware to handle authentication more robustly, including detailed logging and handling of various request types.
- Added Playwright test to verify that toggling availability does not log out the admin user.
- Created apiFetch utility to standardize API requests with credentials included.
2025-11-07 15:50:22 +01:00

2430 lines
129 KiB
Plaintext

2025-10-29T08:49:22: > Ready on http://localhost:3000
2025-10-29T08:53:47: > Ready on http://localhost:3000
2025-10-29T09:14:28: > Ready on http://localhost:3000
2025-10-29T09:23:18: > Ready on http://localhost:3000
2025-10-30T19:09:51: > Ready on http://localhost:3000
2025-10-30T19:31:44: > Ready on http://localhost:3000
2025-10-30T19:34:15: > Ready on http://localhost:3000
2025-10-30T19:38:44: > Ready on http://localhost:3000
2025-10-30T19:40:45: > Ready on http://localhost:3000
2025-10-30T19:42:05: > Ready on http://localhost:3000
2025-10-30T19:50:39: > Ready on http://localhost:3000
2025-10-30T19:54:37: > Ready on http://localhost:3000
2025-10-30T19:58:29: > Ready on http://localhost:3000
2025-10-31T19:17:21: > Ready on http://localhost:3000
2025-10-31T20:05:46: > Ready on http://localhost:3000
2025-10-31T20:42:18: > Ready on http://localhost:3000
2025-10-31T20:54:03: > Ready on http://localhost:3000
2025-10-31T21:04:52: > Ready on http://localhost:3000
2025-10-31T21:07:41: > Ready on http://localhost:3000
2025-10-31T21:31:48: > Ready on http://localhost:3000
2025-10-31T21:34:11: > Ready on http://localhost:3000
2025-10-31T21:39:45: > Ready on http://localhost:3000
2025-10-31T21:40:36: > Ready on http://localhost:3000
2025-10-31T21:45:41: > Ready on http://localhost:3000
2025-10-31T21:47:51: > Ready on http://localhost:3000
2025-10-31T21:50:59: > Ready on http://localhost:3000
2025-10-31T21:58:30: > Ready on http://localhost:3000
2025-10-31T22:14:18: > Ready on http://localhost:3000
2025-10-31T22:17:17: > Ready on http://localhost:3000
2025-10-31T22:21:03: > Ready on http://localhost:3000
2025-10-31T22:22:22: > Ready on http://localhost:3000
2025-11-03T23:05:19: > Ready on http://localhost:3000
2025-11-05T08:26:13: > Ready on http://localhost:3000
2025-11-05T08:58:07: > Ready on http://localhost:3000
2025-11-05T09:00:21: > Ready on http://localhost:3000
2025-11-05T09:25:53: > Ready on http://localhost:3000
2025-11-05T09:27:59: > Ready on http://localhost:3000
2025-11-05T09:37:13: > Ready on http://localhost:3000
2025-11-05T09:41:45: > Ready on http://localhost:3000
2025-11-05T09:47:57: > Ready on http://localhost:3000
2025-11-05T09:54:05: > Ready on http://localhost:3000
2025-11-05T09:58:17: > Ready on http://localhost:3000
2025-11-05T10:08:38: > Ready on http://localhost:3000
2025-11-05T10:12:46: > Ready on http://localhost:3000
2025-11-05T10:16:21: > Ready on http://localhost:3000
2025-11-05T10:18:24: > Ready on http://localhost:3000
2025-11-05T10:25:45: > Ready on http://localhost:3000
2025-11-05T10:33:36: > Ready on http://localhost:3000
2025-11-05T10:44:48: > Ready on http://localhost:3000
2025-11-05T13:03:54: > Ready on http://localhost:3000
2025-11-05T13:13:52: > Ready on http://localhost:3000
2025-11-05T13:15:35: > Ready on http://localhost:3000
2025-11-05T13:19:52: > Ready on http://localhost:3000
2025-11-05T13:26:22: > Ready on http://localhost:3000
2025-11-05T13:40:32: > Ready on http://localhost:3000
2025-11-05T13:51:31: > Ready on http://localhost:3000
2025-11-05T13:57:37: > Ready on http://localhost:3000
2025-11-05T14:00:08: > Ready on http://localhost:3000
2025-11-05T14:05:54: > Ready on http://localhost:3000
2025-11-05T14:11:22: > Ready on http://localhost:3000
2025-11-05T14:12:29: > Ready on http://localhost:3000
2025-11-05T14:15:42: > Ready on http://localhost:3000
2025-11-05T14:22:07: > Ready on http://localhost:3000
2025-11-05T14:26:53: > Ready on http://localhost:3000
2025-11-05T14:32:02: > Ready on http://localhost:3000
2025-11-05T14:33:33: > Ready on http://localhost:3000
2025-11-05T14:34:21: > Ready on http://localhost:3000
2025-11-05T14:49:28: Middleware - Path: /admin
2025-11-05T14:49:28: Middleware - Token present: true
2025-11-05T14:49:28: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-05T14:49:28: Middleware - Invalid token: [Error: The edge runtime does not support Node.js 'crypto' module.
Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime]
2025-11-05T14:49:29: Middleware - Path: /admin
2025-11-05T14:49:29: Middleware - Token present: true
2025-11-05T14:49:29: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-05T14:49:29: Middleware - Invalid token: [Error: The edge runtime does not support Node.js 'crypto' module.
Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime]
2025-11-05T14:52:40: > Ready on http://localhost:3000
2025-11-05T14:52:56: Middleware - Path: /admin
2025-11-05T14:52:56: Middleware - Token present: true
2025-11-05T14:52:56: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-05T14:52:56: Middleware - Token valid, user: brotha
2025-11-05T14:52:56: Middleware - Path: /admin/availability
2025-11-05T14:52:56: Middleware - Token present: true
2025-11-05T14:52:56: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-05T14:52:56: Middleware - Path: /admin/bookings
2025-11-05T14:52:56: Middleware - Token present: true
2025-11-05T14:52:56: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-05T14:52:56: Middleware - Token valid, user: brotha
2025-11-05T14:52:56: Middleware - Token valid, user: brotha
2025-11-05T14:52:57: Middleware - Path: /admin
2025-11-05T14:52:57: Middleware - Token present: true
2025-11-05T14:52:57: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-05T14:52:57: Middleware - Token valid, user: brotha
2025-11-05T14:53:56: Middleware - Path: /admin
2025-11-05T14:53:56: Middleware - Token present: false
2025-11-05T14:53:56: Middleware - Token value: undefined...
2025-11-05T14:53:56: Middleware - No token, redirecting to login
2025-11-05T14:54:33: Middleware - Path: /admin
2025-11-05T14:54:33: Middleware - Token present: true
2025-11-05T14:54:33: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-05T14:54:33: Middleware - Token valid, user: brotha
2025-11-05T15:00:18: Middleware - Path: /admin
2025-11-05T15:00:18: Middleware - Token present: true
2025-11-05T15:00:18: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-05T15:00:18: Middleware - Token valid, user: brotha
2025-11-05T15:00:18: Middleware - Path: /admin/availability
2025-11-05T15:00:18: Middleware - Token present: true
2025-11-05T15:00:18: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-05T15:00:18: Middleware - Path: /admin/bookings
2025-11-05T15:00:18: Middleware - Token present: true
2025-11-05T15:00:18: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-05T15:00:18: Middleware - Token valid, user: brotha
2025-11-05T15:00:18: Middleware - Token valid, user: brotha
2025-11-07T07:40:24: > Ready on http://localhost:3000
2025-11-07T08:57:58: Middleware - Path: /admin
2025-11-07T08:57:58: Middleware - Token present: true
2025-11-07T08:57:58: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T08:57:58: Middleware - Token valid, user: brotha
2025-11-07T08:57:58: Middleware - Path: /admin/availability
2025-11-07T08:57:58: Middleware - Token present: true
2025-11-07T08:57:58: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T08:57:58: Middleware - Path: /admin/bookings
2025-11-07T08:57:58: Middleware - Token present: true
2025-11-07T08:57:58: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T08:57:58: Middleware - Token valid, user: brotha
2025-11-07T08:57:58: Middleware - Token valid, user: brotha
2025-11-07T09:00:04: Middleware - Path: /admin
2025-11-07T09:00:04: Middleware - Token present: true
2025-11-07T09:00:04: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T09:00:04: Middleware - Token valid, user: brotha
2025-11-07T09:01:41: > Ready on http://localhost:3000
2025-11-07T09:02:27: === API LOGIN REQUEST START ===
2025-11-07T09:02:27: Timestamp: 2025-11-07T08:02:27.169Z
2025-11-07T09:02:27: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T09:02:27: Connecting to database...
2025-11-07T09:02:27: Database connected
2025-11-07T09:02:27: Querying user from database: brotha
2025-11-07T09:02:27: Query result: found 1 users
2025-11-07T09:02:27: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T09:02:27: Verifying password with salt...
2025-11-07T09:02:27: Password valid: true
2025-11-07T09:02:27: Creating JWT token...
2025-11-07T09:02:27: JWT token created, length: 239
2025-11-07T09:02:27: Setting authToken cookie...
2025-11-07T09:02:27: Cookie set successfully
2025-11-07T09:02:27: === API LOGIN SUCCESS ===
2025-11-07T09:02:27: Database connection closed
2025-11-07T09:02:46: === API LOGIN REQUEST START ===
2025-11-07T09:02:46: Timestamp: 2025-11-07T08:02:46.950Z
2025-11-07T09:02:46: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T09:02:46: Connecting to database...
2025-11-07T09:02:46: Database connected
2025-11-07T09:02:46: Querying user from database: brotha
2025-11-07T09:02:46: Query result: found 1 users
2025-11-07T09:02:46: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T09:02:46: Verifying password with salt...
2025-11-07T09:02:47: Password valid: true
2025-11-07T09:02:47: Creating JWT token...
2025-11-07T09:02:47: JWT token created, length: 239
2025-11-07T09:02:47: Setting authToken cookie...
2025-11-07T09:02:47: Cookie set successfully
2025-11-07T09:02:47: === API LOGIN SUCCESS ===
2025-11-07T09:02:47: Database connection closed
2025-11-07T09:02:47: Middleware - Path: /admin
2025-11-07T09:02:47: Middleware - Token present: true
2025-11-07T09:02:47: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T09:02:47: Middleware - Token valid, user: brotha
2025-11-07T09:03:46: > Ready on http://localhost:3000
2025-11-07T09:04:22: === API LOGIN REQUEST START ===
2025-11-07T09:04:22: Timestamp: 2025-11-07T08:04:22.360Z
2025-11-07T09:04:22: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T09:04:22: Connecting to database...
2025-11-07T09:04:22: Database connected
2025-11-07T09:04:22: Querying user from database: brotha
2025-11-07T09:04:22: Query result: found 1 users
2025-11-07T09:04:22: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T09:04:22: Verifying password with salt...
2025-11-07T09:04:22: Password valid: true
2025-11-07T09:04:22: Creating JWT token...
2025-11-07T09:04:22: JWT token created, length: 239
2025-11-07T09:04:22: Setting authToken cookie...
2025-11-07T09:04:22: Cookie set successfully
2025-11-07T09:04:22: === API LOGIN SUCCESS ===
2025-11-07T09:04:22: Database connection closed
2025-11-07T09:04:22: Middleware - Path: /admin
2025-11-07T09:04:22: Middleware - Token present: true
2025-11-07T09:04:22: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T09:04:22: Middleware - Token valid, user: brotha
2025-11-07T09:04:22: Middleware - Path: /admin/availability
2025-11-07T09:04:22: Middleware - Token present: true
2025-11-07T09:04:22: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T09:04:22: Middleware - Token valid, user: brotha
2025-11-07T09:04:33: Middleware - Path: /admin/availability
2025-11-07T09:04:33: Middleware - Token present: true
2025-11-07T09:04:33: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T09:04:33: Middleware - Token valid, user: brotha
2025-11-07T09:06:58: > Ready on http://localhost:3000
2025-11-07T09:09:53: > Ready on http://localhost:3000
2025-11-07T09:12:14: Middleware - Path: /admin
2025-11-07T09:12:14: Middleware - Token present: true
2025-11-07T09:12:14: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T09:12:14: Middleware - Token valid, user: brotha
2025-11-07T09:14:03: > Ready on http://localhost:3000
2025-11-07T09:19:57: > Ready on http://localhost:3000
2025-11-07T09:39:02: > Ready on http://localhost:3000
2025-11-07T09:44:40: > Ready on http://localhost:3000
2025-11-07T09:44:53: > Ready on http://localhost:3000
2025-11-07T09:45:19: === BOOKING REQUEST ===
2025-11-07T09:45:19: Request body: {
"name": "Test Booking",
"email": "test@test.dk",
"phone": "12345678",
"address": "København",
"party_size": 20,
"date": "2025-11-15",
"start_time": "18:00",
"duration_hours": 3,
"menu_id": "klassisk-3-retter",
"include_service": true,
"include_cleanup": true,
"message": "Test booking"
}
2025-11-07T09:45:19: Booking time: { date: '2025-11-15', start: '18:00:00', end: '21:00:00', duration: 3 }
2025-11-07T09:45:19: Blocked dates check: { cnt: 0 }
2025-11-07T09:45:19: Checking availability for weekday: 6
2025-11-07T09:45:19: Available slots for weekday: []
2025-11-07T09:45:19: Time slot covered by availability: false
2025-11-07T09:45:19: ERROR: Requested time is outside of availability
2025-11-07T09:46:02: > Ready on http://localhost:3000
2025-11-07T09:50:55: === BOOKING REQUEST ===
2025-11-07T09:50:55: Request body: {
"name": "sfds",
"email": "dsffds",
"phone": "214214124",
"address": "2400",
"party_size": 15,
"date": "2025-11-04",
"start_time": "08:00",
"duration_hours": 3,
"menu_id": "italiensk-aften",
"package_id": null,
"include_service": true,
"include_cleanup": true,
"message": ""
}
2025-11-07T09:50:55: Booking time: { date: '2025-11-04', start: '08:00:00', end: '11:00:00', duration: 3 }
2025-11-07T09:50:55: Blocked dates check: { cnt: 0 }
2025-11-07T09:50:55: Checking availability for weekday: 2
2025-11-07T09:50:55: Available slots for weekday: [
{
id: 'da219369-491d-4d34-a6ea-3f51808c0611',
weekday: 2,
start_time: '08:00:00',
end_time: '16:00:00',
note: 'arbejde',
created_at: 2025-10-29T10:29:01.000Z
}
]
2025-11-07T09:50:55: Time slot covered by availability: true
2025-11-07T09:50:55: Overlapping bookings check: { cnt: 1 }
2025-11-07T09:50:55: ERROR: Time slot already booked
2025-11-07T09:58:35: > Ready on http://localhost:3000
2025-11-07T09:59:54: === API: GET /api/availability/weekly ===
2025-11-07T09:59:54: === API: GET /api/availability/blocked ===
2025-11-07T09:59:54: ✓ Weekly availability fetched: 2 slots
2025-11-07T09:59:54: ✓ Blocked dates fetched: 3 dates
2025-11-07T10:00:14: === BOOKING REQUEST ===
2025-11-07T10:00:14: Request body: {
"name": "bobbo",
"email": "bobo",
"phone": "1255151",
"address": "2400",
"party_size": 15,
"date": "2025-11-04",
"start_time": "10:00",
"duration_hours": 3,
"menu_id": "italiensk-aften",
"package_id": null,
"include_service": true,
"include_cleanup": false,
"message": ""
}
2025-11-07T10:00:14: Booking time: { date: '2025-11-04', start: '10:00:00', end: '13:00:00', duration: 3 }
2025-11-07T10:00:14: Blocked dates check: { cnt: 0 }
2025-11-07T10:00:14: Checking availability for weekday: 2
2025-11-07T10:00:14: Available slots for weekday: [
{
id: 'da219369-491d-4d34-a6ea-3f51808c0611',
weekday: 2,
start_time: '08:00:00',
end_time: '16:00:00',
note: 'arbejde',
created_at: 2025-10-29T10:29:01.000Z
}
]
2025-11-07T10:00:14: Time slot covered by availability: true
2025-11-07T10:00:14: Overlapping bookings check: { cnt: 1 }
2025-11-07T10:00:14: ERROR: Time slot already booked
2025-11-07T10:00:26: === BOOKING REQUEST ===
2025-11-07T10:00:26: Request body: {
"name": "bobbo",
"email": "bobo",
"phone": "1255151",
"address": "2400",
"party_size": 15,
"date": "2025-11-04",
"start_time": "11:00",
"duration_hours": 3,
"menu_id": "italiensk-aften",
"package_id": null,
"include_service": true,
"include_cleanup": false,
"message": ""
}
2025-11-07T10:00:26: Booking time: { date: '2025-11-04', start: '11:00:00', end: '14:00:00', duration: 3 }
2025-11-07T10:00:26: Blocked dates check: { cnt: 0 }
2025-11-07T10:00:26: Checking availability for weekday: 2
2025-11-07T10:00:26: Available slots for weekday: [
{
id: 'da219369-491d-4d34-a6ea-3f51808c0611',
weekday: 2,
start_time: '08:00:00',
end_time: '16:00:00',
note: 'arbejde',
created_at: 2025-10-29T10:29:01.000Z
}
]
2025-11-07T10:00:26: Time slot covered by availability: true
2025-11-07T10:00:26: Overlapping bookings check: { cnt: 0 }
2025-11-07T10:00:26: === BOOKING SUCCESS ===
2025-11-07T10:00:26: Booking ID: 77b5b617-25d0-46c2-b0f4-42a1b92e0924
2025-11-07T10:00:26: Total price: 5250
2025-11-07T10:00:38: Middleware - Path: /admin/bookings
2025-11-07T10:00:38: Middleware - Token present: true
2025-11-07T10:00:38: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T10:00:38: Middleware - Token valid, user: brotha
2025-11-07T10:00:38: === API: GET /api/bookings ===
2025-11-07T10:00:38: Query params: { date: null }
2025-11-07T10:00:38: ✓ All bookings fetched. Count: 2
2025-11-07T10:04:54: > Ready on http://localhost:3000
2025-11-07T10:27:43: === BOOKING REQUEST ===
2025-11-07T10:27:43: Request body: {
"name": "gffdgdgf",
"email": "dfgdfgdgf",
"phone": "24124124",
"address": "2400",
"party_size": 15,
"date": "2025-11-04",
"start_time": "10:30",
"duration_hours": 3,
"menu_id": "italiensk-aften",
"package_id": null,
"include_service": true,
"include_cleanup": false,
"message": "fafssfsf"
}
2025-11-07T10:27:43: Booking time: { date: '2025-11-04', start: '10:30:00', end: '13:30:00', duration: 3 }
2025-11-07T10:27:43: Blocked dates check: { cnt: 0 }
2025-11-07T10:27:43: Checking availability for weekday: 2
2025-11-07T10:27:43: Available slots for weekday: [
{
id: 'da219369-491d-4d34-a6ea-3f51808c0611',
weekday: 2,
start_time: '08:00:00',
end_time: '16:00:00',
note: 'arbejde',
created_at: 2025-10-29T10:29:01.000Z
}
]
2025-11-07T10:27:43: Time slot covered by availability: true
2025-11-07T10:27:43: Overlapping bookings check: { cnt: 2 }
2025-11-07T10:27:43: ERROR: Time slot already booked
2025-11-07T10:28:06: === BOOKING REQUEST ===
2025-11-07T10:28:06: Request body: {
"name": "gffdgdgf",
"email": "dfgdfgdgf",
"phone": "24124124",
"address": "2400",
"party_size": 15,
"date": "2025-11-18",
"start_time": "10:00",
"duration_hours": 3,
"menu_id": "brunch-luksus",
"package_id": null,
"include_service": true,
"include_cleanup": false,
"message": "fafssfsf"
}
2025-11-07T10:28:06: Booking time: { date: '2025-11-18', start: '10:00:00', end: '13:00:00', duration: 3 }
2025-11-07T10:28:06: Blocked dates check: { cnt: 0 }
2025-11-07T10:28:06: Checking availability for weekday: 2
2025-11-07T10:28:06: Available slots for weekday: [
{
id: 'da219369-491d-4d34-a6ea-3f51808c0611',
weekday: 2,
start_time: '08:00:00',
end_time: '16:00:00',
note: 'arbejde',
created_at: 2025-10-29T10:29:01.000Z
}
]
2025-11-07T10:28:06: Time slot covered by availability: true
2025-11-07T10:28:06: Overlapping bookings check: { cnt: 0 }
2025-11-07T10:28:06: === BOOKING SUCCESS ===
2025-11-07T10:28:06: Booking ID: f09136a1-7766-42a7-8f67-f02200137c98
2025-11-07T10:28:06: Total price: 10175
2025-11-07T10:31:38: > Ready on http://localhost:3000
2025-11-07T10:44:13: > Ready on http://localhost:3000
2025-11-07T10:45:42: === API: GET /api/availability/weekly ===
2025-11-07T10:45:42: ✓ Weekly availability fetched: 2 slots
2025-11-07T10:48:04: Middleware - Path: /admin/bookings
2025-11-07T10:48:04: Middleware - Token present: true
2025-11-07T10:48:04: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T10:48:04: Middleware - Token valid, user: brotha
2025-11-07T10:48:08: === API: GET /api/availability/weekly ===
2025-11-07T10:48:08: === API: GET /api/availability/blocked ===
2025-11-07T10:48:08: ✓ Weekly availability fetched: 2 slots
2025-11-07T10:48:08: ✓ Blocked dates fetched: 3 dates
2025-11-07T10:48:18: > Ready on http://localhost:3000
2025-11-07T10:48:24: === API: GET /api/availability/weekly ===
2025-11-07T10:48:24: === API: GET /api/availability/blocked ===
2025-11-07T10:48:24: ✓ Weekly availability fetched: 2 slots
2025-11-07T10:48:24: ✓ Blocked dates fetched: 3 dates
2025-11-07T10:49:46: > Ready on http://localhost:3000
2025-11-07T10:52:03: Middleware - Path: /admin/bookings
2025-11-07T10:52:03: Middleware - Token present: true
2025-11-07T10:52:03: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T10:52:03: Middleware - Token valid, user: brotha
2025-11-07T10:52:03: === API: GET /api/bookings ===
2025-11-07T10:52:03: Query params: { date: null }
2025-11-07T10:52:03: Middleware - Path: /admin
2025-11-07T10:52:03: Middleware - Token present: true
2025-11-07T10:52:03: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T10:52:03: Middleware - Path: /admin/availability
2025-11-07T10:52:03: Middleware - Token present: true
2025-11-07T10:52:03: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T10:52:03: Middleware - Token valid, user: brotha
2025-11-07T10:52:03: Middleware - Token valid, user: brotha
2025-11-07T10:52:03: ✓ All bookings fetched. Count: 3
2025-11-07T10:52:58: > Ready on http://localhost:3000
2025-11-07T10:54:04: === API: GET /api/availability/weekly ===
2025-11-07T10:54:04: === API: GET /api/availability/blocked ===
2025-11-07T10:54:04: ✓ Blocked dates fetched: 3 dates
2025-11-07T10:54:04: ✓ Weekly availability fetched: 2 slots
2025-11-07T11:00:22: > Ready on http://localhost:3000
2025-11-07T12:15:32: Middleware - Path: /admin/bookings
2025-11-07T12:15:32: Middleware - Token present: true
2025-11-07T12:15:32: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:15:32: Middleware - Token valid, user: brotha
2025-11-07T12:15:33: === API: GET /api/bookings ===
2025-11-07T12:15:33: Query params: { date: null }
2025-11-07T12:15:33: ✓ All bookings fetched. Count: 3
2025-11-07T12:15:37: === API: DELETE /api/bookings ===
2025-11-07T12:15:37: Request body: { id: '67f4eeb2-14dd-4b0d-b093-972986305e00' }
2025-11-07T12:15:37: Delete result - Affected rows: 1
2025-11-07T12:15:37: ✓ Booking deleted successfully: 67f4eeb2-14dd-4b0d-b093-972986305e00
2025-11-07T12:16:00: Middleware - Path: /admin
2025-11-07T12:16:00: Middleware - Token present: true
2025-11-07T12:16:00: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:16:00: Middleware - Token valid, user: brotha
2025-11-07T12:21:13: > Ready on http://localhost:3000
2025-11-07T12:24:11: === API: GET /api/availability/weekly ===
2025-11-07T12:24:11: ✓ Weekly availability fetched: 2 slots
2025-11-07T12:24:44: Middleware - Path: /admin
2025-11-07T12:24:44: Middleware - Token present: true
2025-11-07T12:24:44: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:24:44: Middleware - Token valid, user: brotha
2025-11-07T12:24:44: === API: GET /api/menus ===
2025-11-07T12:24:44: Middleware - Path: /admin/availability
2025-11-07T12:24:44: Middleware - Token present: true
2025-11-07T12:24:44: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:24:44: Middleware - Path: /admin/menu-generator
2025-11-07T12:24:44: Middleware - Token present: true
2025-11-07T12:24:44: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:24:44: Middleware - Path: /admin/bookings
2025-11-07T12:24:44: Middleware - Token present: true
2025-11-07T12:24:44: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:24:44: Middleware - Token valid, user: brotha
2025-11-07T12:24:44: Middleware - Token valid, user: brotha
2025-11-07T12:24:45: Middleware - Token valid, user: brotha
2025-11-07T12:24:45: ✓ Menus fetched: 9
2025-11-07T12:24:48: === API: GET /api/bookings ===
2025-11-07T12:24:48: Query params: { date: null }
2025-11-07T12:24:48: ✓ All bookings fetched. Count: 2
2025-11-07T12:24:51: Middleware - Path: /admin
2025-11-07T12:24:51: Middleware - Token present: true
2025-11-07T12:24:51: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:24:51: Middleware - Token valid, user: brotha
2025-11-07T12:25:05: Middleware - Path: /admin/availability
2025-11-07T12:25:05: Middleware - Token present: true
2025-11-07T12:25:05: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:25:05: Middleware - Token valid, user: brotha
2025-11-07T12:25:08: === API LOGIN REQUEST START ===
2025-11-07T12:25:08: Timestamp: 2025-11-07T11:25:08.262Z
2025-11-07T12:25:08: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T12:25:08: Connecting to database...
2025-11-07T12:25:08: Database connected
2025-11-07T12:25:08: Querying user from database: brotha
2025-11-07T12:25:08: Query result: found 1 users
2025-11-07T12:25:08: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T12:25:08: Verifying password with salt...
2025-11-07T12:25:08: Password valid: true
2025-11-07T12:25:08: Creating JWT token...
2025-11-07T12:25:08: JWT token created, length: 239
2025-11-07T12:25:08: Setting authToken cookie...
2025-11-07T12:25:08: Cookie set successfully
2025-11-07T12:25:08: === API LOGIN SUCCESS ===
2025-11-07T12:25:08: Database connection closed
2025-11-07T12:25:15: === API LOGIN REQUEST START ===
2025-11-07T12:25:15: Timestamp: 2025-11-07T11:25:15.696Z
2025-11-07T12:25:15: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T12:25:15: Connecting to database...
2025-11-07T12:25:15: Database connected
2025-11-07T12:25:15: Querying user from database: brotha
2025-11-07T12:25:15: Query result: found 1 users
2025-11-07T12:25:15: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T12:25:15: Verifying password with salt...
2025-11-07T12:25:15: Password valid: true
2025-11-07T12:25:15: Creating JWT token...
2025-11-07T12:25:15: JWT token created, length: 239
2025-11-07T12:25:15: Setting authToken cookie...
2025-11-07T12:25:15: Cookie set successfully
2025-11-07T12:25:15: === API LOGIN SUCCESS ===
2025-11-07T12:25:15: Database connection closed
2025-11-07T12:25:15: Middleware - Path: /admin
2025-11-07T12:25:15: Middleware - Token present: true
2025-11-07T12:25:15: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:25:15: Middleware - Token valid, user: brotha
2025-11-07T12:25:20: === API LOGIN REQUEST START ===
2025-11-07T12:25:20: Timestamp: 2025-11-07T11:25:20.540Z
2025-11-07T12:25:20: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T12:25:20: Connecting to database...
2025-11-07T12:25:20: Database connected
2025-11-07T12:25:20: Querying user from database: brotha
2025-11-07T12:25:20: Query result: found 1 users
2025-11-07T12:25:20: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T12:25:20: Verifying password with salt...
2025-11-07T12:25:20: Password valid: true
2025-11-07T12:25:20: Creating JWT token...
2025-11-07T12:25:20: JWT token created, length: 239
2025-11-07T12:25:20: Setting authToken cookie...
2025-11-07T12:25:20: Cookie set successfully
2025-11-07T12:25:20: === API LOGIN SUCCESS ===
2025-11-07T12:25:20: Database connection closed
2025-11-07T12:26:05: === API: GET /api/bookings ===
2025-11-07T12:26:05: Query params: { date: null }
2025-11-07T12:26:05: ✓ All bookings fetched. Count: 2
2025-11-07T12:26:11: > Ready on http://localhost:3000
2025-11-07T12:26:21: Middleware - Path: /admin/availability
2025-11-07T12:26:21: Middleware - Token present: true
2025-11-07T12:26:21: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:26:21: Middleware - Token valid, user: brotha
2025-11-07T12:26:24: Middleware - Path: /admin
2025-11-07T12:26:24: Middleware - Token present: true
2025-11-07T12:26:24: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:26:24: Middleware - Token valid, user: brotha
2025-11-07T12:26:24: Middleware - Path: /admin/availability
2025-11-07T12:26:24: Middleware - Token present: true
2025-11-07T12:26:24: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:26:24: Middleware - Path: /admin/bookings
2025-11-07T12:26:24: Middleware - Token present: true
2025-11-07T12:26:24: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:26:24: Middleware - Token valid, user: brotha
2025-11-07T12:26:24: Middleware - Token valid, user: brotha
2025-11-07T12:26:24: Middleware - Path: /admin/menu-generator
2025-11-07T12:26:24: Middleware - Token present: true
2025-11-07T12:26:24: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:26:24: Middleware - Token valid, user: brotha
2025-11-07T12:26:30: Middleware - Path: /admin/bookings
2025-11-07T12:26:30: Middleware - Token present: true
2025-11-07T12:26:30: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:26:30: Middleware - Token valid, user: brotha
2025-11-07T12:26:31: Middleware - Path: /admin/bookings
2025-11-07T12:26:31: Middleware - Token present: true
2025-11-07T12:26:31: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:26:31: Middleware - Token valid, user: brotha
2025-11-07T12:33:35: > Ready on http://localhost:3000
2025-11-07T12:34:41: === API: GET /api/availability/weekly ===
2025-11-07T12:34:41: ✓ Weekly availability fetched: 2 slots
2025-11-07T12:36:00: === BOOKING REQUEST ===
2025-11-07T12:36:00: Request body: {
"name": "bob",
"email": "bobo",
"phone": "453535345",
"address": "rødovre",
"party_size": 15,
"date": "2025-11-20",
"start_time": "16:00",
"duration_hours": 3,
"menu_id": "italiensk-aften",
"package_id": null,
"include_service": true,
"include_cleanup": false,
"message": "gdssgdsgdgsd",
"_t": 1762515328337
}
2025-11-07T12:36:00: Booking time: { date: '2025-11-20', start: '16:00:00', end: '19:00:00', duration: 3 }
2025-11-07T12:36:00: Blocked dates check: { cnt: 0 }
2025-11-07T12:36:00: Checking availability for weekday: 4
2025-11-07T12:36:00: Available slots for weekday: [
{
id: 'b8d32131-a424-48c2-8ddd-c9263cb7a085',
weekday: 4,
start_time: '16:00:00',
end_time: '20:00:00',
note: '',
created_at: 2025-10-31T20:00:18.000Z
}
]
2025-11-07T12:36:00: Time slot covered by availability: true
2025-11-07T12:36:00: Overlapping bookings check: { cnt: 0 }
2025-11-07T12:36:00: === BOOKING SUCCESS ===
2025-11-07T12:36:00: Booking ID: 7cb35696-fb64-42bc-b592-7034538951ac
2025-11-07T12:36:00: Total price: 5750
2025-11-07T12:36:07: Middleware - Path: /admin
2025-11-07T12:36:07: Middleware - Token present: true
2025-11-07T12:36:07: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:36:07: Middleware - Token valid, user: brotha
2025-11-07T12:36:07: === API: GET /api/menus ===
2025-11-07T12:36:07: ✓ Menus fetched: 9
2025-11-07T12:37:31: > Ready on http://localhost:3000
2025-11-07T12:38:18: === API: GET /api/bookings ===
2025-11-07T12:38:18: Query params: { date: null }
2025-11-07T12:38:18: ✓ All bookings fetched. Count: 3
2025-11-07T12:38:24: === API: GET /api/availability/blocked ===
2025-11-07T12:38:24: ✓ Blocked dates fetched: 3 dates
2025-11-07T12:38:29: Middleware - Path: /admin/availability
2025-11-07T12:38:29: Middleware - Token present: false
2025-11-07T12:38:29: Middleware - Token value: undefined...
2025-11-07T12:38:29: Middleware - No token, redirecting to login
2025-11-07T12:38:35: Middleware - Path: /admin/availability
2025-11-07T12:38:35: Middleware - Token present: false
2025-11-07T12:38:35: Middleware - Token value: undefined...
2025-11-07T12:38:35: Middleware - No token, redirecting to login
2025-11-07T12:44:56: Middleware - Path: /admin
2025-11-07T12:44:56: Middleware - Token present: true
2025-11-07T12:44:56: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:44:56: Middleware - Token valid, user: brotha
2025-11-07T12:44:56: === API: GET /api/menus ===
2025-11-07T12:44:56: ✓ Menus fetched: 9
2025-11-07T12:44:59: Middleware - Path: /admin/menu-generator
2025-11-07T12:44:59: Middleware - Token present: true
2025-11-07T12:44:59: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:44:59: Middleware - Token valid, user: brotha
2025-11-07T12:44:59: Middleware - Path: /admin
2025-11-07T12:44:59: Middleware - Token present: true
2025-11-07T12:44:59: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:44:59: Middleware - Path: /admin/availability
2025-11-07T12:44:59: Middleware - Token present: true
2025-11-07T12:44:59: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:44:59: Middleware - Path: /admin/bookings
2025-11-07T12:44:59: Middleware - Token present: true
2025-11-07T12:44:59: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:44:59: Middleware - Token valid, user: brotha
2025-11-07T12:44:59: Middleware - Token valid, user: brotha
2025-11-07T12:44:59: Middleware - Token valid, user: brotha
2025-11-07T12:45:03: === Menu Generator API ===
2025-11-07T12:45:03: Request: { prompt: '', courses: 3, style: '', dietary: '' }
2025-11-07T12:45:03: Calling OpenAI API...
2025-11-07T12:45:19: ✓ OpenAI response received
2025-11-07T12:45:19: ✓ Menu generated successfully
2025-11-07T12:45:20: === API: GET /api/bookings ===
2025-11-07T12:45:20: Query params: { date: null }
2025-11-07T12:45:20: ✓ All bookings fetched. Count: 3
2025-11-07T12:48:23: > Ready on http://localhost:3000
2025-11-07T12:52:14: Middleware - Path: /admin
2025-11-07T12:52:14: Middleware - Token present: true
2025-11-07T12:52:14: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:52:14: Middleware - Token valid, user: brotha
2025-11-07T12:52:15: === API: GET /api/menus ===
2025-11-07T12:52:15: Middleware - Path: /admin/menu-ingredients
2025-11-07T12:52:15: Middleware - Token present: true
2025-11-07T12:52:15: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:52:15: Middleware - Path: /admin/menu-generator
2025-11-07T12:52:15: Middleware - Token present: true
2025-11-07T12:52:15: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T12:52:15: Middleware - Token valid, user: brotha
2025-11-07T12:52:15: Middleware - Token valid, user: brotha
2025-11-07T12:52:15: ✓ Menus fetched: 9
2025-11-07T12:54:59: > Ready on http://localhost:3000
2025-11-07T13:05:29: Middleware - Path: /admin/menu-ingredients
2025-11-07T13:05:29: Middleware - Token present: true
2025-11-07T13:05:29: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:05:29: Middleware - Token valid, user: brotha
2025-11-07T13:05:29: Middleware - Path: /admin
2025-11-07T13:05:29: Middleware - Token present: true
2025-11-07T13:05:29: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:05:29: Middleware - Path: /admin/menu-generator
2025-11-07T13:05:29: Middleware - Token present: true
2025-11-07T13:05:29: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:05:29: Middleware - Path: /admin/availability
2025-11-07T13:05:29: Middleware - Token present: true
2025-11-07T13:05:29: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:05:29: Middleware - Path: /admin/bookings
2025-11-07T13:05:29: Middleware - Token present: true
2025-11-07T13:05:29: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:05:29: Middleware - Token valid, user: brotha
2025-11-07T13:05:29: Middleware - Token valid, user: brotha
2025-11-07T13:05:29: Middleware - Token valid, user: brotha
2025-11-07T13:05:29: Middleware - Token valid, user: brotha
2025-11-07T13:06:19: > Ready on http://localhost:3000
2025-11-07T13:07:55: > Ready on http://localhost:3000
2025-11-07T13:09:28: Middleware - Path: /admin/menu-generator
2025-11-07T13:09:28: Middleware - Token present: true
2025-11-07T13:09:28: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:09:28: Middleware - Token valid, user: brotha
2025-11-07T13:09:29: Middleware - Path: /admin/menu-ingredients
2025-11-07T13:09:29: Middleware - Token present: true
2025-11-07T13:09:29: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:09:29: Middleware - Path: /admin
2025-11-07T13:09:29: Middleware - Token present: true
2025-11-07T13:09:29: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:09:29: Middleware - Token valid, user: brotha
2025-11-07T13:09:29: Middleware - Token valid, user: brotha
2025-11-07T13:09:43: === Menu Generator API ===
2025-11-07T13:09:43: Request: {
prompt: 'gerne noget bbq',
courses: 3,
style: 'fødselsdag',
dietary: ''
}
2025-11-07T13:09:43: Calling OpenAI API...
2025-11-07T13:09:53: ✓ OpenAI response received
2025-11-07T13:09:53: ✓ Menu generated successfully
2025-11-07T13:13:05: > Ready on http://localhost:3000
2025-11-07T13:13:49: Middleware - Path: /admin/menu-generator
2025-11-07T13:13:49: Middleware - Token present: true
2025-11-07T13:13:49: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:13:49: Middleware - Token valid, user: brotha
2025-11-07T13:13:55: Middleware - Path: /admin/menu-generator
2025-11-07T13:13:55: Middleware - Token present: true
2025-11-07T13:13:55: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:13:55: Middleware - Token valid, user: brotha
2025-11-07T13:13:55: Middleware - Path: /admin/menu-generator
2025-11-07T13:13:55: Middleware - Token present: true
2025-11-07T13:13:55: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:13:55: Middleware - Token valid, user: brotha
2025-11-07T13:17:13: > Ready on http://localhost:3000
2025-11-07T13:19:47: === API: GET /api/availability/weekly ===
2025-11-07T13:19:47: === API: GET /api/availability/blocked ===
2025-11-07T13:19:47: ✓ Weekly availability fetched: 2 slots
2025-11-07T13:19:47: ✓ Blocked dates fetched: 3 dates
2025-11-07T13:19:51: Middleware - Path: /admin/menu-generator
2025-11-07T13:19:51: Middleware - Token present: true
2025-11-07T13:19:51: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:19:51: Middleware - Token valid, user: brotha
2025-11-07T13:23:30: > Ready on http://localhost:3000
2025-11-07T13:30:41: > Ready on http://localhost:3000
2025-11-07T13:42:01: > Ready on http://localhost:3000
2025-11-07T13:44:24: > Ready on http://localhost:3000
2025-11-07T13:49:59: > Ready on http://localhost:3000
2025-11-07T13:52:59: > Ready on http://localhost:3000
2025-11-07T13:53:23: === API: GET /api/availability/weekly ===
2025-11-07T13:53:23: ✓ Weekly availability fetched: 2 slots
2025-11-07T13:53:23: === API: POST /api/availability/weekly ===
2025-11-07T13:53:23: Request body: {
weekday: 5,
start_time: '10:00',
end_time: '22:00',
note: 'automated test slot'
}
2025-11-07T13:53:23: Overlap check: { overlaps: 0 }
2025-11-07T13:53:23: ✓ Weekly availability created: d9cac104-0341-402f-ba59-3c413034cda1
2025-11-07T13:53:23: === API: GET /api/availability/blocked ===
2025-11-07T13:53:23: ✓ Blocked dates fetched: 3 dates
2025-11-07T13:53:23: === BOOKING REQUEST ===
2025-11-07T13:53:23: Request body: {
"name": "Test User",
"email": "test@example.com",
"phone": "0000",
"party_size": 10,
"date": "2025-11-21",
"start_time": "12:00",
"duration_hours": 3,
"message": "Automated test"
}
2025-11-07T13:53:23: Booking time: { date: '2025-11-21', start: '12:00:00', end: '15:00:00', duration: 3 }
2025-11-07T13:53:23: Blocked dates check: { cnt: 0 }
2025-11-07T13:53:23: Checking availability for weekday: 5
2025-11-07T13:53:23: Available slots for weekday: [
{
id: 'd9cac104-0341-402f-ba59-3c413034cda1',
weekday: 5,
start_time: '10:00:00',
end_time: '22:00:00',
note: 'automated test slot',
created_at: 2025-11-07T12:53:23.000Z
}
]
2025-11-07T13:53:23: Time slot covered by availability: true
2025-11-07T13:53:23: Overlapping bookings check: { cnt: 0 }
2025-11-07T13:53:23: === BOOKING SUCCESS ===
2025-11-07T13:53:23: Booking ID: e166b8b6-d33f-4382-8c1c-9e2dc0ec0e06
2025-11-07T13:53:23: Total price: 500
2025-11-07T13:53:23: === BOOKING REQUEST ===
2025-11-07T13:53:23: Request body: {
"name": "Test User",
"email": "test@example.com",
"phone": "0000",
"party_size": 10,
"date": "2025-11-21",
"start_time": "13:00",
"duration_hours": 2,
"message": "Automated test"
}
2025-11-07T13:53:23: Booking time: { date: '2025-11-21', start: '13:00:00', end: '15:00:00', duration: 2 }
2025-11-07T13:53:23: Blocked dates check: { cnt: 0 }
2025-11-07T13:53:23: Checking availability for weekday: 5
2025-11-07T13:53:23: Available slots for weekday: [
{
id: 'd9cac104-0341-402f-ba59-3c413034cda1',
weekday: 5,
start_time: '10:00:00',
end_time: '22:00:00',
note: 'automated test slot',
created_at: 2025-11-07T12:53:23.000Z
}
]
2025-11-07T13:53:23: Time slot covered by availability: true
2025-11-07T13:53:23: Overlapping bookings check: { cnt: 1 }
2025-11-07T13:53:23: ERROR: Time slot already booked
2025-11-07T13:54:04: === API: GET /api/menus ===
2025-11-07T13:54:04: ✓ Menus fetched: 16
2025-11-07T13:54:04: === BOOKING REQUEST ===
2025-11-07T13:54:04: Request body: {
"name": "Test Booking",
"email": "test@warme.dk",
"phone": "12345678",
"address": "Test Address 123",
"party_size": 8,
"date": "2025-11-21",
"start_time": "18:00",
"duration_hours": 4,
"menu_id": "fusion-menu",
"include_service": true,
"include_cleanup": true,
"message": "Full flow test booking"
}
2025-11-07T13:54:04: Booking time: { date: '2025-11-21', start: '18:00:00', end: '22:00:00', duration: 4 }
2025-11-07T13:54:04: Blocked dates check: { cnt: 0 }
2025-11-07T13:54:04: Checking availability for weekday: 5
2025-11-07T13:54:04: Available slots for weekday: [
{
id: 'd9cac104-0341-402f-ba59-3c413034cda1',
weekday: 5,
start_time: '10:00:00',
end_time: '22:00:00',
note: 'automated test slot',
created_at: 2025-11-07T12:53:23.000Z
}
]
2025-11-07T13:54:04: Time slot covered by availability: true
2025-11-07T13:54:04: Overlapping bookings check: { cnt: 0 }
2025-11-07T13:54:04: === BOOKING SUCCESS ===
2025-11-07T13:54:04: Booking ID: 121db4ae-ee58-454e-988a-36350e8fa182
2025-11-07T13:54:04: Total price: 7760
2025-11-07T13:54:04: === API: GET /api/bookings ===
2025-11-07T13:54:04: Query params: { date: null }
2025-11-07T13:54:04: ✓ All bookings fetched. Count: 5
2025-11-07T13:54:04: === API: DELETE /api/bookings ===
2025-11-07T13:54:04: Request body: { id: '121db4ae-ee58-454e-988a-36350e8fa182' }
2025-11-07T13:54:04: Delete result - Affected rows: 1
2025-11-07T13:54:04: ✓ Booking deleted successfully: 121db4ae-ee58-454e-988a-36350e8fa182
2025-11-07T13:54:40: === API: GET /api/menus ===
2025-11-07T13:54:40: ✓ Menus fetched: 16
2025-11-07T13:54:51: Middleware - Path: /admin/menus
2025-11-07T13:54:51: Middleware - Token present: false
2025-11-07T13:54:51: Middleware - Token value: undefined...
2025-11-07T13:54:51: Middleware - No token, redirecting to login
2025-11-07T13:58:55: === API: GET /api/availability/weekly ===
2025-11-07T13:58:55: === API: GET /api/availability/blocked ===
2025-11-07T13:58:55: ✓ Blocked dates fetched: 3 dates
2025-11-07T13:58:55: ✓ Weekly availability fetched: 3 slots
2025-11-07T13:59:23: Middleware - Path: /admin/menu-ingredients
2025-11-07T13:59:23: Middleware - Token present: true
2025-11-07T13:59:23: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:59:23: Middleware - Token valid, user: brotha
2025-11-07T13:59:23: Middleware - Path: /admin
2025-11-07T13:59:23: Middleware - Token present: true
2025-11-07T13:59:23: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:59:23: Middleware - Token valid, user: brotha
2025-11-07T13:59:26: Middleware - Path: /admin/menu-ingredients
2025-11-07T13:59:26: Middleware - Token present: true
2025-11-07T13:59:26: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:59:26: Middleware - Token valid, user: brotha
2025-11-07T13:59:26: Middleware - Path: /admin/menus
2025-11-07T13:59:26: Middleware - Token present: true
2025-11-07T13:59:26: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:59:26: Middleware - Token valid, user: brotha
2025-11-07T13:59:27: Middleware - Path: /admin/menu-generator
2025-11-07T13:59:27: Middleware - Token present: true
2025-11-07T13:59:27: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T13:59:27: Middleware - Token valid, user: brotha
2025-11-07T14:06:08: Middleware - Path: /admin/menu-generator
2025-11-07T14:06:08: Middleware - Token present: true
2025-11-07T14:06:08: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:06:08: Middleware - Token valid, user: brotha
2025-11-07T14:06:08: Middleware - Path: /admin/menus
2025-11-07T14:06:08: Middleware - Token present: true
2025-11-07T14:06:08: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:06:08: Middleware - Token valid, user: brotha
2025-11-07T14:06:12: Middleware - Path: /admin/menu-generator
2025-11-07T14:06:12: Middleware - Token present: true
2025-11-07T14:06:12: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:06:12: Middleware - Token valid, user: brotha
2025-11-07T14:06:12: Middleware - Path: /admin/menu-generator
2025-11-07T14:06:12: Middleware - Token present: true
2025-11-07T14:06:12: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:06:12: Middleware - Token valid, user: brotha
2025-11-07T14:06:12: Middleware - Path: /admin/menu-generator
2025-11-07T14:06:12: Middleware - Token present: true
2025-11-07T14:06:12: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:06:12: Middleware - Token valid, user: brotha
2025-11-07T14:10:05: === API: GET /api/menus ===
2025-11-07T14:10:05: ✓ Menus fetched: 16
2025-11-07T14:10:12: === API: GET /api/availability/weekly ===
2025-11-07T14:10:12: ✓ Weekly availability fetched: 3 slots
2025-11-07T14:10:17: Middleware - Path: /admin/menu-generator
2025-11-07T14:10:17: Middleware - Token present: true
2025-11-07T14:10:17: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:10:17: Middleware - Token valid, user: brotha
2025-11-07T14:10:18: Middleware - Path: /admin/menu-generator
2025-11-07T14:10:18: Middleware - Token present: true
2025-11-07T14:10:18: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:10:18: Middleware - Token valid, user: brotha
2025-11-07T14:10:18: Middleware - Path: /admin/menu-generator
2025-11-07T14:10:18: Middleware - Token present: true
2025-11-07T14:10:18: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:10:18: Middleware - Token valid, user: brotha
2025-11-07T14:10:18: Middleware - Path: /admin/menu-generator
2025-11-07T14:10:18: Middleware - Token present: true
2025-11-07T14:10:18: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:10:18: Middleware - Token valid, user: brotha
2025-11-07T14:14:24: > Ready on http://localhost:3000
2025-11-07T14:14:53: === API: GET /api/menus ===
2025-11-07T14:14:53: ✓ Menus fetched: 16
2025-11-07T14:14:53: === API: GET /api/availability/weekly ===
2025-11-07T14:14:53: ✓ Weekly availability fetched: 3 slots
2025-11-07T14:14:53: === Menu Generator API ===
2025-11-07T14:14:53: Request: {
prompt: 'test',
courses: 3,
style: undefined,
dietary: undefined,
sidesRequest: undefined,
generateImage: undefined
}
2025-11-07T14:14:53: Calling OpenAI API...
2025-11-07T14:15:10: ✓ OpenAI response received
2025-11-07T14:15:10: ✓ Menu generated successfully
2025-11-07T14:15:10: === Menu Generator API ===
2025-11-07T14:15:10: Request: {
prompt: undefined,
courses: undefined,
style: undefined,
dietary: undefined,
sidesRequest: undefined,
generateImage: true
}
2025-11-07T14:15:10: Generating image for menu...
2025-11-07T14:15:31: ✓ Image generated successfully
2025-11-07T14:15:31: === API: POST /api/contact ===
2025-11-07T14:15:31: Contact form submission: {
name: 'Test',
email: 'test@test.com',
hasPhone: false,
hasAddress: false,
messageLength: 4,
hasTimestamp: false
}
2025-11-07T14:15:31: SMTP config: {
host: 'smtp.office365.com',
port: 587,
user: 'not set',
to: 'christian@warme.dk'
}
2025-11-07T14:15:31: === API LOGIN REQUEST START ===
2025-11-07T14:15:31: Timestamp: 2025-11-07T13:15:31.630Z
2025-11-07T14:15:31: Request body received: { username: undefined, passwordLength: 5 }
2025-11-07T14:15:31: ERROR: Missing username or password
2025-11-07T14:15:31: === API: GET /api/bookings ===
2025-11-07T14:15:31: Query params: { date: null }
2025-11-07T14:15:31: ✓ All bookings fetched. Count: 4
2025-11-07T14:15:31: === BOOKING REQUEST ===
2025-11-07T14:15:31: Request body: {
"date": "2025-12-01",
"guests": 10
}
2025-11-07T14:15:31: ERROR: Missing required fields
2025-11-07T14:15:31: === API: GET /api/availability/blocked ===
2025-11-07T14:15:31: ✓ Blocked dates fetched: 3 dates
2025-11-07T14:15:55: === API: GET /api/menus ===
2025-11-07T14:15:55: ✓ Menus fetched: 16
2025-11-07T14:15:55: === API: GET /api/availability/weekly ===
2025-11-07T14:15:55: ✓ Weekly availability fetched: 3 slots
2025-11-07T14:15:55: === Menu Generator API ===
2025-11-07T14:15:55: Request: {
prompt: 'test',
courses: 3,
style: undefined,
dietary: undefined,
sidesRequest: undefined,
generateImage: undefined
}
2025-11-07T14:15:55: Calling OpenAI API...
2025-11-07T14:16:14: ✓ OpenAI response received
2025-11-07T14:16:14: ✓ Menu generated successfully
2025-11-07T14:16:14: === Menu Generator API ===
2025-11-07T14:16:14: Request: {
prompt: undefined,
courses: undefined,
style: undefined,
dietary: undefined,
sidesRequest: undefined,
generateImage: true
}
2025-11-07T14:16:14: Generating image for menu...
2025-11-07T14:16:34: ✓ Image generated successfully
2025-11-07T14:16:34: === API: POST /api/contact ===
2025-11-07T14:16:34: Contact form submission: {
name: 'Test',
email: 'test@test.com',
hasPhone: false,
hasAddress: false,
messageLength: 4,
hasTimestamp: false
}
2025-11-07T14:16:34: SMTP config: {
host: 'smtp.office365.com',
port: 587,
user: 'not set',
to: 'christian@warme.dk'
}
2025-11-07T14:16:34: === API LOGIN REQUEST START ===
2025-11-07T14:16:34: Timestamp: 2025-11-07T13:16:34.095Z
2025-11-07T14:16:34: Request body received: { username: undefined, passwordLength: 5 }
2025-11-07T14:16:34: ERROR: Missing username or password
2025-11-07T14:16:34: === API: GET /api/bookings ===
2025-11-07T14:16:34: Query params: { date: null }
2025-11-07T14:16:34: ✓ All bookings fetched. Count: 4
2025-11-07T14:16:34: === BOOKING REQUEST ===
2025-11-07T14:16:34: Request body: {
"date": "2025-12-01",
"guests": 10
}
2025-11-07T14:16:34: ERROR: Missing required fields
2025-11-07T14:16:34: === API: GET /api/availability/blocked ===
2025-11-07T14:16:34: ✓ Blocked dates fetched: 3 dates
2025-11-07T14:16:40: Middleware - Path: /admin/menu-generator
2025-11-07T14:16:40: Middleware - Token present: false
2025-11-07T14:16:40: Middleware - Token value: undefined...
2025-11-07T14:16:40: Middleware - No token, redirecting to login
2025-11-07T14:16:57: === API LOGIN REQUEST START ===
2025-11-07T14:16:57: Timestamp: 2025-11-07T13:16:57.327Z
2025-11-07T14:16:57: Request body received: { username: 'brotha', passwordLength: 10 }
2025-11-07T14:16:57: Connecting to database...
2025-11-07T14:16:57: Database connected
2025-11-07T14:16:57: Querying user from database: brotha
2025-11-07T14:16:57: Query result: found 1 users
2025-11-07T14:16:57: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T14:16:57: Verifying password with salt...
2025-11-07T14:16:57: Password valid: false
2025-11-07T14:16:57: ERROR: Invalid password for user: brotha
2025-11-07T14:16:57: Database connection closed
2025-11-07T14:17:03: === API LOGIN REQUEST START ===
2025-11-07T14:17:03: Timestamp: 2025-11-07T13:17:03.495Z
2025-11-07T14:17:03: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T14:17:03: Connecting to database...
2025-11-07T14:17:03: Database connected
2025-11-07T14:17:03: Querying user from database: brotha
2025-11-07T14:17:03: Query result: found 1 users
2025-11-07T14:17:03: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T14:17:03: Verifying password with salt...
2025-11-07T14:17:03: Password valid: true
2025-11-07T14:17:03: Creating JWT token...
2025-11-07T14:17:03: JWT token created, length: 239
2025-11-07T14:17:03: Setting authToken cookie...
2025-11-07T14:17:03: Cookie set successfully
2025-11-07T14:17:03: === API LOGIN SUCCESS ===
2025-11-07T14:17:03: Database connection closed
2025-11-07T14:17:03: Middleware - Path: /admin
2025-11-07T14:17:03: Middleware - Token present: false
2025-11-07T14:17:03: Middleware - Token value: undefined...
2025-11-07T14:17:03: Middleware - No token, redirecting to login
2025-11-07T14:17:35: === API LOGIN REQUEST START ===
2025-11-07T14:17:35: Timestamp: 2025-11-07T13:17:35.219Z
2025-11-07T14:17:35: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T14:17:35: Connecting to database...
2025-11-07T14:17:35: Database connected
2025-11-07T14:17:35: Querying user from database: brotha
2025-11-07T14:17:35: Query result: found 1 users
2025-11-07T14:17:35: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T14:17:35: Verifying password with salt...
2025-11-07T14:17:35: Password valid: true
2025-11-07T14:17:35: Creating JWT token...
2025-11-07T14:17:35: JWT token created, length: 239
2025-11-07T14:17:35: Setting authToken cookie...
2025-11-07T14:17:35: Cookie set successfully
2025-11-07T14:17:35: === API LOGIN SUCCESS ===
2025-11-07T14:17:35: Database connection closed
2025-11-07T14:17:40: === API LOGIN REQUEST START ===
2025-11-07T14:17:40: Timestamp: 2025-11-07T13:17:40.194Z
2025-11-07T14:17:40: Request body received: { username: 'brotha', passwordLength: 7 }
2025-11-07T14:17:40: Connecting to database...
2025-11-07T14:17:40: Database connected
2025-11-07T14:17:40: Querying user from database: brotha
2025-11-07T14:17:40: Query result: found 1 users
2025-11-07T14:17:40: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T14:17:40: Verifying password with salt...
2025-11-07T14:17:40: Password valid: false
2025-11-07T14:17:40: ERROR: Invalid password for user: brotha
2025-11-07T14:17:40: Database connection closed
2025-11-07T14:18:01: === API LOGIN REQUEST START ===
2025-11-07T14:18:01: Timestamp: 2025-11-07T13:18:01.684Z
2025-11-07T14:18:01: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T14:18:01: Connecting to database...
2025-11-07T14:18:01: Database connected
2025-11-07T14:18:01: Querying user from database: brotha
2025-11-07T14:18:01: Query result: found 1 users
2025-11-07T14:18:01: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T14:18:01: Verifying password with salt...
2025-11-07T14:18:01: Password valid: true
2025-11-07T14:18:01: Creating JWT token...
2025-11-07T14:18:01: JWT token created, length: 239
2025-11-07T14:18:01: Setting authToken cookie...
2025-11-07T14:18:01: Cookie set successfully
2025-11-07T14:18:01: === API LOGIN SUCCESS ===
2025-11-07T14:18:01: Database connection closed
2025-11-07T14:18:26: === API LOGIN REQUEST START ===
2025-11-07T14:18:26: Timestamp: 2025-11-07T13:18:26.617Z
2025-11-07T14:18:26: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T14:18:26: Connecting to database...
2025-11-07T14:18:26: Database connected
2025-11-07T14:18:26: Querying user from database: brotha
2025-11-07T14:18:26: Query result: found 1 users
2025-11-07T14:18:26: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T14:18:26: Verifying password with salt...
2025-11-07T14:18:26: Password valid: true
2025-11-07T14:18:26: Creating JWT token...
2025-11-07T14:18:26: JWT token created, length: 239
2025-11-07T14:18:26: Setting authToken cookie...
2025-11-07T14:18:26: Cookie set successfully
2025-11-07T14:18:26: === API LOGIN SUCCESS ===
2025-11-07T14:18:26: Database connection closed
2025-11-07T14:18:42: Middleware - Path: /admin/menu-generator
2025-11-07T14:18:42: Middleware - Token present: true
2025-11-07T14:18:42: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:18:42: Middleware - Token valid, user: brotha
2025-11-07T14:18:43: Middleware - Path: /admin/menu-generator
2025-11-07T14:18:43: Middleware - Token present: true
2025-11-07T14:18:43: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:18:43: Middleware - Token valid, user: brotha
2025-11-07T14:20:43: === API: GET /api/availability/weekly ===
2025-11-07T14:20:43: === API: GET /api/availability/blocked ===
2025-11-07T14:20:43: ✓ Weekly availability fetched: 3 slots
2025-11-07T14:20:43: ✓ Blocked dates fetched: 3 dates
2025-11-07T14:20:46: Middleware - Path: /admin/menu-generator
2025-11-07T14:20:46: Middleware - Token present: true
2025-11-07T14:20:46: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:20:46: Middleware - Token valid, user: brotha
2025-11-07T14:20:46: Middleware - Path: /admin/menu-generator
2025-11-07T14:20:46: Middleware - Token present: true
2025-11-07T14:20:46: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:20:46: Middleware - Token valid, user: brotha
2025-11-07T14:20:46: Middleware - Path: /admin/menu-generator
2025-11-07T14:20:46: Middleware - Token present: true
2025-11-07T14:20:46: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:20:46: Middleware - Token valid, user: brotha
2025-11-07T14:20:47: Middleware - Path: /admin/menu-generator
2025-11-07T14:20:47: Middleware - Token present: true
2025-11-07T14:20:47: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:20:47: Middleware - Token valid, user: brotha
2025-11-07T14:20:47: Middleware - Path: /admin/menu-generator
2025-11-07T14:20:47: Middleware - Token present: true
2025-11-07T14:20:47: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:20:47: Middleware - Token valid, user: brotha
2025-11-07T14:24:47: > Ready on http://localhost:3000
2025-11-07T14:27:46: Middleware - Path: /admin/menu-generator
2025-11-07T14:27:46: Middleware - Token present: true
2025-11-07T14:27:46: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:27:46: Middleware - Token valid, user: brotha
2025-11-07T14:27:46: Middleware - Path: /admin/menu-generator
2025-11-07T14:27:46: Middleware - Token present: true
2025-11-07T14:27:46: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:27:46: Middleware - Token valid, user: brotha
2025-11-07T14:27:46: Middleware - Path: /admin/menu-generator
2025-11-07T14:27:46: Middleware - Token present: true
2025-11-07T14:27:46: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:27:46: Middleware - Token valid, user: brotha
2025-11-07T14:27:47: Middleware - Path: /admin/menu-generator
2025-11-07T14:27:47: Middleware - Token present: true
2025-11-07T14:27:47: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:27:47: Middleware - Token valid, user: brotha
2025-11-07T14:27:47: Middleware - Path: /admin/menu-generator
2025-11-07T14:27:47: Middleware - Token present: true
2025-11-07T14:27:47: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:27:47: Middleware - Token valid, user: brotha
2025-11-07T14:27:47: Middleware - Path: /admin/menu-generator
2025-11-07T14:27:47: Middleware - Token present: true
2025-11-07T14:27:47: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:27:47: Middleware - Token valid, user: brotha
2025-11-07T14:27:49: === API: GET /api/availability/weekly ===
2025-11-07T14:27:49: === API: GET /api/availability/blocked ===
2025-11-07T14:27:49: ✓ Weekly availability fetched: 3 slots
2025-11-07T14:27:49: ✓ Blocked dates fetched: 3 dates
2025-11-07T14:27:49: === API: GET /api/availability/weekly ===
2025-11-07T14:27:49: === API: GET /api/availability/blocked ===
2025-11-07T14:27:49: ✓ Weekly availability fetched: 3 slots
2025-11-07T14:27:49: ✓ Blocked dates fetched: 3 dates
2025-11-07T14:30:27: > Ready on http://localhost:3000
2025-11-07T14:30:37: Middleware - Path: /admin/menu-generator
2025-11-07T14:30:37: Middleware - Token present: true
2025-11-07T14:30:37: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:30:37: Middleware - Token valid, user: brotha
2025-11-07T14:36:07: > Ready on http://localhost:3000
2025-11-07T14:39:32: Middleware - Path: /admin/menu-generator
2025-11-07T14:39:32: Middleware - Token present: true
2025-11-07T14:39:32: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:39:32: Middleware - Token valid, user: brotha
2025-11-07T14:39:32: Middleware - Path: /admin/menus
2025-11-07T14:39:32: Middleware - Token present: true
2025-11-07T14:39:32: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:39:32: Middleware - Path: /admin/menu-ingredients
2025-11-07T14:39:32: Middleware - Token present: true
2025-11-07T14:39:32: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:39:32: Middleware - Token valid, user: brotha
2025-11-07T14:39:32: Middleware - Token valid, user: brotha
2025-11-07T14:44:12: === Menu Generator API ===
2025-11-07T14:44:12: Request: {
prompt: '',
courses: 3,
style: '',
dietary: '',
sidesRequest: 'kartofler og sovs',
starterRequest: 'ærte suppe',
mainRequest: 'ribeye',
dessertRequest: 'is sorbe',
generateImage: undefined
}
2025-11-07T14:44:12: Calling OpenAI API...
2025-11-07T14:44:27: ✓ OpenAI response received
2025-11-07T14:44:27: ✓ Menu generated successfully
2025-11-07T14:44:30: === Menu Generator API ===
2025-11-07T14:44:30: Request: {
prompt: undefined,
courses: undefined,
style: undefined,
dietary: undefined,
sidesRequest: undefined,
starterRequest: undefined,
mainRequest: undefined,
dessertRequest: undefined,
generateImage: true
}
2025-11-07T14:44:30: Generating image for menu...
2025-11-07T14:44:47: ✓ Image generated successfully
2025-11-07T14:45:52: === API: POST /api/menus ===
2025-11-07T14:45:52: Request body: {
id: 'saesonbetonet-gourmetmenu',
title: 'Sæsonbetonet Gourmetmenu',
ingredientsCount: 12
}
2025-11-07T14:45:52: ✓ 12 ingredients saved
2025-11-07T14:45:52: ✓ Menu created successfully: saesonbetonet-gourmetmenu
2025-11-07T14:45:59: Middleware - Path: /admin/menu-generator
2025-11-07T14:45:59: Middleware - Token present: true
2025-11-07T14:45:59: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:45:59: Middleware - Token valid, user: brotha
2025-11-07T14:45:59: Middleware - Path: /admin/menus
2025-11-07T14:45:59: Middleware - Token present: true
2025-11-07T14:45:59: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:45:59: Middleware - Token valid, user: brotha
2025-11-07T14:45:59: === API: GET /api/menus ===
2025-11-07T14:45:59: Middleware - Path: /admin/menu-generator
2025-11-07T14:45:59: Middleware - Token present: true
2025-11-07T14:45:59: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:45:59: ✓ Menus fetched: 17
2025-11-07T14:45:59: Middleware - Token valid, user: brotha
2025-11-07T14:45:59: Middleware - Path: /admin/menu-ingredients
2025-11-07T14:45:59: Middleware - Token present: true
2025-11-07T14:45:59: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:45:59: Middleware - Path: /admin/availability
2025-11-07T14:45:59: Middleware - Token present: true
2025-11-07T14:45:59: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:45:59: Middleware - Token valid, user: brotha
2025-11-07T14:45:59: Middleware - Path: /admin/bookings
2025-11-07T14:45:59: Middleware - Token present: true
2025-11-07T14:45:59: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:45:59: Middleware - Token valid, user: brotha
2025-11-07T14:45:59: Middleware - Token valid, user: brotha
2025-11-07T14:46:50: Middleware - Path: /admin/menus
2025-11-07T14:46:50: Middleware - Token present: true
2025-11-07T14:46:50: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:46:50: Middleware - Token valid, user: brotha
2025-11-07T14:48:25: Middleware - Path: /admin/menus
2025-11-07T14:48:25: Middleware - Token present: true
2025-11-07T14:48:25: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:48:25: Middleware - Token valid, user: brotha
2025-11-07T14:48:25: === API: GET /api/menus ===
2025-11-07T14:48:25: ✓ Menus fetched: 17
2025-11-07T14:48:25: Middleware - Path: /admin/menus
2025-11-07T14:48:25: Middleware - Token present: true
2025-11-07T14:48:25: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:48:25: Middleware - Token valid, user: brotha
2025-11-07T14:48:25: === API: GET /api/menus ===
2025-11-07T14:48:25: ✓ Menus fetched: 17
2025-11-07T14:48:26: Middleware - Path: /admin/menus
2025-11-07T14:48:26: Middleware - Token present: true
2025-11-07T14:48:26: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:48:26: Middleware - Token valid, user: brotha
2025-11-07T14:48:26: === API: GET /api/menus ===
2025-11-07T14:48:26: ✓ Menus fetched: 17
2025-11-07T14:48:26: Middleware - Path: /admin/menus
2025-11-07T14:48:26: Middleware - Token present: true
2025-11-07T14:48:26: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:48:26: Middleware - Token valid, user: brotha
2025-11-07T14:48:26: Middleware - Path: /admin/menus
2025-11-07T14:48:26: Middleware - Token present: true
2025-11-07T14:48:26: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:48:26: Middleware - Token valid, user: brotha
2025-11-07T14:48:26: === API: GET /api/menus ===
2025-11-07T14:48:26: ✓ Menus fetched: 17
2025-11-07T14:48:47: Middleware - Path: /admin/menus
2025-11-07T14:48:47: Middleware - Token present: true
2025-11-07T14:48:47: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:48:47: Middleware - Token valid, user: brotha
2025-11-07T14:48:47: === API: GET /api/menus ===
2025-11-07T14:48:47: ✓ Menus fetched: 17
2025-11-07T14:48:48: Middleware - Path: /admin/menus
2025-11-07T14:48:48: Middleware - Token present: true
2025-11-07T14:48:48: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:48:48: Middleware - Token valid, user: brotha
2025-11-07T14:48:48: === API: GET /api/menus ===
2025-11-07T14:48:48: ✓ Menus fetched: 17
2025-11-07T14:48:48: Middleware - Path: /admin/menus
2025-11-07T14:48:48: Middleware - Token present: true
2025-11-07T14:48:48: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:48:48: Middleware - Token valid, user: brotha
2025-11-07T14:48:48: === API: GET /api/menus ===
2025-11-07T14:48:48: ✓ Menus fetched: 17
2025-11-07T14:48:48: Middleware - Path: /admin/menus
2025-11-07T14:48:48: Middleware - Token present: true
2025-11-07T14:48:48: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:48:48: Middleware - Token valid, user: brotha
2025-11-07T14:48:48: === API: GET /api/menus ===
2025-11-07T14:48:48: ✓ Menus fetched: 17
2025-11-07T14:49:56: > Ready on http://localhost:3000
2025-11-07T14:50:13: Middleware - Path: /admin/menus
2025-11-07T14:50:13: Middleware - Token present: true
2025-11-07T14:50:13: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:50:13: Middleware - Token valid, user: brotha
2025-11-07T14:50:13: === API: GET /api/menus ===
2025-11-07T14:50:13: ✓ Menus fetched: 17
2025-11-07T14:50:14: Middleware - Path: /admin/menus
2025-11-07T14:50:14: Middleware - Token present: true
2025-11-07T14:50:14: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:50:14: Middleware - Token valid, user: brotha
2025-11-07T14:50:14: === API: GET /api/menus ===
2025-11-07T14:50:14: ✓ Menus fetched: 17
2025-11-07T14:51:31: Middleware - Path: /admin/menus
2025-11-07T14:51:31: Middleware - Token present: true
2025-11-07T14:51:31: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:51:31: Middleware - Token valid, user: brotha
2025-11-07T14:51:31: === API: GET /api/menus ===
2025-11-07T14:51:31: ✓ Menus fetched: 17
2025-11-07T14:51:37: === API: GET /api/availability/weekly ===
2025-11-07T14:51:37: === API: GET /api/availability/blocked ===
2025-11-07T14:51:37: ✓ Weekly availability fetched: 3 slots
2025-11-07T14:51:37: ✓ Blocked dates fetched: 3 dates
2025-11-07T14:51:37: === API: GET /api/availability/weekly ===
2025-11-07T14:51:37: === API: GET /api/availability/blocked ===
2025-11-07T14:51:37: ✓ Weekly availability fetched: 3 slots
2025-11-07T14:51:37: ✓ Blocked dates fetched: 3 dates
2025-11-07T14:52:44: > Ready on http://localhost:3000
2025-11-07T14:52:49: Middleware - Path: /admin/menus
2025-11-07T14:52:49: Middleware - Token present: true
2025-11-07T14:52:49: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:52:49: Middleware - Token valid, user: brotha
2025-11-07T14:52:50: === API: GET /api/menus ===
2025-11-07T14:52:50: ✓ Menus fetched: 17
2025-11-07T14:52:55: Middleware - Path: /admin/menus
2025-11-07T14:52:55: Middleware - Token present: true
2025-11-07T14:52:55: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:52:55: Middleware - Token valid, user: brotha
2025-11-07T14:53:35: Middleware - Path: /admin/menus
2025-11-07T14:53:35: Middleware - Token present: true
2025-11-07T14:53:35: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:53:35: Middleware - Token valid, user: brotha
2025-11-07T14:53:35: === API: GET /api/menus ===
2025-11-07T14:53:35: ✓ Menus fetched: 17
2025-11-07T14:53:36: Middleware - Path: /admin/menus
2025-11-07T14:53:36: Middleware - Token present: true
2025-11-07T14:53:36: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:53:36: Middleware - Token valid, user: brotha
2025-11-07T14:53:36: === API: GET /api/menus ===
2025-11-07T14:53:36: ✓ Menus fetched: 17
2025-11-07T14:53:54: Middleware - Path: /admin/menu-generator
2025-11-07T14:53:54: Middleware - Token present: true
2025-11-07T14:53:54: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:53:54: Middleware - Token valid, user: brotha
2025-11-07T14:53:57: Middleware - Path: /admin/menus
2025-11-07T14:53:57: Middleware - Token present: true
2025-11-07T14:53:57: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:53:57: Middleware - Token valid, user: brotha
2025-11-07T14:53:59: > Ready on http://localhost:3000
2025-11-07T14:54:26: Middleware - Path: /admin/menus
2025-11-07T14:54:26: Middleware - Token present: true
2025-11-07T14:54:26: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:54:26: Middleware - Token valid, user: brotha
2025-11-07T14:54:26: === API: GET /api/menus ===
2025-11-07T14:54:26: ✓ Menus fetched: 17
2025-11-07T14:55:05: Middleware - Path: /admin/menus
2025-11-07T14:55:05: Middleware - Token present: true
2025-11-07T14:55:05: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:55:05: Middleware - Token valid, user: brotha
2025-11-07T14:55:05: === API: GET /api/menus ===
2025-11-07T14:55:05: ✓ Menus fetched: 17
2025-11-07T14:55:05: Middleware - Path: /admin/menus
2025-11-07T14:55:05: Middleware - Token present: true
2025-11-07T14:55:05: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:55:05: Middleware - Token valid, user: brotha
2025-11-07T14:55:05: === API: GET /api/menus ===
2025-11-07T14:55:05: ✓ Menus fetched: 17
2025-11-07T14:55:05: Middleware - Path: /admin/menus
2025-11-07T14:55:05: Middleware - Token present: true
2025-11-07T14:55:05: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:55:05: Middleware - Token valid, user: brotha
2025-11-07T14:55:05: === API: GET /api/menus ===
2025-11-07T14:55:05: ✓ Menus fetched: 17
2025-11-07T14:55:22: Middleware - Path: /admin/menu-ingredients
2025-11-07T14:55:22: Middleware - Token present: true
2025-11-07T14:55:22: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:55:22: Middleware - Token valid, user: brotha
2025-11-07T14:55:23: Middleware - Path: /admin/menus
2025-11-07T14:55:23: Middleware - Token present: true
2025-11-07T14:55:23: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:55:23: Middleware - Token valid, user: brotha
2025-11-07T14:55:23: Middleware - Path: /admin/menu-generator
2025-11-07T14:55:23: Middleware - Token present: true
2025-11-07T14:55:23: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:55:23: Middleware - Token valid, user: brotha
2025-11-07T14:55:23: Middleware - Path: /admin/bookings
2025-11-07T14:55:23: Middleware - Token present: true
2025-11-07T14:55:23: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:55:23: Middleware - Token valid, user: brotha
2025-11-07T14:56:02: > Ready on http://localhost:3000
2025-11-07T14:59:25: Middleware - Path: /admin/menu-ingredients
2025-11-07T14:59:25: Middleware - Token present: true
2025-11-07T14:59:25: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T14:59:25: Middleware - Token valid, user: brotha
2025-11-07T15:00:03: > Ready on http://localhost:3000
2025-11-07T15:00:11: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:00:11: Middleware - Token present: true
2025-11-07T15:00:11: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:00:11: Middleware - Token valid, user: brotha
2025-11-07T15:00:11: Middleware - Path: /admin/ingredients
2025-11-07T15:00:11: Middleware - Token present: true
2025-11-07T15:00:11: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:00:11: Middleware - Token valid, user: brotha
2025-11-07T15:00:12: === API: GET /api/ingredients ===
2025-11-07T15:00:12: ✓ Ingredients fetched: 13
2025-11-07T15:00:58: === API: GET /api/availability/weekly ===
2025-11-07T15:00:58: === API: GET /api/availability/blocked ===
2025-11-07T15:00:58: ✓ Weekly availability fetched: 3 slots
2025-11-07T15:00:58: ✓ Blocked dates fetched: 3 dates
2025-11-07T15:00:58: === API: GET /api/availability/weekly ===
2025-11-07T15:00:58: === API: GET /api/availability/blocked ===
2025-11-07T15:00:58: ✓ Weekly availability fetched: 3 slots
2025-11-07T15:00:58: ✓ Blocked dates fetched: 3 dates
2025-11-07T15:02:18: > Ready on http://localhost:3000
2025-11-07T15:03:37: > Ready on http://localhost:3000
2025-11-07T15:06:01: Middleware - Path: /admin/menus
2025-11-07T15:06:01: Middleware - Token present: true
2025-11-07T15:06:01: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:06:01: Middleware - Token valid, user: brotha
2025-11-07T15:06:01: === API: GET /api/menus ===
2025-11-07T15:06:01: Middleware - Path: /admin/ingredients
2025-11-07T15:06:01: Middleware - Token present: true
2025-11-07T15:06:01: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:06:01: Middleware - Token valid, user: brotha
2025-11-07T15:06:01: ✓ Menus fetched: 17
2025-11-07T15:06:01: Middleware - Path: /admin/menus
2025-11-07T15:06:01: Middleware - Token present: true
2025-11-07T15:06:01: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:06:01: Middleware - Token valid, user: brotha
2025-11-07T15:06:01: === API: GET /api/menus ===
2025-11-07T15:06:01: ✓ Menus fetched: 17
2025-11-07T15:06:30: === Menu Generator API ===
2025-11-07T15:06:30: Request: {
prompt: undefined,
courses: undefined,
style: undefined,
dietary: undefined,
sidesRequest: undefined,
starterRequest: undefined,
mainRequest: undefined,
dessertRequest: undefined,
generateImage: true
}
2025-11-07T15:06:30: Generating image for menu...
2025-11-07T15:06:48: ✓ Image generated successfully
2025-11-07T15:06:58: Middleware - Path: /admin/menu-generator
2025-11-07T15:06:58: Middleware - Token present: true
2025-11-07T15:06:58: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:06:58: Middleware - Token valid, user: brotha
2025-11-07T15:06:59: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:06:59: Middleware - Token present: true
2025-11-07T15:06:59: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:06:59: Middleware - Token valid, user: brotha
2025-11-07T15:07:00: === API: PUT /api/menus ===
2025-11-07T15:07:00: Request body: { id: 'saesonbetonet-gourmetmenu', name: undefined }
2025-11-07T15:07:00: ✓ Menu updated successfully: saesonbetonet-gourmetmenu Affected rows: 1
2025-11-07T15:07:16: === API LOGIN REQUEST START ===
2025-11-07T15:07:16: Timestamp: 2025-11-07T14:07:16.828Z
2025-11-07T15:07:16: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:07:16: Connecting to database...
2025-11-07T15:07:16: Database connected
2025-11-07T15:07:16: Querying user from database: brotha
2025-11-07T15:07:16: Query result: found 1 users
2025-11-07T15:07:16: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:07:16: Verifying password with salt...
2025-11-07T15:07:16: Password valid: true
2025-11-07T15:07:16: Creating JWT token...
2025-11-07T15:07:16: JWT token created, length: 239
2025-11-07T15:07:16: Setting authToken cookie...
2025-11-07T15:07:16: Cookie set successfully
2025-11-07T15:07:16: === API LOGIN SUCCESS ===
2025-11-07T15:07:16: Database connection closed
2025-11-07T15:07:17: Middleware - Path: /admin
2025-11-07T15:07:17: Middleware - Token present: true
2025-11-07T15:07:17: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:07:17: Middleware - Token valid, user: brotha
2025-11-07T15:07:18: Middleware - Path: /admin/availability
2025-11-07T15:07:18: Middleware - Token present: true
2025-11-07T15:07:18: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:07:18: Middleware - Token valid, user: brotha
2025-11-07T15:07:20: === API LOGIN REQUEST START ===
2025-11-07T15:07:20: Timestamp: 2025-11-07T14:07:20.849Z
2025-11-07T15:07:20: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:07:20: Connecting to database...
2025-11-07T15:07:20: Database connected
2025-11-07T15:07:20: Querying user from database: brotha
2025-11-07T15:07:20: Query result: found 1 users
2025-11-07T15:07:20: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:07:20: Verifying password with salt...
2025-11-07T15:07:21: Password valid: true
2025-11-07T15:07:21: Creating JWT token...
2025-11-07T15:07:21: JWT token created, length: 239
2025-11-07T15:07:21: Setting authToken cookie...
2025-11-07T15:07:21: Cookie set successfully
2025-11-07T15:07:21: === API LOGIN SUCCESS ===
2025-11-07T15:07:21: Database connection closed
2025-11-07T15:07:21: Middleware - Path: /admin
2025-11-07T15:07:21: Middleware - Token present: true
2025-11-07T15:07:21: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:07:21: Middleware - Token valid, user: brotha
2025-11-07T15:07:23: Middleware - Path: /admin
2025-11-07T15:07:23: Middleware - Token present: true
2025-11-07T15:07:23: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:07:23: Middleware - Token valid, user: brotha
2025-11-07T15:07:23: === API: GET /api/menus ===
2025-11-07T15:07:23: ✓ Menus fetched: 17
2025-11-07T15:07:23: Middleware - Path: /admin/menus
2025-11-07T15:07:23: Middleware - Token present: true
2025-11-07T15:07:23: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:07:23: Middleware - Path: /admin/ingredients
2025-11-07T15:07:23: Middleware - Token present: true
2025-11-07T15:07:23: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:07:23: Middleware - Token valid, user: brotha
2025-11-07T15:07:23: Middleware - Token valid, user: brotha
2025-11-07T15:07:31: === API: GET /api/menus ===
2025-11-07T15:07:31: ✓ Menus fetched: 17
2025-11-07T15:07:34: Middleware - Path: /admin
2025-11-07T15:07:34: Middleware - Token present: true
2025-11-07T15:07:34: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:07:34: Middleware - Token valid, user: brotha
2025-11-07T15:07:34: === API: GET /api/menus ===
2025-11-07T15:07:34: ✓ Menus fetched: 17
2025-11-07T15:08:43: Middleware - Path: /admin/availability
2025-11-07T15:08:43: Middleware - Token present: false
2025-11-07T15:08:43: Middleware - Token value: undefined...
2025-11-07T15:08:43: Middleware - No token, redirecting to login
2025-11-07T15:09:51: === API: GET /api/availability/blocked ===
2025-11-07T15:09:51: ✓ Blocked dates fetched: 3 dates
2025-11-07T15:15:07: > Ready on http://localhost:3000
2025-11-07T15:16:01: > Ready on http://localhost:3000
2025-11-07T15:18:42: Middleware - Path: /admin
2025-11-07T15:18:42: Middleware - Token present: true
2025-11-07T15:18:42: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:18:42: Middleware - Token valid, user: brotha
2025-11-07T15:18:42: === API: GET /api/menus ===
2025-11-07T15:18:42: Middleware - Path: /admin/menus
2025-11-07T15:18:42: Middleware - Token present: true
2025-11-07T15:18:42: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:18:42: Middleware - Path: /admin/menu-generator
2025-11-07T15:18:42: Middleware - Token present: true
2025-11-07T15:18:42: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:18:42: Middleware - Path: /admin/ingredients
2025-11-07T15:18:42: Middleware - Token present: true
2025-11-07T15:18:42: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:18:42: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:18:42: Middleware - Token present: true
2025-11-07T15:18:42: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:18:42: Middleware - Path: /admin/availability
2025-11-07T15:18:42: Middleware - Token present: true
2025-11-07T15:18:42: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:18:42: Middleware - Token valid, user: brotha
2025-11-07T15:18:42: Middleware - Token valid, user: brotha
2025-11-07T15:18:42: Middleware - Token valid, user: brotha
2025-11-07T15:18:42: Middleware - Token valid, user: brotha
2025-11-07T15:18:42: Middleware - Token valid, user: brotha
2025-11-07T15:18:42: ✓ Menus fetched: 17
2025-11-07T15:18:49: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:18:49: Middleware - Token present: true
2025-11-07T15:18:49: Middleware - Token value: eyJhbGciOiJIUzI1NiIs...
2025-11-07T15:18:49: Middleware - Token valid, user: brotha
2025-11-07T15:19:21: === API LOGIN REQUEST START ===
2025-11-07T15:19:21: Timestamp: 2025-11-07T14:19:21.684Z
2025-11-07T15:19:21: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:19:21: Connecting to database...
2025-11-07T15:19:21: Database connected
2025-11-07T15:19:21: Querying user from database: brotha
2025-11-07T15:19:21: Query result: found 1 users
2025-11-07T15:19:21: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:19:21: Verifying password with salt...
2025-11-07T15:19:21: Password valid: true
2025-11-07T15:19:21: Creating JWT token...
2025-11-07T15:19:21: JWT token created, length: 239
2025-11-07T15:19:21: Setting authToken cookie...
2025-11-07T15:19:21: Cookie set successfully
2025-11-07T15:19:21: === API LOGIN SUCCESS ===
2025-11-07T15:19:21: Database connection closed
2025-11-07T15:21:11: > Ready on http://localhost:3000
2025-11-07T15:22:26: Middleware - Path: /admin
2025-11-07T15:22:26: Middleware - Token present: true
2025-11-07T15:22:26: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:22:26: Middleware - sec-fetch-mode: navigate
2025-11-07T15:22:26: Middleware - Token valid, user: brotha
2025-11-07T15:22:27: Middleware - Path: /admin
2025-11-07T15:22:27: Middleware - Token present: true
2025-11-07T15:22:27: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:22:27: Middleware - sec-fetch-mode: navigate
2025-11-07T15:22:27: Middleware - Token valid, user: brotha
2025-11-07T15:22:27: === API: GET /api/menus ===
2025-11-07T15:22:27: ✓ Menus fetched: 17
2025-11-07T15:22:27: Middleware - Path: /admin
2025-11-07T15:22:27: Middleware - Token present: true
2025-11-07T15:22:27: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:22:27: Middleware - sec-fetch-mode: navigate
2025-11-07T15:22:27: Middleware - Token valid, user: brotha
2025-11-07T15:22:27: === API: GET /api/menus ===
2025-11-07T15:22:27: ✓ Menus fetched: 17
2025-11-07T15:22:27: Middleware - Path: /admin
2025-11-07T15:22:27: Middleware - Token present: true
2025-11-07T15:22:27: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:22:27: Middleware - sec-fetch-mode: navigate
2025-11-07T15:22:27: Middleware - Token valid, user: brotha
2025-11-07T15:22:27: Middleware - Path: /admin
2025-11-07T15:22:27: Middleware - Token present: true
2025-11-07T15:22:27: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:22:27: Middleware - sec-fetch-mode: navigate
2025-11-07T15:22:27: Middleware - Token valid, user: brotha
2025-11-07T15:22:27: === API: GET /api/menus ===
2025-11-07T15:22:27: ✓ Menus fetched: 17
2025-11-07T15:22:28: Middleware - Path: /admin
2025-11-07T15:22:28: Middleware - Token present: true
2025-11-07T15:22:28: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:22:28: Middleware - sec-fetch-mode: navigate
2025-11-07T15:22:28: Middleware - Token valid, user: brotha
2025-11-07T15:22:28: === API: GET /api/menus ===
2025-11-07T15:22:28: ✓ Menus fetched: 17
2025-11-07T15:22:28: Middleware - Path: /admin
2025-11-07T15:22:28: Middleware - Token present: true
2025-11-07T15:22:28: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:22:28: Middleware - sec-fetch-mode: navigate
2025-11-07T15:22:28: Middleware - Token valid, user: brotha
2025-11-07T15:22:30: Middleware - Path: /admin/availability
2025-11-07T15:22:30: Middleware - Token present: true
2025-11-07T15:22:30: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:22:30: Middleware - sec-fetch-mode: navigate
2025-11-07T15:22:30: Middleware - Token valid, user: brotha
2025-11-07T15:22:34: === API LOGIN REQUEST START ===
2025-11-07T15:22:34: Timestamp: 2025-11-07T14:22:34.108Z
2025-11-07T15:22:34: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:22:34: Connecting to database...
2025-11-07T15:22:34: Database connected
2025-11-07T15:22:34: Querying user from database: brotha
2025-11-07T15:22:34: Query result: found 1 users
2025-11-07T15:22:34: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:22:34: Verifying password with salt...
2025-11-07T15:22:34: Password valid: true
2025-11-07T15:22:34: Creating JWT token...
2025-11-07T15:22:34: JWT token created, length: 239
2025-11-07T15:22:34: Setting authToken cookie...
2025-11-07T15:22:34: Cookie set successfully
2025-11-07T15:22:34: === API LOGIN SUCCESS ===
2025-11-07T15:22:34: Database connection closed
2025-11-07T15:22:45: === API LOGIN REQUEST START ===
2025-11-07T15:22:45: Timestamp: 2025-11-07T14:22:45.211Z
2025-11-07T15:22:45: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:22:45: Connecting to database...
2025-11-07T15:22:45: Database connected
2025-11-07T15:22:45: Querying user from database: brotha
2025-11-07T15:22:45: Query result: found 1 users
2025-11-07T15:22:45: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:22:45: Verifying password with salt...
2025-11-07T15:22:45: Password valid: true
2025-11-07T15:22:45: Creating JWT token...
2025-11-07T15:22:45: JWT token created, length: 239
2025-11-07T15:22:45: Setting authToken cookie...
2025-11-07T15:22:45: Cookie set successfully
2025-11-07T15:22:45: === API LOGIN SUCCESS ===
2025-11-07T15:22:45: Database connection closed
2025-11-07T15:25:54: === API LOGIN REQUEST START ===
2025-11-07T15:25:54: Timestamp: 2025-11-07T14:25:54.400Z
2025-11-07T15:25:54: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:25:54: Connecting to database...
2025-11-07T15:25:54: Database connected
2025-11-07T15:25:54: Querying user from database: brotha
2025-11-07T15:25:54: Query result: found 1 users
2025-11-07T15:25:54: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:25:54: Verifying password with salt...
2025-11-07T15:25:54: Password valid: true
2025-11-07T15:25:54: Creating JWT token...
2025-11-07T15:25:54: JWT token created, length: 239
2025-11-07T15:25:54: Setting authToken cookie...
2025-11-07T15:25:54: Cookie set successfully
2025-11-07T15:25:54: === API LOGIN SUCCESS ===
2025-11-07T15:25:54: Database connection closed
2025-11-07T15:25:54: Middleware - Path: /admin
2025-11-07T15:25:54: Middleware - Token present: true
2025-11-07T15:25:54: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:25:54: Middleware - sec-fetch-mode: navigate
2025-11-07T15:25:54: Middleware - Token valid, user: brotha
2025-11-07T15:27:12: > Ready on http://localhost:3000
2025-11-07T15:27:26: Middleware - Path: /admin
2025-11-07T15:27:26: Middleware - Token present: true
2025-11-07T15:27:26: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:27:26: Middleware - sec-fetch-mode: navigate
2025-11-07T15:27:26: Middleware - Token valid, user: brotha
2025-11-07T15:27:26: === API: GET /api/menus ===
2025-11-07T15:27:27: ✓ Menus fetched: 17
2025-11-07T15:27:36: Middleware - Path: /admin/availability
2025-11-07T15:27:36: Middleware - Token present: true
2025-11-07T15:27:36: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:27:36: Middleware - sec-fetch-mode: navigate
2025-11-07T15:27:36: Middleware - Token valid, user: brotha
2025-11-07T15:29:56: > Ready on http://localhost:3000
2025-11-07T15:30:57: === API LOGIN REQUEST START ===
2025-11-07T15:30:57: Timestamp: 2025-11-07T14:30:57.990Z
2025-11-07T15:30:57: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:30:57: Connecting to database...
2025-11-07T15:30:58: Database connected
2025-11-07T15:30:58: Querying user from database: brotha
2025-11-07T15:30:58: Query result: found 1 users
2025-11-07T15:30:58: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:30:58: Verifying password with salt...
2025-11-07T15:30:58: Password valid: true
2025-11-07T15:30:58: Creating JWT token...
2025-11-07T15:30:58: JWT token created, length: 239
2025-11-07T15:30:58: Setting authToken cookie...
2025-11-07T15:30:58: Cookie set successfully
2025-11-07T15:30:58: === API LOGIN SUCCESS ===
2025-11-07T15:30:58: Database connection closed
2025-11-07T15:30:58: Middleware - Path: /admin
2025-11-07T15:30:58: Middleware - Token present: true
2025-11-07T15:30:58: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:30:58: Middleware - sec-fetch-mode: navigate
2025-11-07T15:30:58: Middleware - Token valid, user: brotha
2025-11-07T15:30:58: Middleware - Path: /admin/bookings
2025-11-07T15:30:58: Middleware - Token present: true
2025-11-07T15:30:58: Middleware - Accept header: */*
2025-11-07T15:30:58: Middleware - sec-fetch-mode: cors
2025-11-07T15:30:58: Middleware - Token valid, user: brotha
2025-11-07T15:32:10: > Ready on http://localhost:3000
2025-11-07T15:33:09: > Ready on http://localhost:3000
2025-11-07T15:35:53: Middleware - Path: /admin
2025-11-07T15:35:53: Middleware - Token present: true
2025-11-07T15:35:53: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:35:53: Middleware - sec-fetch-mode: navigate
2025-11-07T15:35:53: Middleware - Token valid, user: brotha
2025-11-07T15:36:00: Middleware - Path: /admin
2025-11-07T15:36:00: Middleware - Token present: true
2025-11-07T15:36:00: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:36:00: Middleware - sec-fetch-mode: navigate
2025-11-07T15:36:00: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: Middleware - Path: /admin
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:36:01: Middleware - sec-fetch-mode: navigate
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: Middleware - Path: /admin/bookings
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: */*
2025-11-07T15:36:01: Middleware - sec-fetch-mode: cors
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: === API: GET /api/menus ===
2025-11-07T15:36:01: Middleware - Path: /admin/availability
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: */*
2025-11-07T15:36:01: Middleware - sec-fetch-mode: cors
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: Middleware - Path: /admin
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:36:01: Middleware - sec-fetch-mode: navigate
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: Middleware - Path: /admin/menus
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: */*
2025-11-07T15:36:01: Middleware - sec-fetch-mode: cors
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: Middleware - Path: /admin/menu-generator
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: */*
2025-11-07T15:36:01: Middleware - sec-fetch-mode: cors
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: Middleware - Path: /admin/ingredients
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: */*
2025-11-07T15:36:01: Middleware - sec-fetch-mode: cors
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: ✓ Menus fetched: 17
2025-11-07T15:36:01: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: */*
2025-11-07T15:36:01: Middleware - sec-fetch-mode: cors
2025-11-07T15:36:01: Middleware - Path: /admin/bookings
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: */*
2025-11-07T15:36:01: Middleware - sec-fetch-mode: cors
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: Middleware - Path: /admin
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:36:01: Middleware - sec-fetch-mode: navigate
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: Middleware - Path: /admin/bookings
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: */*
2025-11-07T15:36:01: Middleware - sec-fetch-mode: cors
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:01: === API: GET /api/menus ===
2025-11-07T15:36:01: ✓ Menus fetched: 17
2025-11-07T15:36:01: Middleware - Path: /admin/availability
2025-11-07T15:36:01: Middleware - Token present: true
2025-11-07T15:36:01: Middleware - Accept header: */*
2025-11-07T15:36:01: Middleware - sec-fetch-mode: cors
2025-11-07T15:36:01: Middleware - Token valid, user: brotha
2025-11-07T15:36:59: > Ready on http://localhost:3000
2025-11-07T15:37:29: Middleware - Path: /admin
2025-11-07T15:37:29: Middleware - Token present: true
2025-11-07T15:37:29: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:37:29: Middleware - sec-fetch-mode: navigate
2025-11-07T15:37:29: Middleware - Token valid, user: brotha
2025-11-07T15:37:29: === API: GET /api/menus ===
2025-11-07T15:37:29: ✓ Menus fetched: 17
2025-11-07T15:37:30: Middleware - Path: /admin
2025-11-07T15:37:30: Middleware - Token present: true
2025-11-07T15:37:30: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:37:30: Middleware - sec-fetch-mode: navigate
2025-11-07T15:37:30: Middleware - Token valid, user: brotha
2025-11-07T15:37:30: === API: GET /api/menus ===
2025-11-07T15:37:30: ✓ Menus fetched: 17
2025-11-07T15:37:30: Middleware - Path: /admin/bookings
2025-11-07T15:37:30: Middleware - Token present: true
2025-11-07T15:37:30: Middleware - Accept header: */*
2025-11-07T15:37:30: Middleware - sec-fetch-mode: cors
2025-11-07T15:37:30: Middleware - Token valid, user: brotha
2025-11-07T15:38:32: === API LOGIN REQUEST START ===
2025-11-07T15:38:32: Timestamp: 2025-11-07T14:38:32.276Z
2025-11-07T15:38:32: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:38:32: Connecting to database...
2025-11-07T15:38:32: Database connected
2025-11-07T15:38:32: Querying user from database: brotha
2025-11-07T15:38:32: Query result: found 1 users
2025-11-07T15:38:32: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:38:32: Verifying password with salt...
2025-11-07T15:38:32: Password valid: true
2025-11-07T15:38:32: Creating JWT token...
2025-11-07T15:38:32: JWT token created, length: 239
2025-11-07T15:38:32: Setting authToken cookie...
2025-11-07T15:38:32: Cookie set successfully
2025-11-07T15:38:32: === API LOGIN SUCCESS ===
2025-11-07T15:38:32: Database connection closed
2025-11-07T15:38:32: Middleware - Path: /admin
2025-11-07T15:38:32: Middleware - Token present: true
2025-11-07T15:38:32: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
2025-11-07T15:38:32: Middleware - sec-fetch-mode: navigate
2025-11-07T15:38:32: Middleware - Token valid, user: brotha
2025-11-07T15:38:32: === API: GET /api/menus ===
2025-11-07T15:38:32: ✓ Menus fetched: 17
2025-11-07T15:38:32: Middleware - Path: /admin/availability
2025-11-07T15:38:32: Middleware - Token present: true
2025-11-07T15:38:32: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
2025-11-07T15:38:32: Middleware - sec-fetch-mode: navigate
2025-11-07T15:38:32: Middleware - Token valid, user: brotha
2025-11-07T15:38:32: Middleware - Path: /admin/menus
2025-11-07T15:38:32: Middleware - Token present: true
2025-11-07T15:38:32: Middleware - Accept header: */*
2025-11-07T15:38:32: Middleware - sec-fetch-mode: cors
2025-11-07T15:38:32: Middleware - Token valid, user: brotha
2025-11-07T15:38:32: === API: GET /api/availability/blocked ===
2025-11-07T15:38:32: ✓ Blocked dates fetched: 3 dates
2025-11-07T15:38:32: Middleware - Path: /admin/menus
2025-11-07T15:38:32: Middleware - Token present: true
2025-11-07T15:38:32: Middleware - Accept header: */*
2025-11-07T15:38:32: Middleware - sec-fetch-mode: cors
2025-11-07T15:38:32: Middleware - Path: /admin/menu-generator
2025-11-07T15:38:32: Middleware - Token present: true
2025-11-07T15:38:32: Middleware - Accept header: */*
2025-11-07T15:38:32: Middleware - sec-fetch-mode: cors
2025-11-07T15:38:32: Middleware - Path: /admin/ingredients
2025-11-07T15:38:32: Middleware - Token present: true
2025-11-07T15:38:32: Middleware - Accept header: */*
2025-11-07T15:38:32: Middleware - sec-fetch-mode: cors
2025-11-07T15:38:32: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:38:32: Middleware - Token present: true
2025-11-07T15:38:32: Middleware - Accept header: */*
2025-11-07T15:38:32: Middleware - sec-fetch-mode: cors
2025-11-07T15:38:32: Middleware - Path: /admin/bookings
2025-11-07T15:38:32: Middleware - Token present: true
2025-11-07T15:38:32: Middleware - Accept header: */*
2025-11-07T15:38:32: Middleware - sec-fetch-mode: cors
2025-11-07T15:38:32: Middleware - Token valid, user: brotha
2025-11-07T15:38:32: Middleware - Token valid, user: brotha
2025-11-07T15:38:32: Middleware - Token valid, user: brotha
2025-11-07T15:38:32: Middleware - Token valid, user: brotha
2025-11-07T15:38:32: Middleware - Token valid, user: brotha
2025-11-07T15:38:32: === API: DELETE /api/availability/blocked ===
2025-11-07T15:38:32: Request headers: {
accept: '*/*',
'accept-encoding': 'gzip, deflate, br, zstd',
'accept-language': 'en-US',
connection: 'keep-alive',
'content-length': '45',
'content-type': 'application/json',
cookie: 'authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjMxMiwiZXhwIjoxNzYyNjEyNzEyfQ.aBiok4CM57sT6YhI05Y82KDB-cIpQr7ltyg1I3WvWeo',
host: 'localhost:3000',
origin: 'http://localhost:3000',
referer: 'http://localhost:3000/admin/availability',
'sec-ch-ua': '"HeadlessChrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.7390.37 Safari/537.36',
'x-forwarded-for': '::1',
'x-forwarded-host': 'localhost:3000',
'x-forwarded-port': '3000',
'x-forwarded-proto': 'http'
}
2025-11-07T15:38:32: Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjMxMiwiZXhwIjoxNzYyNjEyNzEyfQ.aBiok4CM57sT6YhI05Y82KDB-cIpQr7ltyg1I3WvWeo
2025-11-07T15:38:32: Request body: { date: undefined, id: '57835940-75ac-4ab8-85a2-4c6e000c3e2d' }
2025-11-07T15:38:32: ❌ Missing date in request
2025-11-07T15:41:08: === API LOGIN REQUEST START ===
2025-11-07T15:41:08: Timestamp: 2025-11-07T14:41:08.958Z
2025-11-07T15:41:08: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:41:08: Connecting to database...
2025-11-07T15:41:08: Database connected
2025-11-07T15:41:08: Querying user from database: brotha
2025-11-07T15:41:08: Query result: found 1 users
2025-11-07T15:41:08: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:41:08: Verifying password with salt...
2025-11-07T15:41:09: Password valid: true
2025-11-07T15:41:09: Creating JWT token...
2025-11-07T15:41:09: JWT token created, length: 239
2025-11-07T15:41:09: Setting authToken cookie...
2025-11-07T15:41:09: Cookie set successfully
2025-11-07T15:41:09: === API LOGIN SUCCESS ===
2025-11-07T15:41:09: Database connection closed
2025-11-07T15:41:09: Middleware - Path: /admin
2025-11-07T15:41:09: Middleware - Token present: true
2025-11-07T15:41:09: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
2025-11-07T15:41:09: Middleware - sec-fetch-mode: navigate
2025-11-07T15:41:09: Middleware - Token valid, user: brotha
2025-11-07T15:41:09: === API: GET /api/menus ===
2025-11-07T15:41:09: ✓ Menus fetched: 17
2025-11-07T15:41:09: Middleware - Path: /admin/availability
2025-11-07T15:41:09: Middleware - Token present: true
2025-11-07T15:41:09: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
2025-11-07T15:41:09: Middleware - sec-fetch-mode: navigate
2025-11-07T15:41:09: Middleware - Token valid, user: brotha
2025-11-07T15:41:09: === API: GET /api/availability/blocked ===
2025-11-07T15:41:09: ✓ Blocked dates fetched: 3 dates
2025-11-07T15:41:09: Middleware - Path: /admin/menus
2025-11-07T15:41:09: Middleware - Token present: true
2025-11-07T15:41:09: Middleware - Accept header: */*
2025-11-07T15:41:09: Middleware - sec-fetch-mode: cors
2025-11-07T15:41:09: Middleware - Path: /admin/menu-generator
2025-11-07T15:41:09: Middleware - Token present: true
2025-11-07T15:41:09: Middleware - Accept header: */*
2025-11-07T15:41:09: Middleware - sec-fetch-mode: cors
2025-11-07T15:41:09: Middleware - Token valid, user: brotha
2025-11-07T15:41:09: Middleware - Token valid, user: brotha
2025-11-07T15:41:09: Middleware - Path: /admin/ingredients
2025-11-07T15:41:09: Middleware - Token present: true
2025-11-07T15:41:09: Middleware - Accept header: */*
2025-11-07T15:41:09: Middleware - sec-fetch-mode: cors
2025-11-07T15:41:09: Middleware - Token valid, user: brotha
2025-11-07T15:41:09: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:41:09: Middleware - Token present: true
2025-11-07T15:41:09: Middleware - Accept header: */*
2025-11-07T15:41:09: Middleware - sec-fetch-mode: cors
2025-11-07T15:41:09: Middleware - Token valid, user: brotha
2025-11-07T15:41:09: Middleware - Path: /admin/bookings
2025-11-07T15:41:09: Middleware - Token present: true
2025-11-07T15:41:09: Middleware - Accept header: */*
2025-11-07T15:41:09: Middleware - sec-fetch-mode: cors
2025-11-07T15:41:09: Middleware - Token valid, user: brotha
2025-11-07T15:41:09: === API: DELETE /api/availability/blocked ===
2025-11-07T15:41:09: Request headers: {
accept: '*/*',
'accept-encoding': 'gzip, deflate, br, zstd',
'accept-language': 'en-US',
connection: 'keep-alive',
'content-length': '45',
'content-type': 'application/json',
cookie: 'authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjQ2OSwiZXhwIjoxNzYyNjEyODY5fQ.EEiypfYI6TVbi2-syYY-SFxVhhjnoNJvN6CBTMPajzI',
host: 'localhost:3000',
origin: 'http://localhost:3000',
referer: 'http://localhost:3000/admin/availability',
'sec-ch-ua': '"HeadlessChrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.7390.37 Safari/537.36',
'x-forwarded-for': '::1',
'x-forwarded-host': 'localhost:3000',
'x-forwarded-port': '3000',
'x-forwarded-proto': 'http'
}
2025-11-07T15:41:09: Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjQ2OSwiZXhwIjoxNzYyNjEyODY5fQ.EEiypfYI6TVbi2-syYY-SFxVhhjnoNJvN6CBTMPajzI
2025-11-07T15:41:09: Request body: { date: undefined, id: '57835940-75ac-4ab8-85a2-4c6e000c3e2d' }
2025-11-07T15:41:09: ❌ Missing date in request
2025-11-07T15:43:21: > Ready on http://localhost:3000
2025-11-07T15:44:01: > Ready on http://localhost:3000
2025-11-07T15:44:20: === API LOGIN REQUEST START ===
2025-11-07T15:44:20: Timestamp: 2025-11-07T14:44:20.603Z
2025-11-07T15:44:20: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:44:20: Connecting to database...
2025-11-07T15:44:20: Database connected
2025-11-07T15:44:20: Querying user from database: brotha
2025-11-07T15:44:20: Query result: found 1 users
2025-11-07T15:44:20: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:44:20: Verifying password with salt...
2025-11-07T15:44:20: Password valid: true
2025-11-07T15:44:20: Creating JWT token...
2025-11-07T15:44:20: JWT token created, length: 239
2025-11-07T15:44:20: Setting authToken cookie...
2025-11-07T15:44:20: Cookie set successfully
2025-11-07T15:44:20: === API LOGIN SUCCESS ===
2025-11-07T15:44:20: Database connection closed
2025-11-07T15:44:20: Middleware - Path: /admin
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
2025-11-07T15:44:20: Middleware - sec-fetch-mode: navigate
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: === API: GET /api/menus ===
2025-11-07T15:44:20: Middleware - Path: /admin/menus
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: */*
2025-11-07T15:44:20: Middleware - sec-fetch-mode: cors
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Path: /admin/availability
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
2025-11-07T15:44:20: Middleware - sec-fetch-mode: navigate
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Path: /admin/menu-generator
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: */*
2025-11-07T15:44:20: Middleware - sec-fetch-mode: cors
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Path: /admin/ingredients
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: */*
2025-11-07T15:44:20: Middleware - sec-fetch-mode: cors
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: */*
2025-11-07T15:44:20: Middleware - sec-fetch-mode: cors
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: ✓ Menus fetched: 17
2025-11-07T15:44:20: Middleware - Path: /admin/availability
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: */*
2025-11-07T15:44:20: Middleware - sec-fetch-mode: cors
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: === API: GET /api/availability/blocked ===
2025-11-07T15:44:20: ✓ Blocked dates fetched: 3 dates
2025-11-07T15:44:20: Middleware - Path: /admin/menus
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: */*
2025-11-07T15:44:20: Middleware - sec-fetch-mode: cors
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Path: /admin/menu-generator
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: */*
2025-11-07T15:44:20: Middleware - sec-fetch-mode: cors
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Path: /admin/ingredients
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: */*
2025-11-07T15:44:20: Middleware - sec-fetch-mode: cors
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: */*
2025-11-07T15:44:20: Middleware - sec-fetch-mode: cors
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Path: /admin/bookings
2025-11-07T15:44:20: Middleware - Token present: true
2025-11-07T15:44:20: Middleware - Accept header: */*
2025-11-07T15:44:20: Middleware - sec-fetch-mode: cors
2025-11-07T15:44:20: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: Middleware - Token valid, user: brotha
2025-11-07T15:44:20: === API: DELETE /api/availability/blocked ===
2025-11-07T15:44:20: Request headers: {
accept: '*/*',
'accept-encoding': 'gzip, deflate, br, zstd',
'accept-language': 'en-US',
connection: 'keep-alive',
'content-length': '45',
'content-type': 'application/json',
cookie: 'authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA',
host: 'localhost:3000',
origin: 'http://localhost:3000',
referer: 'http://localhost:3000/admin/availability',
'sec-ch-ua': '"HeadlessChrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.7390.37 Safari/537.36',
'x-forwarded-for': '::1',
'x-forwarded-host': 'localhost:3000',
'x-forwarded-port': '3000',
'x-forwarded-proto': 'http'
}
2025-11-07T15:44:20: Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjY2MCwiZXhwIjoxNzYyNjEzMDYwfQ.MAW5dv5d5sWh4afBpwNJEpLe1kdOJVlL-XxGVH9_uxA
2025-11-07T15:44:20: Request body: { date: undefined, id: '57835940-75ac-4ab8-85a2-4c6e000c3e2d' }
2025-11-07T15:44:20: ❌ Missing date in request
2025-11-07T15:45:17: === API LOGIN REQUEST START ===
2025-11-07T15:45:17: Timestamp: 2025-11-07T14:45:17.710Z
2025-11-07T15:45:17: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:45:17: Connecting to database...
2025-11-07T15:45:17: Database connected
2025-11-07T15:45:17: Querying user from database: brotha
2025-11-07T15:45:17: Query result: found 1 users
2025-11-07T15:45:17: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:45:17: Verifying password with salt...
2025-11-07T15:45:17: Password valid: true
2025-11-07T15:45:17: Creating JWT token...
2025-11-07T15:45:17: JWT token created, length: 239
2025-11-07T15:45:17: Setting authToken cookie...
2025-11-07T15:45:17: Cookie set successfully
2025-11-07T15:45:17: === API LOGIN SUCCESS ===
2025-11-07T15:45:17: Database connection closed
2025-11-07T15:45:21: Middleware - Path: /admin/ingredients
2025-11-07T15:45:21: Middleware - Token present: true
2025-11-07T15:45:21: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
2025-11-07T15:45:21: Middleware - sec-fetch-mode: navigate
2025-11-07T15:45:21: Middleware - Cookie header: _pk_id.1.1fff=b36f23884837509f.1755978760.; authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjcxNywiZXhwIjoxNzYyNjEzMTE3fQ.iDf2WcWuJJuP3OG-XluqzHskIM8J1FixKFSKT3vRAtg
2025-11-07T15:45:21: Middleware - Token valid, user: brotha
2025-11-07T15:45:21: Middleware - Path: /admin/menus
2025-11-07T15:45:21: Middleware - Token present: true
2025-11-07T15:45:21: Middleware - Accept header: */*
2025-11-07T15:45:21: Middleware - sec-fetch-mode: cors
2025-11-07T15:45:21: Middleware - Cookie header: _pk_id.1.1fff=b36f23884837509f.1755978760.; authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjcxNywiZXhwIjoxNzYyNjEzMTE3fQ.iDf2WcWuJJuP3OG-XluqzHskIM8J1FixKFSKT3vRAtg
2025-11-07T15:45:21: Middleware - Path: /admin/menu-generator
2025-11-07T15:45:21: Middleware - Token present: true
2025-11-07T15:45:21: Middleware - Accept header: */*
2025-11-07T15:45:21: Middleware - sec-fetch-mode: cors
2025-11-07T15:45:21: Middleware - Cookie header: _pk_id.1.1fff=b36f23884837509f.1755978760.; authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjcxNywiZXhwIjoxNzYyNjEzMTE3fQ.iDf2WcWuJJuP3OG-XluqzHskIM8J1FixKFSKT3vRAtg
2025-11-07T15:45:21: Middleware - Token valid, user: brotha
2025-11-07T15:45:21: Middleware - Token valid, user: brotha
2025-11-07T15:45:21: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:45:21: Middleware - Token present: true
2025-11-07T15:45:21: Middleware - Accept header: */*
2025-11-07T15:45:21: Middleware - sec-fetch-mode: cors
2025-11-07T15:45:21: Middleware - Cookie header: _pk_id.1.1fff=b36f23884837509f.1755978760.; authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjcxNywiZXhwIjoxNzYyNjEzMTE3fQ.iDf2WcWuJJuP3OG-XluqzHskIM8J1FixKFSKT3vRAtg
2025-11-07T15:45:21: Middleware - Token valid, user: brotha
2025-11-07T15:45:21: Middleware - Path: /admin/availability
2025-11-07T15:45:21: Middleware - Token present: true
2025-11-07T15:45:21: Middleware - Accept header: */*
2025-11-07T15:45:21: Middleware - sec-fetch-mode: cors
2025-11-07T15:45:21: Middleware - Cookie header: _pk_id.1.1fff=b36f23884837509f.1755978760.; authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjcxNywiZXhwIjoxNzYyNjEzMTE3fQ.iDf2WcWuJJuP3OG-XluqzHskIM8J1FixKFSKT3vRAtg
2025-11-07T15:45:21: Middleware - Path: /admin/bookings
2025-11-07T15:45:21: Middleware - Token present: true
2025-11-07T15:45:21: Middleware - Accept header: */*
2025-11-07T15:45:21: Middleware - sec-fetch-mode: cors
2025-11-07T15:45:21: Middleware - Cookie header: _pk_id.1.1fff=b36f23884837509f.1755978760.; authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjcxNywiZXhwIjoxNzYyNjEzMTE3fQ.iDf2WcWuJJuP3OG-XluqzHskIM8J1FixKFSKT3vRAtg
2025-11-07T15:45:21: Middleware - Token valid, user: brotha
2025-11-07T15:45:21: Middleware - Token valid, user: brotha
2025-11-07T15:46:21: > Ready on http://localhost:3000
2025-11-07T15:46:47: === API LOGIN REQUEST START ===
2025-11-07T15:46:47: Timestamp: 2025-11-07T14:46:47.130Z
2025-11-07T15:46:47: Request body received: { username: 'brotha', passwordLength: 9 }
2025-11-07T15:46:47: Connecting to database...
2025-11-07T15:46:47: Database connected
2025-11-07T15:46:47: Querying user from database: brotha
2025-11-07T15:46:47: Query result: found 1 users
2025-11-07T15:46:47: User found: {
id: 'd87cf9cf-ba4a-11f0-8c13-cffd87a9b9a6',
username: 'brotha',
role: 'admin'
}
2025-11-07T15:46:47: Verifying password with salt...
2025-11-07T15:46:47: Password valid: true
2025-11-07T15:46:47: Creating JWT token...
2025-11-07T15:46:47: JWT token created, length: 239
2025-11-07T15:46:47: Setting authToken cookie...
2025-11-07T15:46:47: Cookie set successfully
2025-11-07T15:46:47: === API LOGIN SUCCESS ===
2025-11-07T15:46:47: Database connection closed
2025-11-07T15:46:47: Middleware - Path: /admin
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
2025-11-07T15:46:47: Middleware - sec-fetch-mode: navigate
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: === API: GET /api/menus ===
2025-11-07T15:46:47: Middleware - Path: /admin/menus
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: */*
2025-11-07T15:46:47: Middleware - sec-fetch-mode: cors
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Path: /admin/menu-generator
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: */*
2025-11-07T15:46:47: Middleware - sec-fetch-mode: cors
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Path: /admin/ingredients
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: */*
2025-11-07T15:46:47: Middleware - sec-fetch-mode: cors
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: */*
2025-11-07T15:46:47: Middleware - sec-fetch-mode: cors
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Path: /admin/availability
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
2025-11-07T15:46:47: Middleware - sec-fetch-mode: navigate
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: ✓ Menus fetched: 17
2025-11-07T15:46:47: Middleware - Path: /admin/availability
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: */*
2025-11-07T15:46:47: Middleware - sec-fetch-mode: cors
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: === API: GET /api/availability/blocked ===
2025-11-07T15:46:47: ✓ Blocked dates fetched: 3 dates
2025-11-07T15:46:47: Middleware - Path: /admin/menus
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: */*
2025-11-07T15:46:47: Middleware - sec-fetch-mode: cors
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Path: /admin/menu-generator
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: */*
2025-11-07T15:46:47: Middleware - sec-fetch-mode: cors
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Path: /admin/ingredients
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: */*
2025-11-07T15:46:47: Middleware - sec-fetch-mode: cors
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Path: /admin/menu-ingredients
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: */*
2025-11-07T15:46:47: Middleware - sec-fetch-mode: cors
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Path: /admin/bookings
2025-11-07T15:46:47: Middleware - Token present: true
2025-11-07T15:46:47: Middleware - Accept header: */*
2025-11-07T15:46:47: Middleware - sec-fetch-mode: cors
2025-11-07T15:46:47: Middleware - Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: Middleware - Token valid, user: brotha
2025-11-07T15:46:47: === API: DELETE /api/availability/blocked ===
2025-11-07T15:46:47: Request headers: {
accept: '*/*',
'accept-encoding': 'gzip, deflate, br, zstd',
'accept-language': 'en-US',
connection: 'keep-alive',
'content-length': '45',
'content-type': 'application/json',
cookie: 'authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc',
host: 'localhost:3000',
origin: 'http://localhost:3000',
referer: 'http://localhost:3000/admin/availability',
'sec-ch-ua': '"HeadlessChrome";v="141", "Not?A_Brand";v="8", "Chromium";v="141"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.7390.37 Safari/537.36',
'x-forwarded-for': '::1',
'x-forwarded-host': 'localhost:3000',
'x-forwarded-port': '3000',
'x-forwarded-proto': 'http'
}
2025-11-07T15:46:47: Cookie header: authToken=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJkODdjZjljZi1iYTRhLTExZjAtOGMxMy1jZmZkODdhOWI5YTYiLCJ1c2VybmFtZSI6ImJyb3RoYSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc2MjUyNjgwNywiZXhwIjoxNzYyNjEzMjA3fQ.wvPTrupLtg6HELJPhfQeuUd7D48lplTBpbrlt0zF_Qc
2025-11-07T15:46:47: Request body: { date: undefined, id: '57835940-75ac-4ab8-85a2-4c6e000c3e2d' }
2025-11-07T15:46:47: ✓ Deleted by id: 57835940-75ac-4ab8-85a2-4c6e000c3e2d