From a1190cd24a4747e40dd1ace07647e2d08e16ba17 Mon Sep 17 00:00:00 2001 From: dotcomnerd Date: Tue, 18 Feb 2025 23:01:03 -0800 Subject: [PATCH 01/10] =?UTF-8?q?=F0=9F=93=A6=20deps:=20install=20better-a?= =?UTF-8?q?uth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bun.lockb | Bin 373337 -> 382307 bytes package.json | 1 + 2 files changed, 1 insertion(+) diff --git a/bun.lockb b/bun.lockb index 8c3725b6e69dee3c732d0dd9a494f41f0d54940a..72ea56defa3add4d64ab27df6c9bd594642510f2 100755 GIT binary patch delta 77404 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�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

!O+UnniK4(Md1Y$PNnu8VrP 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 X%rSY5hRkgy3;kRZ%as1{@ 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 Date: Wed, 19 Feb 2025 18:29:18 -0800 Subject: [PATCH 02/10] =?UTF-8?q?=F0=9F=94=BA=20migrate=20prisma=20data=20?= =?UTF-8?q?model=20to=20better-auth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migration.sql | 102 ++++++++++++++++++ prisma/schema.prisma | 80 +++++++++----- 2 files changed, 155 insertions(+), 27 deletions(-) create mode 100644 prisma/migrations/20250220021307_better_auth_migration/migration.sql diff --git a/prisma/migrations/20250220021307_better_auth_migration/migration.sql b/prisma/migrations/20250220021307_better_auth_migration/migration.sql new file mode 100644 index 0000000..b391567 --- /dev/null +++ b/prisma/migrations/20250220021307_better_auth_migration/migration.sql @@ -0,0 +1,102 @@ +/* + Warnings: + + - You are about to drop the `Account` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `Session` table. If the table is not empty, all the data it contains will be lost. + - You are about to drop the `User` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropForeignKey +ALTER TABLE "Account" DROP CONSTRAINT "Account_userId_fkey"; + +-- DropForeignKey +ALTER TABLE "Session" DROP CONSTRAINT "Session_userId_fkey"; + +-- DropForeignKey +ALTER TABLE "UserImage" DROP CONSTRAINT "UserImage_userId_fkey"; + +-- DropTable +DROP TABLE "Account"; + +-- DropTable +DROP TABLE "Session"; + +-- DropTable +DROP TABLE "User"; + +-- CreateTable +CREATE TABLE "account" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "provider" TEXT, + "providerAccountId" TEXT NOT NULL, + "refresh_token" TEXT, + "access_token" TEXT, + "access_token_expires" TIMESTAMP(3), + "scope" TEXT, + "id_token" TEXT, + "providerId" TEXT NOT NULL, + "refreshTokenExpiresAt" TIMESTAMP(3), + "password" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "account_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "session" ( + "id" TEXT NOT NULL, + "sessionToken" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "expires" TIMESTAMP(3) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL, + "updatedAt" TIMESTAMP(3) NOT NULL, + "ipAddress" TEXT, + "userAgent" TEXT, + + CONSTRAINT "session_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "user" ( + "id" TEXT NOT NULL, + "name" TEXT, + "email" TEXT, + "emailVerified" BOOLEAN NOT NULL DEFAULT false, + "image" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "user_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "verification" ( + "id" TEXT NOT NULL, + "identifier" TEXT NOT NULL, + "value" TEXT NOT NULL, + "expiresAt" TIMESTAMP(3) NOT NULL, + "createdAt" TIMESTAMP(3), + "updatedAt" TIMESTAMP(3), + + CONSTRAINT "verification_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "account_provider_providerAccountId_key" ON "account"("provider", "providerAccountId"); + +-- CreateIndex +CREATE UNIQUE INDEX "session_sessionToken_key" ON "session"("sessionToken"); + +-- CreateIndex +CREATE UNIQUE INDEX "user_email_key" ON "user"("email"); + +-- AddForeignKey +ALTER TABLE "account" ADD CONSTRAINT "account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "session" ADD CONSTRAINT "session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "UserImage" ADD CONSTRAINT "UserImage_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index e00dfd5..bc9581f 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,3 +1,4 @@ + generator client { provider = "prisma-client-js" } @@ -8,42 +9,56 @@ datasource db { } model Account { - id String @id @default(cuid()) - userId String - type String - provider String - providerAccountId String - refresh_token String? @db.Text - access_token String? @db.Text - expires_at Int? - token_type String? - scope String? - id_token String? @db.Text - session_state String? + id String @id @default(cuid()) + userId String + provider String? + accountId String @map("providerAccountId") + refreshToken String? @map("refresh_token") @db.Text + accessToken String? @map("access_token") @db.Text + accessTokenExpiresAt DateTime? @map("access_token_expires") + scope String? + idToken String? @map("id_token") @db.Text user User @relation(fields: [userId], references: [id], onDelete: Cascade) - @@unique([provider, providerAccountId]) + providerId String + refreshTokenExpiresAt DateTime? + password String? + createdAt DateTime + updatedAt DateTime + + @@unique([provider, accountId]) + @@map("account") } model Session { - id String @id @default(cuid()) - sessionToken String @unique - userId String - expires DateTime - user User @relation(fields: [userId], references: [id], onDelete: Cascade) + id String @id @default(cuid()) + token String @unique @map("sessionToken") + userId String + expiresAt DateTime @map("expires") + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + createdAt DateTime + updatedAt DateTime + ipAddress String? + userAgent String? + + @@map("session") } model User { id String @id @default(cuid()) name String? email String? @unique - emailVerified DateTime? + emailVerified Boolean @default(false) image String? accounts Account[] sessions Session[] UserImage UserImage[] + createdAt DateTime + updatedAt DateTime + + @@map("user") } model VerificationToken { @@ -60,12 +75,23 @@ enum Visibility { } model UserImage { - id String @id @default(cuid()) - identifier String @unique @default("") - userId String - createdAt DateTime @default(now()) - updatedAt DateTime @default(now()) - cloudflareUrl String - visibility Visibility - user User @relation(fields: [userId], references: [id], onDelete: Cascade) + id String @id @default(cuid()) + identifier String @unique @default("") + userId String + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) + cloudflareUrl String + visibility Visibility + user User @relation(fields: [userId], references: [id], onDelete: Cascade) +} + +model Verification { + id String @id + identifier String + value String + expiresAt DateTime + createdAt DateTime? + updatedAt DateTime? + + @@map("verification") } From 23a699d8c6de364b3a47775397b244924e3ec604 Mon Sep 17 00:00:00 2001 From: dotcomnerd Date: Wed, 19 Feb 2025 18:31:06 -0800 Subject: [PATCH 03/10] =?UTF-8?q?=F0=9F=93=A6=20remove=20next-auth=20deps?= =?UTF-8?q?=20&=20use=20prisma=20v6.2.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bun.lockb | Bin 382307 -> 376976 bytes package.json | 6 ++---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/bun.lockb b/bun.lockb index 72ea56defa3add4d64ab27df6c9bd594642510f2..2adb7174b8e3194a9bde4aed5f8a3c6a81f0bd78 100755 GIT binary patch delta 72037 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 DcQ=T4 delta 74878 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 Date: Wed, 19 Feb 2025 18:32:27 -0800 Subject: [PATCH 04/10] =?UTF-8?q?=E2=9D=8C=20remove=20next-auth=20session?= =?UTF-8?q?=20provider?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- providers/index.tsx | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/providers/index.tsx b/providers/index.tsx index 170e315..b4b834a 100644 --- a/providers/index.tsx +++ b/providers/index.tsx @@ -1,7 +1,6 @@ 'use client' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' -import { SessionProvider } from 'next-auth/react' import { ThemeProvider } from 'next-themes' import { Provider } from 'react-wrap-balancer' import { Toaster } from 'sonner' @@ -22,13 +21,10 @@ export function Providers({ children }: ProviderProps) { }) return ( - - - + {children} - From a2d09c73aa800b77017e95cb6ac0446a7e9cbc15 Mon Sep 17 00:00:00 2001 From: dotcomnerd Date: Wed, 19 Feb 2025 18:35:05 -0800 Subject: [PATCH 05/10] =?UTF-8?q?=F0=9F=94=92=20migrate=20auth=20API=20ins?= =?UTF-8?q?tance=20away=20from=20next-auth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/auth-client.ts | 7 +++++ lib/auth.ts | 66 ++++++++++++++++++++-------------------------- 2 files changed, 36 insertions(+), 37 deletions(-) create mode 100644 lib/auth-client.ts diff --git a/lib/auth-client.ts b/lib/auth-client.ts new file mode 100644 index 0000000..e55e9e6 --- /dev/null +++ b/lib/auth-client.ts @@ -0,0 +1,7 @@ +import { createAuthClient } from "better-auth/react"; + +export const authClient = createAuthClient({ + baseURL: process.env.BASE_URL! // NOTE: This is optional if our API base URL matches the frontend +}); + +export const { signIn, signOut, useSession } = authClient; diff --git a/lib/auth.ts b/lib/auth.ts index 58b2158..6c6b1ee 100644 --- a/lib/auth.ts +++ b/lib/auth.ts @@ -1,40 +1,32 @@ -import { prisma } from "@/lib/prisma" -import { PrismaAdapter } from "@auth/prisma-adapter" -import NextAuth from "next-auth" -import GitHub from "next-auth/providers/github" +import { betterAuth } from "better-auth"; +import { prismaAdapter } from "better-auth/adapters/prisma"; +import { prisma } from './prisma'; -export const { handlers, signIn, signOut, auth } = NextAuth({ - providers: [GitHub({ - profile(profile) { - return { - id: profile.id.toString(), - name: profile.login, - email: profile.email, - image: profile.avatar_url - } - } - })], - adapter: PrismaAdapter(prisma), - callbacks: { - async session({ session, user }) { - session.user.id = user.id - return session - }, - async signIn({ user, profile }) { - if (profile && 'login' in profile) { - const dbUser = await prisma.user.findUnique({ - where: { id: user.id }, - select: { name: true } - }) - - if (dbUser?.name?.includes(' ')) { - await prisma.user.update({ - where: { id: user.id }, - data: { name: profile.login as string } - }) +export const auth = betterAuth({ + socialProviders: { + github: { + clientId: process.env.AUTH_GITHUB_ID!, + clientSecret: process.env.AUTH_GITHUB_SECRET!, + mapProfileToUser: (profile) => { + return { + id: profile.id.toString(), + name: profile.login, + email: profile.email, + image: profile.avatar_url, } - } - return true - }, + }, + } + }, + accounts: { + fields: { + accountId: "providerAccountId", + refreshToken: "refresh_token", + accessToken: "access_token", + accessTokenExpiresAt: "access_token_expires", + idToken: "id_token", + } }, -}) \ No newline at end of file + database: prismaAdapter(prisma, { + provider: "postgresql", + }), +}); From 3d5edc5100ed56638201f194f7343bacb0f554e9 Mon Sep 17 00:00:00 2001 From: dotcomnerd Date: Wed, 19 Feb 2025 18:35:39 -0800 Subject: [PATCH 06/10] =?UTF-8?q?=E2=9D=8C=20remove=20login=20modal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/login-modal.tsx | 86 -------------------------------------- 1 file changed, 86 deletions(-) delete mode 100644 components/login-modal.tsx diff --git a/components/login-modal.tsx b/components/login-modal.tsx deleted file mode 100644 index d5033a6..0000000 --- a/components/login-modal.tsx +++ /dev/null @@ -1,86 +0,0 @@ -"use client" - -import { useState } from "react" -import { Button } from "@/components/ui/button" -import { Input } from "@/components/ui/input" -import { Label } from "@/components/ui/label" -import { - Dialog, - DialogContent, - DialogDescription, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "@/components/ui/dialog" -import { Github, Mail } from 'lucide-react' - -export function LoginModal() { - const [isOpen, setIsOpen] = useState(false) - const [isSignUp, setIsSignUp] = useState(false) - - const handleSubmit = (e: React.FormEvent) => { - e.preventDefault() - // Handle form submission - console.log("Form submitted") - } - - return ( - - - - - - - {isSignUp ? "Sign Up" : "Sign In"} - - {isSignUp - ? "Create an account to get started" - : "Sign in to your account"} - - -
-
- - -
-
- - -
- -
-
-
- -
-
- - Or continue with - -
-
-
- - -
-
- {isSignUp ? "Already have an account?" : "Don't have an account?"}{" "} - -
-
-
- ) -} - From a1fc853cf75b25938fb801c28f3b5f078b53096b Mon Sep 17 00:00:00 2001 From: dotcomnerd Date: Wed, 19 Feb 2025 18:36:23 -0800 Subject: [PATCH 07/10] =?UTF-8?q?=F0=9F=92=A4=20rename=20catch-all=20route?= =?UTF-8?q?=20handler=20for=20auth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/auth/[...all]/route.ts | 4 ++++ app/api/auth/[...nextauth]/route.ts | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 app/api/auth/[...all]/route.ts delete mode 100644 app/api/auth/[...nextauth]/route.ts diff --git a/app/api/auth/[...all]/route.ts b/app/api/auth/[...all]/route.ts new file mode 100644 index 0000000..52c8f43 --- /dev/null +++ b/app/api/auth/[...all]/route.ts @@ -0,0 +1,4 @@ +import { toNextJsHandler } from "better-auth/next-js"; +import { auth } from "@/lib/auth"; + +export const { POST, GET } = toNextJsHandler(auth); diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts deleted file mode 100644 index aecea4c..0000000 --- a/app/api/auth/[...nextauth]/route.ts +++ /dev/null @@ -1,2 +0,0 @@ -import { handlers } from "@/lib/auth" -export const { GET, POST } = handlers \ No newline at end of file From e3dd2b17df1858e4b62a396557e294cc89b17392 Mon Sep 17 00:00:00 2001 From: dotcomnerd Date: Wed, 19 Feb 2025 18:48:08 -0800 Subject: [PATCH 08/10] =?UTF-8?q?=F0=9F=92=A4=20update=20all=20next-auth?= =?UTF-8?q?=20references=20to=20better-auth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/[username]/profile/delete-account.tsx | 12 +++++++----- app/[username]/profile/page.tsx | 7 +++++-- app/actions.ts | 7 +++++-- app/api/save/get-last-saved/route.ts | 11 +++++++---- app/api/save/route.ts | 7 +++++-- app/api/users/route.ts | 11 +++++++---- components/auth/sign-in.tsx | 4 ++-- components/studio/export/handlers.tsx | 9 +++++---- components/studio/export/index.tsx | 8 ++++---- 9 files changed, 47 insertions(+), 29 deletions(-) diff --git a/app/[username]/profile/delete-account.tsx b/app/[username]/profile/delete-account.tsx index 0e6a40a..3d249ac 100644 --- a/app/[username]/profile/delete-account.tsx +++ b/app/[username]/profile/delete-account.tsx @@ -12,14 +12,14 @@ import { AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; +import { signOut } from '@/lib/auth-client'; import { Trash2 } from "lucide-react"; -import { signOut } from 'next-auth/react'; import { useState } from 'react'; import { toast } from "sonner"; - +import { useRouter } from "next/navigation"; export function DeleteAccount({ userId }: { userId: string }) { const [isDeleting, setIsDeleting] = useState(false); - + const router = useRouter() const handleDeleteAccount = async () => { setIsDeleting(true); try { @@ -31,7 +31,9 @@ export function DeleteAccount({ userId }: { userId: string }) { toast.error('Failed to delete account'); } - await signOut({ redirectTo: '/' }); + await signOut() + + router.push('/') } catch (error) { console.error('Error deleting account:', error); toast.error('Failed to delete account'); @@ -68,4 +70,4 @@ export function DeleteAccount({ userId }: { userId: string }) { ); -} \ No newline at end of file +} diff --git a/app/[username]/profile/page.tsx b/app/[username]/profile/page.tsx index bd15e69..4db5383 100644 --- a/app/[username]/profile/page.tsx +++ b/app/[username]/profile/page.tsx @@ -17,6 +17,7 @@ import { redirect } from "next/navigation"; import { Suspense } from "react"; import { DeleteAccount } from "./delete-account"; import { ImageModal } from "./image-modal"; +import { headers } from 'next/headers'; export const dynamic = 'force-dynamic' @@ -118,7 +119,9 @@ export async function generateMetadata( } export default async function ProfilePage({ params }: { params: { username: string } }) { - const currentUser = await auth(); + const currentUser = await auth.api.getSession({ + headers: headers() + }); const profile = await getUser(params.username, currentUser?.user?.name === params.username); const isOwnProfile = currentUser?.user && profile && currentUser.user?.id === profile.id; @@ -210,4 +213,4 @@ export default async function ProfilePage({ params }: { params: { username: stri ); -} \ No newline at end of file +} diff --git a/app/actions.ts b/app/actions.ts index 0ab9945..6b75bf4 100644 --- a/app/actions.ts +++ b/app/actions.ts @@ -3,10 +3,13 @@ import { auth } from "@/lib/auth"; import { prisma } from "@/lib/prisma"; import { revalidatePath } from "next/cache"; +import { headers } from 'next/headers'; export async function deleteUserImage(id: string): Promise { try { - const userData = await auth(); + const userData = await auth.api.getSession({ + headers: headers() + }); const name = userData?.user?.name || ""; const userId = userData?.user?.id; if (!userData?.user || !userId) return new Response("Not logged in", { status: 401 }); @@ -51,4 +54,4 @@ export async function deleteUserImage(id: string): Promise { console.error(error); return new Response("Internal server error", { status: 500 }); } -} \ No newline at end of file +} diff --git a/app/api/save/get-last-saved/route.ts b/app/api/save/get-last-saved/route.ts index 7aa3259..ed88e16 100644 --- a/app/api/save/get-last-saved/route.ts +++ b/app/api/save/get-last-saved/route.ts @@ -1,9 +1,12 @@ import { auth } from "@/lib/auth"; import { prisma } from "@/lib/prisma"; +import { headers } from 'next/dist/client/components/headers'; -export async function GET(request : Request) { +export async function GET(request : Request) { try{ - const userData = await auth(); + const userData = await auth.api.getSession({ + headers: headers() + }); const userId = userData?.user?.id; if(!userData?.user || !userId){ @@ -14,7 +17,7 @@ export async function GET(request : Request) { where: { userId }, orderBy: { updatedAt: "desc" }, }) - + if (!lastSavedImage) { return new Response(null, { status: 200 }); } @@ -23,4 +26,4 @@ export async function GET(request : Request) { } catch(error: any){ return new Response(error.message, { status: 500 }); } -} \ No newline at end of file +} diff --git a/app/api/save/route.ts b/app/api/save/route.ts index 64afa1b..197fe73 100644 --- a/app/api/save/route.ts +++ b/app/api/save/route.ts @@ -3,6 +3,7 @@ import { prisma } from "@/lib/prisma"; import { useLastSavedTime } from "@/store/use-last-save"; import { diff, Jimp } from 'jimp'; import { revalidatePath } from "next/cache"; +import { headers } from 'next/headers'; export const runtime = "nodejs"; @@ -157,7 +158,9 @@ async function saveOrUpdateUserImage(userId: string, imageUrl: string, identifie export async function POST(request: Request) { try { - const userData = await auth(); + const userData = await auth.api.getSession({ + headers: headers() + }); const userId = userData?.user?.id; if (!userData?.user || !userId) { @@ -195,4 +198,4 @@ export async function POST(request: Request) { console.error(error); return new Response(error.message, { status: 500 }); } -} \ No newline at end of file +} diff --git a/app/api/users/route.ts b/app/api/users/route.ts index 12fca98..8286dc3 100644 --- a/app/api/users/route.ts +++ b/app/api/users/route.ts @@ -1,5 +1,6 @@ -import { auth, signOut } from "@/lib/auth"; +import { auth } from "@/lib/auth"; import { prisma } from "@/lib/prisma"; +import { headers } from 'next/headers'; async function deleteImageFromCloudflare(imageId: string): Promise { const response = await fetch( @@ -19,7 +20,9 @@ async function deleteImageFromCloudflare(imageId: string): Promise { export async function DELETE(request: Request) { try { - const userData = await auth(); + const userData = await auth.api.getSession({ + headers: headers() + }); const { searchParams } = new URL(request.url); const userId = searchParams.get("id"); @@ -45,7 +48,7 @@ export async function DELETE(request: Request) { await Promise.all(deleteImagePromises); - await signOut({ redirect: false }); + await auth.api.signOut({ headers: headers() }) await prisma.user.delete({ where: { id: userId } }); @@ -54,4 +57,4 @@ export async function DELETE(request: Request) { console.error("Error deleting account:", error.message); return Response.json({ error: error.message }, { status: 500 }); } -} \ No newline at end of file +} diff --git a/components/auth/sign-in.tsx b/components/auth/sign-in.tsx index b005a3e..b81d7ef 100644 --- a/components/auth/sign-in.tsx +++ b/components/auth/sign-in.tsx @@ -1,4 +1,4 @@ -import { signIn } from "@/lib/auth" +import { signIn } from "@/lib/auth-client" import { Button } from "../ui/button" export function SignIn() { @@ -6,7 +6,7 @@ export function SignIn() {
{ "use server" - await signIn("github") + await signIn.social({ provider: "github" }) }} > diff --git a/components/studio/export/handlers.tsx b/components/studio/export/handlers.tsx index a003876..ee76dbe 100644 --- a/components/studio/export/handlers.tsx +++ b/components/studio/export/handlers.tsx @@ -16,6 +16,7 @@ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/comp import { useImageOptions } from '@/store/use-image-options' import { useLastSavedTime } from '@/store/use-last-save' import { useResizeCanvas } from '@/store/use-resize-canvas' +import { Auth, type Session } from 'better-auth' import { saveAs } from 'file-saver' import { Copy, Download, Eye, EyeOff, Save } from 'lucide-react' import { useState } from 'react' @@ -24,7 +25,7 @@ import { toast } from 'sonner' interface ExportActionsProps { quality: number fileType: FileType - sessionStatus: "authenticated" | "loading" | "unauthenticated" + sessionStatus: any } type SuccessResponse = DuplicateResponse | NewSaveResponse; @@ -201,8 +202,8 @@ export function ExportActions({ quality, fileType, sessionStatus }: ExportAction variant="ghost" size="icon" onClick={handleCloudSave} - disabled={isCopying || isDownloading || isSaving || sessionStatus !== 'authenticated'} - title={sessionStatus === 'unauthenticated' ? 'Login to save your design!' : 'Save your design to the cloud'} + disabled={isCopying || isDownloading || isSaving || !sessionStatus} + title={sessionStatus ? 'Login to save your design!' : 'Save your design to the cloud'} className="hover:bg-background" > {isSaving ? : } @@ -269,4 +270,4 @@ export function ExportActions({ quality, fileType, sessionStatus }: ExportAction ) -} \ No newline at end of file +} diff --git a/components/studio/export/index.tsx b/components/studio/export/index.tsx index 76aa649..5e06c9b 100644 --- a/components/studio/export/index.tsx +++ b/components/studio/export/index.tsx @@ -4,12 +4,12 @@ import { ExportActions } from '@/components/studio/export/handlers' import { ExportQualityPopover, FileTypePopover } from '@/components/studio/export/popovers' import { FileType } from '@/components/studio/export/types' import { cn } from '@/lib/utils' -import { useSession } from 'next-auth/react' +import { useSession } from '@/lib/auth-client' import { usePathname } from 'next/navigation' import { useState } from 'react' export function ExportOptions() { - const session = useSession() + const { data: session } = useSession() const [quality, setQuality] = useState(1) const [fileType, setFileType] = useState('PNG') const pathname = usePathname() @@ -17,7 +17,7 @@ export function ExportOptions() { return ( <>
- +
@@ -26,4 +26,4 @@ export function ExportOptions() {
) -} \ No newline at end of file +} From f9384b1d7a8c2da1e61e6b48ac58a4bffc14a6ac Mon Sep 17 00:00:00 2001 From: dotcomnerd Date: Wed, 19 Feb 2025 18:49:01 -0800 Subject: [PATCH 09/10] =?UTF-8?q?=E2=9C=A8=20enhance=20communuity=20pg=20U?= =?UTF-8?q?X=20and=20navbar(s)=20auth=20state=20rendering?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/community/page.tsx | 38 ++++++-- components/navigation/marketing.tsx | 120 ++++++++++++----------- components/navigation/studio.tsx | 141 +++++++++++++--------------- 3 files changed, 149 insertions(+), 150 deletions(-) diff --git a/app/community/page.tsx b/app/community/page.tsx index 70c69b1..a08ea81 100644 --- a/app/community/page.tsx +++ b/app/community/page.tsx @@ -2,7 +2,9 @@ import { auth } from "@/lib/auth"; import { prisma } from "@/lib/prisma"; import { Metadata } from "next"; import { ImageGallery } from "./image-gallery"; - +import { headers } from 'next/headers'; +import { Button } from '@/components/ui/button'; +import Link from "next/link"; export const dynamic = 'force-dynamic' export const metadata: Metadata = { @@ -84,18 +86,34 @@ async function getAllPublicImages() { export default async function CommunityPage() { const images = await getAllPublicImages(); - const currentUser = await auth(); + const currentUser = await auth.api.getSession({ + headers: headers() + }); return (
-
- +
+ {images.length > 0 ? ( + + ) : ( +
+

+ Community Gallery +

+

+ Be the first to share your creations with the community! Head over to the Studio to get started. +

+ +
+ )}
); -} \ No newline at end of file +} diff --git a/components/navigation/marketing.tsx b/components/navigation/marketing.tsx index 446a0d0..a908bed 100644 --- a/components/navigation/marketing.tsx +++ b/components/navigation/marketing.tsx @@ -1,13 +1,14 @@ "use client"; -import * as React from "react"; +import { authClient, signIn, useSession } from "@/lib/auth-client"; +import { ChevronDown, GalleryVertical, LogOut, Menu, UserIcon } from 'lucide-react'; import Link from "next/link"; -import { signIn, signOut, useSession } from "next-auth/react"; -import { ChevronDown, Frame, LogOut, Menu, User } from 'lucide-react'; +import * as React from "react"; +import { type User } from 'better-auth'; +import { useRouter } from 'next/navigation'; -import { cn } from "@/lib/utils"; -import Spinner from '@/components/spinner/spinner'; import { ThemeToggle } from '@/components/theme-toggle'; +import { cn } from "@/lib/utils"; import logo from "@/public/logo.svg"; import icon from "@/public/logo.webp"; @@ -15,9 +16,8 @@ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"; -import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from "@/components/ui/sheet"; import { NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger } from "@/components/ui/navigation-menu"; -import { type User as NextAuthUser } from "next-auth"; +import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from "@/components/ui/sheet"; const productItems = [ { @@ -74,7 +74,7 @@ const ListItem = React.forwardRef< ListItem.displayName = "ListItem"; export const UserAvatar = ({ user, className = "h-8 w-8" }: { - user: NextAuthUser | undefined, + user: User | undefined, className?: string }) => ( @@ -109,62 +109,30 @@ const SignOutDialog = ({ onSignOut }: { onSignOut: () => Promise } ); export function Navbar() { - const { data: session, status } = useSession(); + const { data: session, isPending: loading, error } = useSession(); + const router = useRouter(); const [isOpen, setIsOpen] = React.useState(false); - const handleSignOut = async () => { - await signOut({ redirect: true, callbackUrl: '/' }); - }; - - const platformItems = [ + const platformItems = React.useMemo(() => session ? [ { title: "About", href: "/about", description: "Learn more about our mission and team." }, { title: "Community", href: "/community", description: "Join our growing community of developers." }, { title: "Studio", href: "/studio", description: "Access your development workspace." }, - ...(status === 'authenticated' ? [ - { - title: "Profile", - href: `/${session?.user?.name}/profile`, - description: "Manage your account settings and preferences." - } - ] : []) - ]; - - const renderAuthButton = () => { - if (status === 'loading') { - return ( - - ); - } - - if (status === 'authenticated' && session) { - return ( - - - - - - - - Account - - - - - - - ); + { + title: "Profile", + href: `/${session?.user?.name}/profile`, + description: "Manage your account settings and preferences." } + ] : [], [session]); - return ( - - ); - }; + const handleSignOut = React.useCallback(async () => { + await authClient.signOut({ + fetchOptions: { + onSuccess: () => { + router.push('/') + } + } + }) + }, [router]); return ( ); -} \ No newline at end of file +} diff --git a/components/navigation/studio.tsx b/components/navigation/studio.tsx index ebc480f..c17bd5b 100644 --- a/components/navigation/studio.tsx +++ b/components/navigation/studio.tsx @@ -1,7 +1,7 @@ "use client"; import { ChevronDown, Frame, GalleryVertical, Github, Info, LogOut, LucideIcon, Menu, User } from "lucide-react"; -import { signIn, signOut, useSession } from "next-auth/react"; +import { signIn, signOut, useSession } from "@/lib/auth-client"; import Link from "next/link"; import { usePathname } from "next/navigation"; import * as React from "react"; @@ -62,12 +62,12 @@ const ListItem = React.forwardRef, ListItemProps>( ListItem.displayName = "ListItem"; export function StudioNavbar() { - const { data: session, status } = useSession(); + const { data: session, isPending: loading, error } = useSession(); const pathname = usePathname(); const [isOpen, setIsOpen] = React.useState(false); const handleSignOut = async () => { - await signOut({ redirect: true, callbackUrl: '/' }); + await signOut() }; const resourceItems: ResourceItem[] = [ @@ -97,82 +97,12 @@ export function StudioNavbar() { } ]; - const renderAuthButton = () => { - if (status === 'loading') { - return ( - - ); - } - - if (status === 'authenticated' && session) { - return ( - - - - - - - - Account - - - - - Community - - - - - - e.preventDefault()} className="text-red-600 dark:text-red-400"> - Sign Out - - - - - Are you sure you want to sign out? - - You won't be able to save your changes. - - - - Cancel - - Sign Out - - - - - - - ); - } - - return ( - - ); - }; - return (
Seleneo Logo Seleneo - {/* - Pre-release - */} @@ -206,7 +136,62 @@ export function StudioNavbar() { "h-4 w-px bg-border": pathname.includes("/studio") })} /> - {renderAuthButton()} + {loading ? ( + + ) : session ? ( + + + + + + + + Account + + + + + Community + + + + + + e.preventDefault()} className="text-red-600 dark:text-red-400"> + Sign Out + + + + + Are you sure you want to sign out? + + You won't be able to save your changes. + + + + Cancel + + Sign Out + + + + + + + ) : ( + + )}
@@ -224,7 +209,7 @@ export function StudioNavbar() {
- {status === 'authenticated' && session && ( + {session && (
@@ -252,7 +237,7 @@ export function StudioNavbar() { ))}
- {status === 'authenticated' ? ( + {session ? (
); -} \ No newline at end of file +} From 2c6f8fb0b06a8e6f64c29003de558c1e0d9d99bd Mon Sep 17 00:00:00 2001 From: dotcomnerd Date: Wed, 19 Feb 2025 18:53:06 -0800 Subject: [PATCH 10/10] =?UTF-8?q?=F0=9F=90=B3=20env=20vars,=20mount=20a=20?= =?UTF-8?q?volume,=20and=20use=20v15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 09f0862..8147356 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,17 @@ -version: '3' +version: "3.8" + services: postgres: - image: postgres:latest + image: postgres:15 + container_name: postgres_db ports: - "5432:5432" environment: - POSTGRES_USER: root - POSTGRES_PASSWORD: postgres123 - POSTGRES_DB: seleneo_db + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + POSTGRES_DB: ${POSTGRES_DB} volumes: - - ./data:/var/lib/postgresql/data + - postgres_data:/var/lib/postgresql/data + +volumes: + postgres_data: