Updated site
This commit is contained in:
@@ -1,7 +0,0 @@
|
|||||||
import { getSession } from "@/lib/auth/session"
|
|
||||||
|
|
||||||
export default async function PasswordSettings() {
|
|
||||||
const {} = await getSession()
|
|
||||||
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
@@ -20,14 +20,14 @@ export default function UserProfile() {
|
|||||||
|
|
||||||
if (isPending) {
|
if (isPending) {
|
||||||
return (
|
return (
|
||||||
<Card className="max-w-lg">
|
<Card>
|
||||||
<CardContent className="p-6">
|
<CardContent className="p-6">
|
||||||
<div className="animate-pulse">
|
<div className="animate-pulse">
|
||||||
<div className="flex items-center space-x-4">
|
<div className="flex items-center space-x-4">
|
||||||
<div className="w-16 h-16 bg-gray-200 rounded-full"></div>
|
<div className="w-16 h-16 bg-gray-200 rounded-full"></div>
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<div className="h-4 bg-gray-200 rounded w-32"></div>
|
<div className="w-32 h-4 bg-gray-200 rounded"></div>
|
||||||
<div className="h-3 bg-gray-200 rounded w-24"></div>
|
<div className="w-24 h-3 bg-gray-200 rounded"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -52,7 +52,7 @@ export default function UserProfile() {
|
|||||||
: user.email?.[0]?.toUpperCase() || "U"
|
: user.email?.[0]?.toUpperCase() || "U"
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card className="max-w-lg">
|
<Card>
|
||||||
<CardHeader className="text-center">
|
<CardHeader className="text-center">
|
||||||
<div className="flex justify-center mb-4">
|
<div className="flex justify-center mb-4">
|
||||||
<Avatar className="w-20 h-20">
|
<Avatar className="w-20 h-20">
|
||||||
@@ -62,13 +62,13 @@ export default function UserProfile() {
|
|||||||
</AvatarFallback>
|
</AvatarFallback>
|
||||||
</Avatar>
|
</Avatar>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center justify-between">
|
<div className="flex justify-between items-center">
|
||||||
<CardTitle className="text-xl">Profile</CardTitle>
|
<CardTitle className="text-xl">Profile</CardTitle>
|
||||||
</div>
|
</div>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<CardContent className="space-y-4">
|
<CardContent className="space-y-4">
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<Label className="text-sm font-medium flex items-center gap-2">
|
<Label className="flex gap-2 items-center text-sm font-medium">
|
||||||
<User className="w-4 h-4" />
|
<User className="w-4 h-4" />
|
||||||
User ID
|
User ID
|
||||||
</Label>
|
</Label>
|
||||||
@@ -80,7 +80,7 @@ export default function UserProfile() {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<Label className="text-sm font-medium flex items-center gap-2">
|
<Label className="flex gap-2 items-center text-sm font-medium">
|
||||||
<Calendar className="w-4 h-4" />
|
<Calendar className="w-4 h-4" />
|
||||||
Joined
|
Joined
|
||||||
</Label>
|
</Label>
|
||||||
@@ -155,7 +155,7 @@ function UserUpdateForm({ name, image, email }: z.infer<typeof userUpdateSchema>
|
|||||||
name="name"
|
name="name"
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<FormItem>
|
<FormItem>
|
||||||
<FormLabel className="text-sm font-medium flex items-center gap-2">
|
<FormLabel className="flex gap-2 items-center text-sm font-medium">
|
||||||
<User2 className="w-4 h-4" />
|
<User2 className="w-4 h-4" />
|
||||||
Name
|
Name
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
@@ -171,7 +171,7 @@ function UserUpdateForm({ name, image, email }: z.infer<typeof userUpdateSchema>
|
|||||||
name="image"
|
name="image"
|
||||||
render={({ field }) => (
|
render={({ field }) => (
|
||||||
<FormItem>
|
<FormItem>
|
||||||
<FormLabel className="text-sm font-medium flex items-center gap-2">
|
<FormLabel className="flex gap-2 items-center text-sm font-medium">
|
||||||
{/* eslint-disable-next-line jsx-a11y/alt-text */}
|
{/* eslint-disable-next-line jsx-a11y/alt-text */}
|
||||||
<Image className="w-4 h-4" />
|
<Image className="w-4 h-4" />
|
||||||
Image
|
Image
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export default async function UserAuthPage() {
|
|||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<DashBoardTitle title="User Auth" renderSubtitle subtitle="Manage user settings" />
|
<DashBoardTitle title="User Auth" renderSubtitle subtitle="Manage user settings" />
|
||||||
<div className="flex flex-col gap-6">
|
<div className="flex flex-col gap-6 max-w-lg">
|
||||||
<PasskeyAdd />
|
<PasskeyAdd />
|
||||||
<PasskeysList />
|
<PasskeysList />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ export default async function UserPage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div className="max-w-lg">
|
||||||
<DashBoardTitle title="User Profile" renderSubtitle subtitle="Manage Profile" />
|
<DashBoardTitle title="User Profile" renderSubtitle subtitle="Manage Profile" />
|
||||||
<UserProfile />
|
<UserProfile />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { relations } from "drizzle-orm"
|
||||||
import { boolean, integer, pgTable, text, timestamp } from "drizzle-orm/pg-core"
|
import { boolean, integer, pgTable, text, timestamp } from "drizzle-orm/pg-core"
|
||||||
|
|
||||||
export const user = pgTable("user", {
|
export const user = pgTable("user", {
|
||||||
@@ -59,3 +60,30 @@ export const passkey = pgTable("passkey", {
|
|||||||
createdAt: timestamp("created_at"),
|
createdAt: timestamp("created_at"),
|
||||||
aaguid: text("aaguid")
|
aaguid: text("aaguid")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
export const userRelations = relations(user, ({ many }) => ({
|
||||||
|
accounts: many(account),
|
||||||
|
passkeys: many(passkey),
|
||||||
|
sessions: many(session)
|
||||||
|
}))
|
||||||
|
|
||||||
|
export const accountRelations = relations(account, ({ one }) => ({
|
||||||
|
user: one(user, {
|
||||||
|
fields: [account.userId],
|
||||||
|
references: [user.id]
|
||||||
|
})
|
||||||
|
}))
|
||||||
|
|
||||||
|
export const passkeyRelations = relations(passkey, ({ one }) => ({
|
||||||
|
user: one(user, {
|
||||||
|
fields: [passkey.userId],
|
||||||
|
references: [user.id]
|
||||||
|
})
|
||||||
|
}))
|
||||||
|
|
||||||
|
export const sessionRelations = relations(session, ({ one }) => ({
|
||||||
|
user: one(user, {
|
||||||
|
fields: [session.userId],
|
||||||
|
references: [user.id]
|
||||||
|
})
|
||||||
|
}))
|
||||||
|
|||||||
Reference in New Issue
Block a user