- Modified attendances.funnel_stage in DB from ENUM to VARCHAR. - Created tenant_funnels table and backend API routes to manage custom stages. - Added /admin/funnels page for Admins/Managers to create, edit, order, and color-code their funnel stages. - Updated Dashboard, UserDetail, and AttendanceDetail to fetch and render dynamic funnel stages instead of hardcoded enums. - Added defensive checks and logging to GET /users/:idOrSlug to fix sporadic 500 errors during impersonation handoffs.
24 lines
736 B
JavaScript
24 lines
736 B
JavaScript
const mysql = require('mysql2/promise');
|
|
|
|
async function test() {
|
|
const pool = mysql.createPool({ host: '127.0.0.1', user: 'root', password: 'secret_pass', database: 'fasto_db', port: 3306 });
|
|
try {
|
|
const [rows] = await pool.query('SELECT * FROM users WHERE id = ? OR slug = ?', ['u_71657ec7', 'u_71657ec7']);
|
|
console.log("ROWS:", rows);
|
|
// Simulate req.user
|
|
const req = { user: { role: 'super_admin', tenant_id: 'system' } };
|
|
|
|
if (req.user.role !== 'super_admin' && rows[0].tenant_id !== req.user.tenant_id) {
|
|
console.log("Access Denied");
|
|
} else {
|
|
console.log("Access Granted");
|
|
}
|
|
|
|
} catch (err) {
|
|
console.error("ERROR:", err);
|
|
} finally {
|
|
await pool.end();
|
|
}
|
|
}
|
|
test();
|