Skip to content

Commit 50b51f1

Browse files
can work
1 parent ba0d460 commit 50b51f1

File tree

3 files changed

+33
-11
lines changed

3 files changed

+33
-11
lines changed

sql-editor/src/app/api/create-user/route.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createBBIssueWorkflow, generateBBToken, grantUserRole } from "../utils";
1+
import { createBBIssueWorkflow, generateBBToken, grantUserRoleProjectOwner, switchWorkspaceMode } from "../utils";
22

33
function generateRandomString(length: number): string {
44
const characters = 'abcdefghijklmnopqrstuvwxyz';
@@ -70,20 +70,24 @@ export async function GET(request: Request) {
7070

7171
console.log('User creation process completed successfully');
7272

73-
//console.log('now create db');
74-
//const result = await createBBIssueWorkflow(username)
75-
//console.log("after creating db", result)
73+
console.log('now create db');
74+
const createdDB = await createBBIssueWorkflow(username)
75+
console.log("after creating db", createdDB)
7676

7777

7878
// Grant the user project querier role
79-
const result = await grantUserRole(username);
80-
console.log("after grantUserRole", result)
79+
const grantresult = await grantUserRoleProjectOwner(username);
80+
console.log("after grantUserRole", grantresult)
8181

82+
// Switch the workspace to Editor mode
83+
const switchresult = await switchWorkspaceMode();
84+
console.log("after switchWorkspaceMode", switchresult)
8285
// Return the credentials and created project
8386
return new Response(JSON.stringify({
8487
message: 'User and project created successfully',
8588
credentials: { username, email, password },
86-
project: createdProject
89+
project: createdProject,
90+
database: createdDB
8791
}), {
8892
status: 200,
8993
headers: { 'Content-Type': 'application/json' },

sql-editor/src/app/api/utils.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,22 @@ export async function generateBBToken() {
4949
return token.token;
5050
}
5151

52-
export async function grantUserRole(project: string) {
52+
export async function switchWorkspaceMode() {
53+
const token = await generateBBToken();
54+
const response = await fetchData(`${process.env.NEXT_PUBLIC_BB_HOST}/v1/settings/bb.workspace.profile?updateMask=value.workspace_profile_setting_value.database_change_mode`, token, {
55+
method: 'PATCH',
56+
body: JSON.stringify({
57+
"value": {
58+
"workspaceProfileSettingValue": {
59+
"databaseChangeMode": "EDITOR"
60+
}
61+
}
62+
})
63+
});
64+
return response;
65+
}
66+
67+
export async function grantUserRoleProjectOwner(project: string) {
5368
const username = project;
5469
const token = await generateBBToken();
5570
const response = await fetchData(`${process.env.NEXT_PUBLIC_BB_HOST}/v1/projects/${project}:getIamPolicy`, token, {
@@ -59,7 +74,7 @@ export async function grantUserRole(project: string) {
5974
console.log("=============getIamPolicy", JSON.stringify(response));
6075

6176
response.bindings.push({
62-
"role": "roles/projectQuerier",
77+
"role": "roles/projectOwner",
6378
"members": [`user:${username}@example.com`],
6479
"condition": {
6580
"expression": "",

sql-editor/src/app/page.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,9 @@ export default function Home() {
4949

5050
return (
5151
<main className="flex min-h-screen flex-col items-center justify-center p-24">
52-
<h1 className="text-4xl font-bold mb-8">Welcome to Bytebase Demo</h1>
52+
<h1 className="text-4xl font-bold mb-8"> Embedded Bytebase SQL Editor Demo</h1>
53+
{!userData && (
54+
<h2 className="text-2xl font-bold mb-4">Logout your Bytebase account in the same browser before click Start</h2>)}
5355
{!userData && (
5456
<button
5557
onClick={handleCreateUser}
@@ -62,13 +64,14 @@ export default function Home() {
6264
{error && <p className="text-red-500 mt-4">{error}</p>}
6365
{userData && (
6466
<div className="mt-8 w-full">
65-
<h2 className="text-2xl font-bold mb-4">User and Project Created Successfully</h2>
67+
<h2 className="text-2xl font-bold mb-4">User/Project/Database Created Successfully, click Sign in to start</h2>
6668
<div className="bg-gray-100 p-6 rounded-lg mb-4">
6769
<p><strong>Username:</strong> {userData.credentials.username}</p>
6870
<p><strong>Email:</strong> {userData.credentials.email}</p>
6971
<p><strong>Password:</strong> {userData.credentials.password}</p>
7072
<p><strong>Project Title:</strong> {userData.project.title}</p>
7173
<p><strong>Project Key:</strong> {userData.project.key}</p>
74+
<p><strong>Database:</strong> {userData.project.key}</p>
7275
</div>
7376
<p className="mt-4 mb-4 text-sm text-gray-600">Please save these credentials and project details for future use.</p>
7477
<div className="w-full h-screen border border-gray-300 rounded-lg overflow-hidden">

0 commit comments

Comments
 (0)