Enhance impersonation functionality and user management

- Updated the ImpersonationBar component to fetch users dynamically and handle impersonation actions more efficiently.
- Refactored the ProfileForm to set the allowImpersonation value directly, improving form handling.
- Modified the DashboardLayout to conditionally render the ImpersonationBar based on user permissions and cloud settings.
- Added a new role column to the user_temp table to support user role management.
- Updated API routes to include checks for root access and improved user listing functionality.
This commit is contained in:
Mauricio Siu
2025-05-06 02:32:08 -06:00
parent cc5574e08a
commit 314438b84c
10 changed files with 5785 additions and 124 deletions

View File

@@ -57,6 +57,7 @@ export const users_temp = pgTable("user_temp", {
sshPrivateKey: text("sshPrivateKey"),
enableDockerCleanup: boolean("enableDockerCleanup").notNull().default(false),
logCleanupCron: text("logCleanupCron"),
role: text("role").notNull().default("user"),
// Metrics
enablePaidFeatures: boolean("enablePaidFeatures").notNull().default(false),
allowImpersonation: boolean("allowImpersonation").notNull().default(false),
@@ -135,6 +136,8 @@ export const usersRelations = relations(users_temp, ({ one, many }) => ({
const createSchema = createInsertSchema(users_temp, {
id: z.string().min(1),
isRegistered: z.boolean().optional(),
}).omit({
role: true,
});
export const apiCreateUserInvitation = createSchema.pick({}).extend({

View File

@@ -194,7 +194,6 @@ const { handler, api } = betterAuth({
},
},
},
plugins: [
apiKey({
enableMetadata: true,
@@ -232,7 +231,6 @@ const { handler, api } = betterAuth({
export const auth = {
handler,
createApiKey: api.createApiKey,
listUsers: api.listUsers,
};
export const validateRequest = async (request: IncomingMessage) => {