Files
medical-mall/mall_sql/scripts/create_homecare_auth_user.js
2026-06-10 20:20:47 +08:00

95 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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);
});