49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
|
|
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()
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|