73 lines
2.3 KiB
JavaScript
73 lines
2.3 KiB
JavaScript
|
|
const { createClient } = require('@supabase/supabase-js');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// Read .env.local manually
|
|
const envPath = path.resolve(process.cwd(), '.env.local');
|
|
const envContent = fs.readFileSync(envPath, 'utf-8');
|
|
|
|
const env = {};
|
|
envContent.split('\n').forEach(line => {
|
|
const [key, value] = line.split('=');
|
|
if (key && value) {
|
|
env[key.trim()] = value.trim();
|
|
}
|
|
});
|
|
|
|
const supabaseUrl = env.NEXT_PUBLIC_SUPABASE_URL;
|
|
const serviceKey = env.SUPABASE_SERVICE_ROLE_KEY;
|
|
|
|
if (!supabaseUrl || !serviceKey) {
|
|
console.error('Error: NEXT_PUBLIC_SUPABASE_URL or SUPABASE_SERVICE_ROLE_KEY not found in .env.local');
|
|
process.exit(1);
|
|
}
|
|
|
|
const supabase = createClient(supabaseUrl, serviceKey, {
|
|
auth: {
|
|
autoRefreshToken: false,
|
|
persistSession: false
|
|
}
|
|
});
|
|
|
|
async function setAdminRole() {
|
|
const email = 'admin@admin.com';
|
|
console.log(`Searching for user: ${email}...`);
|
|
|
|
// 1. Find user by email (using listUsers for simplicity as there is no straight getUserByEmail in admin api sometimes depending on version, but listUsers is safe)
|
|
// Actually getUserByEmail exists in newer versions but listUsers is robust.
|
|
// Let's try listUsers with filter if possible, or just list all.
|
|
|
|
// In @supabase/supabase-js v2, listUsers doesn't support email filter directly in all versions cleanly, so we'll fetch and find.
|
|
const { data: { users }, error } = await supabase.auth.admin.listUsers();
|
|
|
|
if (error) {
|
|
console.error('Error listing users:', error.message);
|
|
return;
|
|
}
|
|
|
|
const user = users.find(u => u.email === email);
|
|
|
|
if (!user) {
|
|
console.error(`User ${email} not found! Please run the create-admin script first or sign up.`);
|
|
return;
|
|
}
|
|
|
|
console.log(`Found user ${user.id}. Setting role to 'admin'...`);
|
|
|
|
// 2. Update user metadata
|
|
const { data: updatedUser, error: updateError } = await supabase.auth.admin.updateUserById(
|
|
user.id,
|
|
{ app_metadata: { role: 'admin' } }
|
|
);
|
|
|
|
if (updateError) {
|
|
console.error('Error updating user role:', updateError.message);
|
|
} else {
|
|
console.log(`Success! User ${email} is now an admin.`);
|
|
console.log('App Metadata:', updatedUser.user.app_metadata);
|
|
}
|
|
}
|
|
|
|
setAdminRole();
|