57 lines
1.8 KiB
TypeScript
57 lines
1.8 KiB
TypeScript
import { Link, usePage } from '@inertiajs/react';
|
|
import type { ProfileAccess } from '@/types/profile-access';
|
|
|
|
export function profileLinks(access: ProfileAccess | null | undefined) {
|
|
if (!access) return [];
|
|
return [
|
|
...(access.mine
|
|
? [{ title: 'Minhas oportunidades', href: access.mine }]
|
|
: []),
|
|
...(access.create
|
|
? [{ title: 'Nova oportunidade', href: access.create }]
|
|
: []),
|
|
{
|
|
title: access.mine
|
|
? 'Autorizações de Promotor'
|
|
: 'Solicitar perfil de Promotor',
|
|
href: access.request,
|
|
},
|
|
...(!access.mine && access.review
|
|
? [{ title: 'Revisão de oportunidades', href: access.review }]
|
|
: []),
|
|
...(access.audit
|
|
? [{ title: 'Auditoria de acessos', href: access.audit }]
|
|
: []),
|
|
...(access.administration
|
|
? [{ title: 'Gestão de perfis', href: access.administration }]
|
|
: []),
|
|
...(access.administration
|
|
? [
|
|
{
|
|
title: 'Instalação dos perfis 040000',
|
|
href: '/management/profile-install',
|
|
},
|
|
]
|
|
: []),
|
|
];
|
|
}
|
|
|
|
export default function ProfileNavigation() {
|
|
const { profileAccess } = usePage<{
|
|
profileAccess?: ProfileAccess | null;
|
|
}>().props;
|
|
if (!profileAccess) return null;
|
|
return (
|
|
<nav
|
|
aria-label="Perfil e oportunidades"
|
|
className="flex flex-wrap gap-4 rounded border p-4"
|
|
>
|
|
{profileLinks(profileAccess).map((link) => (
|
|
<Link key={link.href} href={link.href} className="underline">
|
|
{link.title}
|
|
</Link>
|
|
))}
|
|
</nav>
|
|
);
|
|
}
|