The AdminSidebar function has been updated to include user authentication. If user authentication fails, a redirect is initiated. Additionally, a ProfileAccountDropdownContainer has been included in the sidebar to display user information. This improves the user experience and security of the admin sidebar.
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
import { redirect } from 'next/navigation';
|
|
|
|
import { Home, Users } from 'lucide-react';
|
|
|
|
import { requireUser } from '@kit/supabase/require-user';
|
|
import { getSupabaseServerActionClient } from '@kit/supabase/server-actions-client';
|
|
import {
|
|
Sidebar,
|
|
SidebarContent,
|
|
SidebarGroup,
|
|
SidebarItem,
|
|
} from '@kit/ui/sidebar';
|
|
|
|
import { ProfileAccountDropdownContainer } from '~/(dashboard)/home/_components/personal-account-dropdown-container';
|
|
import { AppLogo } from '~/components/app-logo';
|
|
|
|
export async function AdminSidebar() {
|
|
const client = getSupabaseServerActionClient();
|
|
const user = await requireUser(client);
|
|
|
|
if (user.error) {
|
|
redirect(user.redirectTo);
|
|
}
|
|
|
|
return (
|
|
<Sidebar>
|
|
<SidebarContent className={'py-4'}>
|
|
<AppLogo href={'/admin'} />
|
|
</SidebarContent>
|
|
|
|
<SidebarContent>
|
|
<SidebarGroup label={'Admin'} collapsible={false}>
|
|
<SidebarItem end path={'/admin'} Icon={<Home className={'h-4'} />}>
|
|
Home
|
|
</SidebarItem>
|
|
|
|
<SidebarItem
|
|
path={'/admin/accounts'}
|
|
Icon={<Users className={'h-4'} />}
|
|
>
|
|
Accounts
|
|
</SidebarItem>
|
|
</SidebarGroup>
|
|
</SidebarContent>
|
|
|
|
<SidebarContent className={'absolute bottom-4'}>
|
|
<ProfileAccountDropdownContainer user={user.data} collapsed={false} />
|
|
</SidebarContent>
|
|
</Sidebar>
|
|
);
|
|
}
|