1 parent
27de078f54
commit
e85e4d74ea
378 files changed
+20710
-22428
No files matched your search
@@ -1,37 +1,41 @@
|
||||
import { redirect } from "next/navigation";
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
||||
import { Prisma } from "@/generated/prisma/client";
|
||||
import { canAccess, getAdminContext, PERMS } from "@/lib/permissions";
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import { getWatchedUserIds } from "@/lib/services/watch";
|
||||
import { UserAccountInfo } from "../../_components/user-account-info";
|
||||
import { UserHero } from "../../_components/user-hero";
|
||||
import { loadUserById } from "../../_lib/load-user";
|
||||
import { UserActivityLog } from "../../[id]/user-activity-log";
|
||||
import { UserBadgesSection } from "../../[id]/user-badges-section";
|
||||
import { UserBanSection } from "../../[id]/user-ban-section";
|
||||
import { UserEditForm } from "../../[id]/user-edit-form";
|
||||
import { UserQuickActions } from "../../[id]/user-quick-actions";
|
||||
import { UserRooms } from "../../[id]/user-rooms";
|
||||
import { redirect } from 'next/navigation'
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
|
||||
import { Prisma } from '@/generated/prisma/client'
|
||||
import { canAccess, getAdminContext, PERMS } from '@/lib/permissions'
|
||||
import { prisma } from '@/lib/prisma'
|
||||
import { getWatchedUserIds } from '@/lib/services/watch'
|
||||
import { UserAccountInfo } from '../../_components/user-account-info'
|
||||
import { UserHero } from '../../_components/user-hero'
|
||||
import { loadUserById } from '../../_lib/load-user'
|
||||
import { UserActivityLog } from '../../[id]/user-activity-log'
|
||||
import { UserBadgesSection } from '../../[id]/user-badges-section'
|
||||
import { UserBanSection } from '../../[id]/user-ban-section'
|
||||
import { UserEditForm } from '../../[id]/user-edit-form'
|
||||
import { UserQuickActions } from '../../[id]/user-quick-actions'
|
||||
import { UserRooms } from '../../[id]/user-rooms'
|
||||
|
||||
export default async function UserEditPage({ params }: { params: Promise<{ locale: string; id: string }> }) {
|
||||
const { id } = await params;
|
||||
const { session, permissions } = await getAdminContext();
|
||||
export default async function UserEditPage({
|
||||
params,
|
||||
}: {
|
||||
params: Promise<{ locale: string; id: string }>
|
||||
}) {
|
||||
const { id } = await params
|
||||
const { session, permissions } = await getAdminContext()
|
||||
if (!canAccess(permissions, PERMS.USERS_EDIT, session.user.rank)) {
|
||||
redirect("/admin");
|
||||
redirect('/admin')
|
||||
}
|
||||
|
||||
const data = await loadUserById(id);
|
||||
const watched = await getWatchedUserIds(session.user.id);
|
||||
const data = await loadUserById(id)
|
||||
const watched = await getWatchedUserIds(session.user.id)
|
||||
|
||||
// Fetch rank list from permissions table for the rank dropdown
|
||||
const rawRanks: { id: number; rank_name: string }[] = await prisma.$queryRaw(
|
||||
Prisma.sql`SELECT id, rank_name FROM permissions ORDER BY id ASC`,
|
||||
);
|
||||
)
|
||||
const ranks = rawRanks.map((r) => ({
|
||||
id: Number(r.id),
|
||||
name: String(r.rank_name || `Rank ${r.id}`),
|
||||
}));
|
||||
}))
|
||||
|
||||
return (
|
||||
<div className="space-y-6">
|
||||
@@ -55,7 +59,9 @@ export default async function UserEditPage({ params }: { params: Promise<{ local
|
||||
<TabsTrigger value="edit">Edit Profile</TabsTrigger>
|
||||
<TabsTrigger value="bans">
|
||||
Bans
|
||||
{data.activeBan && <span className="ml-1.5 flex h-2 w-2 rounded-full bg-destructive" />}
|
||||
{data.activeBan && (
|
||||
<span className="ml-1.5 flex h-2 w-2 rounded-full bg-destructive" />
|
||||
)}
|
||||
</TabsTrigger>
|
||||
<TabsTrigger value="badges">Badges ({data.user.badges.length})</TabsTrigger>
|
||||
<TabsTrigger value="rooms">Rooms ({data.roomCount})</TabsTrigger>
|
||||
@@ -119,9 +125,13 @@ export default async function UserEditPage({ params }: { params: Promise<{ local
|
||||
</Tabs>
|
||||
|
||||
<aside className="lg:sticky lg:top-4 lg:self-start">
|
||||
<UserQuickActions userId={data.user.id} username={data.user.username} isOnline={data.isOnline} />
|
||||
<UserQuickActions
|
||||
userId={data.user.id}
|
||||
username={data.user.username}
|
||||
isOnline={data.isOnline}
|
||||
/>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
)
|
||||
}
|
||||
Reference in new issue
Block a user