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.
This commit is contained in:
giancarlo
2024-04-08 14:03:22 +08:00
parent 9fca45c2de
commit 9a5e614ad5

View File

@@ -1,5 +1,9 @@
import { redirect } from 'next/navigation';
import { Home, Users } from 'lucide-react'; import { Home, Users } from 'lucide-react';
import { requireUser } from '@kit/supabase/require-user';
import { getSupabaseServerActionClient } from '@kit/supabase/server-actions-client';
import { import {
Sidebar, Sidebar,
SidebarContent, SidebarContent,
@@ -7,9 +11,17 @@ import {
SidebarItem, SidebarItem,
} from '@kit/ui/sidebar'; } from '@kit/ui/sidebar';
import { ProfileAccountDropdownContainer } from '~/(dashboard)/home/_components/personal-account-dropdown-container';
import { AppLogo } from '~/components/app-logo'; import { AppLogo } from '~/components/app-logo';
export function AdminSidebar() { export async function AdminSidebar() {
const client = getSupabaseServerActionClient();
const user = await requireUser(client);
if (user.error) {
redirect(user.redirectTo);
}
return ( return (
<Sidebar> <Sidebar>
<SidebarContent className={'py-4'}> <SidebarContent className={'py-4'}>
@@ -30,6 +42,10 @@ export function AdminSidebar() {
</SidebarItem> </SidebarItem>
</SidebarGroup> </SidebarGroup>
</SidebarContent> </SidebarContent>
<SidebarContent className={'absolute bottom-4'}>
<ProfileAccountDropdownContainer user={user.data} collapsed={false} />
</SidebarContent>
</Sidebar> </Sidebar>
); );
} }