Skip to content

Commit c86954f

Browse files
committed
feat(auth): migrate to better-auth admin plugin
1 parent 680c9cd commit c86954f

File tree

9 files changed

+13595
-8
lines changed

9 files changed

+13595
-8
lines changed

apps/sim/app/api/user/super-user/route.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export async function GET(request: NextRequest) {
2222
}
2323

2424
const currentUser = await db
25-
.select({ isSuperUser: user.isSuperUser })
25+
.select({ role: user.role })
2626
.from(user)
2727
.where(eq(user.id, session.user.id))
2828
.limit(1)
@@ -33,7 +33,7 @@ export async function GET(request: NextRequest) {
3333
}
3434

3535
return NextResponse.json({
36-
isSuperUser: currentUser[0].isSuperUser,
36+
isSuperUser: currentUser[0].role === 'admin',
3737
})
3838
} catch (error) {
3939
logger.error(`[${requestId}] Error checking super user status`, error)

apps/sim/app/workspace/[workspaceId]/templates/page.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ export default async function TemplatesPage({ params }: TemplatesPageProps) {
4444
redirect(`/workspace/${workspaceId}`)
4545
}
4646

47-
// Determine effective super user (DB flag AND UI mode enabled)
47+
// Determine effective super user (admin role AND UI mode enabled)
4848
const currentUser = await db
49-
.select({ isSuperUser: user.isSuperUser })
49+
.select({ role: user.role })
5050
.from(user)
5151
.where(eq(user.id, session.user.id))
5252
.limit(1)
@@ -56,7 +56,7 @@ export default async function TemplatesPage({ params }: TemplatesPageProps) {
5656
.where(eq(settings.userId, session.user.id))
5757
.limit(1)
5858

59-
const isSuperUser = currentUser[0]?.isSuperUser || false
59+
const isSuperUser = currentUser[0]?.role === 'admin'
6060
const superUserModeEnabled = userSettings[0]?.superUserModeEnabled ?? true
6161
const effectiveSuperUser = isSuperUser && superUserModeEnabled
6262

apps/sim/lib/auth/auth-client.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { useContext } from 'react'
22
import { ssoClient } from '@better-auth/sso/client'
33
import { stripeClient } from '@better-auth/stripe/client'
44
import {
5+
adminClient,
56
customSessionClient,
67
emailOTPClient,
78
genericOAuthClient,
@@ -17,6 +18,7 @@ import { SessionContext, type SessionHookResult } from '@/app/_shell/providers/s
1718
export const client = createAuthClient({
1819
baseURL: getBaseUrl(),
1920
plugins: [
21+
adminClient(),
2022
emailOTPClient(),
2123
genericOAuthClient(),
2224
customSessionClient<typeof auth>(),

apps/sim/lib/auth/auth.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { betterAuth } from 'better-auth'
77
import { drizzleAdapter } from 'better-auth/adapters/drizzle'
88
import { nextCookies } from 'better-auth/next-js'
99
import {
10+
admin,
1011
createAuthMiddleware,
1112
customSession,
1213
emailOTP,
@@ -625,6 +626,7 @@ export const auth = betterAuth({
625626
},
626627
plugins: [
627628
nextCookies(),
629+
admin(),
628630
jwt({
629631
jwks: {
630632
keyPairConfig: { alg: 'RS256' },

apps/sim/lib/templates/permissions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export async function verifyEffectiveSuperUser(userId: string): Promise<{
1717
superUserModeEnabled: boolean
1818
}> {
1919
const [currentUser] = await db
20-
.select({ isSuperUser: user.isSuperUser })
20+
.select({ role: user.role })
2121
.from(user)
2222
.where(eq(user.id, userId))
2323
.limit(1)
@@ -28,7 +28,7 @@ export async function verifyEffectiveSuperUser(userId: string): Promise<{
2828
.where(eq(settings.userId, userId))
2929
.limit(1)
3030

31-
const isSuperUser = currentUser?.isSuperUser || false
31+
const isSuperUser = currentUser?.role === 'admin'
3232
const superUserModeEnabled = userSettings?.superUserModeEnabled ?? false
3333

3434
return {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
ALTER TABLE "session" ADD COLUMN "impersonated_by" text;--> statement-breakpoint
2+
ALTER TABLE "user" ADD COLUMN "role" text DEFAULT 'user';--> statement-breakpoint
3+
ALTER TABLE "user" ADD COLUMN "banned" boolean DEFAULT false;--> statement-breakpoint
4+
ALTER TABLE "user" ADD COLUMN "ban_reason" text;--> statement-breakpoint
5+
ALTER TABLE "user" ADD COLUMN "ban_expires" timestamp;--> statement-breakpoint
6+
ALTER TABLE "user" DROP COLUMN "is_super_user";

0 commit comments

Comments
 (0)