vkashti / app / account / page.tsx
page.tsx
Raw
import EmailForm from '@/components/ui/AccountForms/EmailForm';
import NameForm from '@/components/ui/AccountForms/NameForm';
import RoleDisplay from '@/components/ui/AccountForms/RoleDisplay';
import { redirect } from 'next/navigation';
import { createClient } from '@/utils/supabase/server';
import {
  getUserDetails,
  getSubscription,
  getUser,
  getUserRole
} from '@/utils/supabase/queries';

export default async function Account() {
  const supabase = createClient();
  const [user, userDetails, subscription] = await Promise.all([
    getUser(supabase),
    getUserDetails(supabase),
    getSubscription(supabase)
  ]);

  if (!user) {
    return redirect('/signin');
  }

  // Get user role
  const userRole = await getUserRole(supabase, user.id);

  return (
    <section className="min-h-screen bg-orange-100">
      <div className="max-w-6xl px-4 py-8 mx-auto sm:px-6 sm:pt-16 lg:px-8">
        <div className="sm:align-center sm:flex sm:flex-col">
          <h1 className="text-4xl font-bold text-center sm:text-5xl">
            Вашият Профил
          </h1>
          <p className="max-w-2xl m-auto mt-5 text-lg text-base-content/70 text-center">
            Управлявайте настройките на профила си и абонамента
          </p>
        </div>
      </div>
      <div className="max-w-4xl mx-auto p-4 space-y-6">
        <NameForm userName={userDetails?.full_name ?? ''} />
        <EmailForm userEmail={user.email} />
        <RoleDisplay userRole={userRole} />
      </div>
    </section>
  );
}