This commit is contained in:
2025-12-03 01:24:52 -03:00
parent 3a49b13cb9
commit 38c49ff370
21 changed files with 133 additions and 73 deletions

View File

@@ -26,6 +26,7 @@ import {
} from './ui/dropdown-menu'
type NavItem = {
appId: string
title: string
url: string
icon: LucideIcon
@@ -34,23 +35,27 @@ type NavItem = {
const apps: NavItem[] = [
{
appId: 'saladeaula',
title: 'Sala de aula',
url: '//scorm.eduseg.workers.dev',
icon: GraduationCapIcon
},
{
appId: 'admin',
title: 'Administrador',
url: '//admin.saladeaula.digital',
icon: LayoutDashboardIcon,
scope: ['apps:admin']
},
{
appId: 'studio',
title: 'EDUSEG® Estúdio',
url: '//studio.saladeaula.digital',
icon: CirclePlayIcon,
scope: ['apps:studio']
},
{
appId: 'insights',
title: 'EDUSEG® Insights',
url: '//insights.saladeaula.digital',
icon: LightbulbIcon,
@@ -59,13 +64,15 @@ const apps: NavItem[] = [
]
export function NavUser({
user
user,
excludeApps
}: {
user: {
name: string
email: string
scope: string
}
excludeApps: string[]
}) {
const userScope = user.scope.split(' ')
@@ -135,19 +142,21 @@ export function NavUser({
</>
)}
{apps.map(({ title, url, scope = [], icon: Icon }, idx) => {
if (grantIfHas(scope, userScope)) {
return (
<DropdownMenuItem key={idx} asChild>
<Link to={url} className="cursor-pointer">
<Icon /> {title}
</Link>
</DropdownMenuItem>
)
}
{apps
.filter(({ appId }) => !excludeApps.includes(appId))
.map(({ appId, title, url, scope = [], icon: Icon }) => {
if (grantIfHas(scope, userScope)) {
return (
<DropdownMenuItem key={appId} asChild>
<Link to={url} className="cursor-pointer">
<Icon /> {title}
</Link>
</DropdownMenuItem>
)
}
return <></>
})}
return <></>
})}
</DropdownMenuGroup>
<DropdownMenuSeparator />