Initial miaojingAI project with image resolution guard
This commit is contained in:
70
verify_admin_user_delete.js
Normal file
70
verify_admin_user_delete.js
Normal file
@@ -0,0 +1,70 @@
|
||||
const { Pool } = require('pg');
|
||||
require('dotenv').config({ path: '.env.local' });
|
||||
|
||||
const base = 'http://127.0.0.1:5000';
|
||||
const email = `codex-delete-${Date.now()}@example.com`;
|
||||
|
||||
(async () => {
|
||||
const adminRes = await fetch(`${base}/api/profile?email=admin@example.com`);
|
||||
const adminData = await adminRes.json();
|
||||
const adminId = adminData.profile && adminData.profile.id;
|
||||
if (!adminId) throw new Error('admin profile not found');
|
||||
const token = `token-admin-${adminId}-${Date.now()}`;
|
||||
|
||||
const pool = new Pool({ connectionString: process.env.LOCAL_DB_URL });
|
||||
const client = await pool.connect();
|
||||
let tempId = null;
|
||||
try {
|
||||
const created = await client.query(
|
||||
`INSERT INTO profiles (email, nickname, role, membership_tier, credits_balance, daily_quota_limit, is_active)
|
||||
VALUES ($1, 'DeleteVerify', 'user', 'free', 0, 5, true)
|
||||
RETURNING id`,
|
||||
[email],
|
||||
);
|
||||
tempId = created.rows[0].id;
|
||||
await client.query(
|
||||
`INSERT INTO works (user_id, type, prompt, result_url, is_public, status)
|
||||
VALUES ($1, 'text2img', 'delete verify', '/api/local-storage/non-existent.png', true, 'completed')`,
|
||||
[tempId],
|
||||
);
|
||||
} finally {
|
||||
client.release();
|
||||
await pool.end();
|
||||
}
|
||||
|
||||
const deleteAdmin = await fetch(`${base}/api/admin/users`, {
|
||||
method: 'DELETE',
|
||||
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` },
|
||||
body: JSON.stringify({ userId: adminId }),
|
||||
});
|
||||
const deleteAdminBody = await deleteAdmin.text();
|
||||
|
||||
const deleteTemp = await fetch(`${base}/api/admin/users`, {
|
||||
method: 'DELETE',
|
||||
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${token}` },
|
||||
body: JSON.stringify({ userId: tempId }),
|
||||
});
|
||||
const deleteTempBody = await deleteTemp.text();
|
||||
|
||||
const checkPool = new Pool({ connectionString: process.env.LOCAL_DB_URL });
|
||||
const checkClient = await checkPool.connect();
|
||||
try {
|
||||
const remain = await checkClient.query(
|
||||
`SELECT
|
||||
EXISTS(SELECT 1 FROM profiles WHERE id = $1) AS profile_exists,
|
||||
EXISTS(SELECT 1 FROM works WHERE user_id = $1) AS works_exist`,
|
||||
[tempId],
|
||||
);
|
||||
console.log(JSON.stringify({
|
||||
deleteAdmin: { status: deleteAdmin.status, body: deleteAdminBody },
|
||||
deleteTemp: { status: deleteTemp.status, body: deleteTempBody },
|
||||
remaining: remain.rows[0],
|
||||
}, null, 2));
|
||||
} finally {
|
||||
checkClient.release();
|
||||
await checkPool.end();
|
||||
}
|
||||
})().catch(async (error) => {
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
});
|
||||
Reference in New Issue
Block a user