import { auth } from "@/lib/auth";
import { redirect } from "@/i18n/navigation";
import { setRequestLocale } from "next-intl/server";
import UsersClient from "@/components/users/UsersClient";
import { canImpersonate, hasEffectivePermission } from "@/lib/session-utils";

export default async function UsersPage({
  params,
}: {
  params: Promise<{ locale: string }>;
}) {
  const { locale } = await params;
  setRequestLocale(locale);

  const session = await auth();
  if (!session) {
    redirect({ href: "/login", locale });
    return null;
  }

  if (!hasEffectivePermission(session, "USERS_VIEW")) {
    redirect({ href: "/dashboard", locale });
  }

  return (
    <UsersClient
      mode="users"
      canCreate={hasEffectivePermission(session, "USERS_CREATE")}
      canUpdate={hasEffectivePermission(session, "USERS_UPDATE")}
      canDelete={hasEffectivePermission(session, "USERS_DELETE")}
      canImpersonate={canImpersonate(session)}
    />
  );
}
