95 lines
3.0 KiB
JavaScript
95 lines
3.0 KiB
JavaScript
#!/usr/bin/env node
|
||
|
||
/**
|
||
* 创建居家服务员 auth 用户(Supabase Admin API)
|
||
* 用法:
|
||
* 1. cd mall_sql/scripts
|
||
* 2. 设置环境变量 SUPABASE_URL 和 SUPABASE_SERVICE_ROLE_KEY
|
||
* 3. node create_homecare_auth_user.js
|
||
*
|
||
* 如果未安装 @supabase/supabase-js,先执行:
|
||
* npm install @supabase/supabase-js
|
||
*/
|
||
|
||
const { createClient } = require('@supabase/supabase-js');
|
||
|
||
const SUPABASE_URL = process.env.SUPABASE_URL || 'http://119.146.131.237:9126';
|
||
const SUPABASE_SERVICE_ROLE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY || '';
|
||
|
||
if (!SUPABASE_SERVICE_ROLE_KEY) {
|
||
console.error('❌ 请设置环境变量 SUPABASE_SERVICE_ROLE_KEY');
|
||
console.error(' 该 key 可在 Supabase Dashboard -> Project Settings -> API -> service_role key 获取');
|
||
process.exit(1);
|
||
}
|
||
|
||
const supabase = createClient(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, {
|
||
auth: { autoRefreshToken: false, persistSession: false }
|
||
});
|
||
|
||
async function main() {
|
||
const email = 'homecare_worker@test.com';
|
||
const password = 'Homecare123!';
|
||
|
||
console.log(`📝 正在创建/更新 auth 用户: ${email}`);
|
||
|
||
// 先尝试查找现有用户
|
||
const { data: existingUsers, error: listError } = await supabase.auth.admin.listUsers({
|
||
page: 1,
|
||
perPage: 1000
|
||
});
|
||
|
||
if (listError) {
|
||
console.error('❌ 查询用户列表失败:', listError.message);
|
||
process.exit(1);
|
||
}
|
||
|
||
const existingUser = existingUsers.users.find(u => u.email === email);
|
||
|
||
if (existingUser) {
|
||
console.log(`⚠️ 用户已存在 (ID: ${existingUser.id}),更新密码...`);
|
||
const { data: updateData, error: updateError } = await supabase.auth.admin.updateUserById(
|
||
existingUser.id,
|
||
{ password, email_confirm: true }
|
||
);
|
||
|
||
if (updateError) {
|
||
console.error('❌ 更新用户失败:', updateError.message);
|
||
process.exit(1);
|
||
}
|
||
|
||
console.log('✅ 密码已更新');
|
||
console.log(` 用户ID: ${updateData.user.id}`);
|
||
console.log(` 邮箱: ${updateData.user.email}`);
|
||
} else {
|
||
console.log('🔨 创建新用户...');
|
||
const { data: createData, error: createError } = await supabase.auth.admin.createUser({
|
||
email,
|
||
password,
|
||
email_confirm: true,
|
||
user_metadata: {
|
||
name: '居家服务员',
|
||
role: 'delivery',
|
||
nickname: '居家服务员'
|
||
}
|
||
});
|
||
|
||
if (createError) {
|
||
console.error('❌ 创建用户失败:', createError.message);
|
||
process.exit(1);
|
||
}
|
||
|
||
console.log('✅ 用户创建成功');
|
||
console.log(` 用户ID: ${createData.user.id}`);
|
||
console.log(` 邮箱: ${createData.user.email}`);
|
||
}
|
||
|
||
console.log('\n📋 下一步:');
|
||
console.log(' 在 Supabase SQL Editor 中执行 seed_homecare_worker.sql');
|
||
console.log(' 以创建 ak_users 和 ml_delivery_staff 记录。');
|
||
}
|
||
|
||
main().catch(err => {
|
||
console.error('❌ 未捕获错误:', err);
|
||
process.exit(1);
|
||
});
|