- Added centralized API exports for admin functionalities. - Created permissions API for managing system permissions, including listing, creating, updating, and deleting permissions. - Developed role-permissions API for managing permissions assigned to roles, including listing, assigning, and removing permissions. - Implemented roles API for managing company roles, including listing, creating, updating, and deleting roles. - Created user-permissions API for managing individual user permissions, including assigning and revoking permissions. - Developed user-roles API for managing user roles, including listing roles assigned to users and assigning/removing roles. - Added utility functions for permission checks and route guards based on user permissions. - Implemented admin dashboard layout and roles management page with UI components for role and permission management.
37 lines
956 B
Svelte
37 lines
956 B
Svelte
<script lang="ts">
|
|
import type { Snippet } from 'svelte';
|
|
import { page } from '$app/stores';
|
|
import { Button } from '$lib/components/ui/button';
|
|
import { Shield, Key, Users, UserCog } from 'lucide-svelte';
|
|
|
|
let { children }: { children: Snippet } = $props();
|
|
|
|
const adminRoutes = [
|
|
{ name: 'Roles', path: '/dashboard/admin/roles', icon: Shield }
|
|
];
|
|
|
|
const currentPath = $derived($page.url.pathname);
|
|
</script>
|
|
|
|
<div class="min-h-screen bg-background">
|
|
<div class="border-b">
|
|
<div class="container mx-auto px-4">
|
|
<div class="flex items-center gap-2 py-4 overflow-x-auto">
|
|
{#each adminRoutes as route}
|
|
{@const Icon = route.icon}
|
|
<Button
|
|
variant={currentPath === route.path ? 'default' : 'ghost'}
|
|
href={route.path}
|
|
class="flex items-center gap-2 whitespace-nowrap"
|
|
>
|
|
<Icon class="h-4 w-4" />
|
|
{route.name}
|
|
</Button>
|
|
{/each}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{@render children()}
|
|
</div>
|