deckhearth/api/make-admin.js

49 lines
1.2 KiB
JavaScript
Raw Normal View History

2025-07-22 08:23:03 -04:00
const { Pool } = require('pg');
export default async function handler(req, res) {
try {
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: process.env.NODE_ENV === 'production' ? { rejectUnauthorized: false } : false,
});
const client = await pool.connect();
// Simple promotion - just add user 1 to admin role
const result = await client.query(`
INSERT INTO user_roles (user_id, role_id)
SELECT 1, id FROM roles WHERE name = 'admin'
ON CONFLICT DO NOTHING
RETURNING *
`);
// Check current roles
const userRoles = await client.query(`
SELECT
u.username,
ARRAY_AGG(r.name) as roles
FROM users u
LEFT JOIN user_roles ur ON u.id = ur.user_id
LEFT JOIN roles r ON ur.role_id = r.id
WHERE u.id = 1
GROUP BY u.username
`);
client.release();
res.status(200).json({
success: true,
message: 'Admin promotion complete',
inserted: result.rows.length > 0,
user: userRoles.rows[0] || null,
timestamp: new Date().toISOString()
});
} catch (error) {
res.status(500).json({
success: false,
error: error.message,
timestamp: new Date().toISOString()
});
}
}