Files
myeasycms-v2/apps/web/app/admin/_components/admin-sidebar.tsx
giancarlo 9a5e614ad5 Add user authentication and profile dropdown to admin sidebar
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.
2024-04-08 14:03:22 +08:00

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>
);
}