Skip to content

Commit 6f3789b

Browse files
committed
feat: add user management page and sidebar navigation, include internationalization support for admin users
1 parent f18b7ea commit 6f3789b

File tree

6 files changed

+73
-0
lines changed

6 files changed

+73
-0
lines changed

services/frontend/src/components/AppSidebar.vue

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,17 @@ onMounted(() => {
225225
<span>{{ t('sidebar.adminArea.globalSettings') }}</span>
226226
</SidebarMenuButton>
227227
</SidebarMenuItem>
228+
<SidebarMenuItem>
229+
<SidebarMenuButton
230+
@click="navigateTo('/admin/users')"
231+
:is-active="router.currentRoute.value.path === '/admin/users'"
232+
class="w-full justify-start"
233+
:aria-current="router.currentRoute.value.path === '/admin/users' ? 'page' : undefined"
234+
>
235+
<Users class="mr-2 h-4 w-4 shrink-0" />
236+
<span>{{ t('sidebar.adminArea.users') }}</span>
237+
</SidebarMenuButton>
238+
</SidebarMenuItem>
228239
</SidebarMenu>
229240
</SidebarGroupContent>
230241
</SidebarGroup>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export default {
2+
adminUsers: {
3+
title: 'User Management',
4+
description: 'Manage all users in the system.'
5+
},
6+
}

services/frontend/src/i18n/locales/en/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import setupMessages from './setup'
55
import dashboardMessages from './dashboard'
66
import globalSettingsMessages from './globalSettings'
77
import notFoundMessages from './notFound'
8+
import adminUsersMessages from './adminUsers'
9+
import sidebarMessages from './sidebar'
810

911
export default {
1012
...commonMessages,
@@ -13,6 +15,8 @@ export default {
1315
...dashboardMessages,
1416
...globalSettingsMessages,
1517
...notFoundMessages,
18+
...adminUsersMessages,
19+
...sidebarMessages,
1620
// If there are any top-level keys directly under 'en', they can be added here.
1721
// For example, if you had a global 'appName': 'My Application'
1822
// appName: 'DeployStack Application',
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
export default {
2+
sidebar: {
3+
navigation: {
4+
title: 'Navigation',
5+
mcpServer: 'MCP Server',
6+
provider: 'Provider',
7+
credentials: 'Credentials',
8+
},
9+
adminArea: {
10+
title: 'Admin Area',
11+
globalSettings: 'Global Settings',
12+
users: 'Users',
13+
},
14+
teams: {
15+
selectTeam: 'Select Team',
16+
loading: 'Loading teams...',
17+
noTeams: 'No teams found.',
18+
},
19+
user: {
20+
account: 'Account',
21+
logout: 'Logout',
22+
},
23+
},
24+
}

services/frontend/src/router/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@ const routes = [
7979
name: 'AdminSettings',
8080
component: () => import('../views/GlobalSettings.vue'),
8181
},
82+
{
83+
path: 'users',
84+
name: 'AdminUsers',
85+
component: () => import('../views/admin/Users.vue'), // Assuming the new component will be in views/admin/
86+
},
8287
],
8388
},
8489
{
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<template>
2+
<div class="p-4">
3+
<h1 class="text-2xl font-semibold mb-4">{{ $t('adminUsers.title') }}</h1>
4+
<p>{{ $t('adminUsers.description') }}</p>
5+
<!-- User management table and functionality will go here -->
6+
</div>
7+
</template>
8+
9+
<script setup lang="ts">
10+
import { useI18n } from 'vue-i18n'
11+
12+
const { t } = useI18n()
13+
14+
// Define page title for use in DashboardLayout or similar
15+
// This is a common pattern but might need adjustment based on your layout component
16+
// definePageMeta({
17+
// title: t('adminUsers.title'),
18+
// })
19+
</script>
20+
21+
<style scoped>
22+
/* Add any page-specific styles here */
23+
</style>

0 commit comments

Comments
 (0)