Files
acc-server-manager-web/src/app/dashboard/membership/page.tsx

39 lines
1.1 KiB
TypeScript
Executable File

import { requireAuth } from '@/lib/auth/server';
import { getUsers, getRoles } from '@/lib/api/server/membership';
import type { UserListParams } from '@/lib/api/server/membership';
import { UserManagementTable } from '@/components/membership/UserManagementTable';
interface MembershipPageProps {
searchParams: Promise<{
username?: string;
role_name?: string;
sort_by?: string;
sort_desc?: string;
page?: string;
}>;
}
export default async function MembershipPage({ searchParams }: MembershipPageProps) {
const session = await requireAuth();
const resolvedParams = await searchParams;
const params: UserListParams = {
username: resolvedParams.username,
role_name: resolvedParams.role_name,
sort_by: resolvedParams.sort_by || 'username',
sort_desc: resolvedParams.sort_desc === 'true',
page: parseInt(resolvedParams.page || '1'),
limit: 20
};
const [userListData, roles] = await Promise.all([
getUsers(session.token!, params),
getRoles(session.token!)
]);
return (
<UserManagementTable initialData={userListData} roles={roles} currentUser={session.user!} />
);
}