Seed: bridge LobeChat default signup accounts to enterprise roles
E2E CI / Check Duplicate Run (push) Failing after 2s
Test CI / Check Duplicate Run (push) Failing after 2s
E2E CI / Test Web App (push) Has been skipped
🔄 Branch Synchronization / sync-branches (push) Failing after 3s
Test CI / Test Packages (push) Has been skipped
Test CI / Test App (shard 1/3) (push) Has been skipped
Test CI / Test App (shard 3/3) (push) Has been skipped
Test CI / Test App (shard 2/3) (push) Has been skipped
Test CI / Test Desktop App (push) Has been skipped
Test CI / Test Database (push) Has been skipped
Test CI / Merge and Upload App Coverage (push) Has been skipped

- admin@eg.local  -> super_admin
- user1@eg.local  -> customer (customer_id=CUST-0001)

Makes the admin-only model-config UI lock take effect out of the box
after docker compose up + bootstrap-lobechat-users.sh.
This commit is contained in:
xiaohei
2026-04-21 20:41:33 +08:00
parent c3210b2eec
commit 73821abe00
3 changed files with 30 additions and 3 deletions
+2 -2
View File
@@ -69,8 +69,8 @@
},
{
"path": "gateway/prisma/seed.ts",
"accessCount": 20,
"lastAccessed": 1776763220682,
"accessCount": 23,
"lastAccessed": 1776775293304,
"type": "file"
},
{
+1 -1
View File
@@ -1,3 +1,3 @@
{
"lastSentAt": "2026-04-21T12:33:30.508Z"
"lastSentAt": "2026-04-21T12:40:13.486Z"
}
+27
View File
@@ -332,6 +332,32 @@ async function ensureModels() {
console.log('[seed] models/model-permissions/model-policy ensured');
}
// Bridge the default LobeChat signup accounts to enterprise roles so the UI
// admin-lock takes effect immediately out of the box. This is idempotent.
async function ensureLobeChatBridgeUsers() {
const bridges = [
{ email: 'admin@eg.local', username: 'admin-lobe', displayName: 'Admin (LobeChat)', role: 'super_admin', metadata: {} as any },
{ email: 'user1@eg.local', username: 'user1-lobe', displayName: 'User One (LobeChat)', role: 'customer', metadata: { customer_id: 'CUST-0001' } as any },
];
for (const b of bridges) {
const role = await prisma.enterpriseRole.findUnique({ where: { key: b.role } });
if (!role) continue;
let user = await prisma.enterpriseUser.findUnique({ where: { username: b.username } });
if (!user) {
user = await prisma.enterpriseUser.create({
data: { username: b.username, displayName: b.displayName, email: b.email, metadata: b.metadata },
});
}
const existing = await prisma.enterpriseUserRole.findFirst({
where: { userId: user.id, roleId: role.id },
});
if (!existing) {
await prisma.enterpriseUserRole.create({ data: { userId: user.id, roleId: role.id } });
}
}
console.log('[seed] lobechat bridge users ensured');
}
async function ensureSystemDiscoverer() {
const superRole = await prisma.enterpriseRole.findUnique({ where: { key: 'super_admin' } });
if (!superRole) return;
@@ -385,6 +411,7 @@ async function main() {
await ensureToolInputSchemas();
await ensureModels();
await ensureRoleToolGrants();
await ensureLobeChatBridgeUsers();
return;
}