funkwhale/front/src/router/routes/manage.ts

183 wiersze
5.8 KiB
TypeScript

import type { RouteRecordRaw } from 'vue-router'
import { hasPermissions } from '~/router/guards'
export default [
{
path: '/manage/settings',
name: 'manage.settings',
beforeEnter: hasPermissions('settings'),
component: () => import('~/views/admin/Settings.vue')
},
{
path: '/manage/library',
beforeEnter: hasPermissions('library'),
component: () => import('~/views/admin/library/Base.vue'),
children: [
{
path: 'edits',
name: 'manage.library.edits',
component: () => import('~/views/admin/library/EditsList.vue'),
props: route => ({ defaultQuery: route.query.q })
},
{
path: 'artists',
name: 'manage.library.artists',
component: () => import('~/views/admin/CommonList.vue'),
props: route => ({ defaultQuery: route.query.q, type: 'artists' })
},
{
path: 'artists/:id',
name: 'manage.library.artists.detail',
component: () => import('~/views/admin/library/ArtistDetail.vue'),
props: true
},
{
path: 'channels',
name: 'manage.channels',
component: () => import('~/views/admin/CommonList.vue'),
props: route => ({ defaultQuery: route.query.q, type: 'channels' })
},
{
path: 'channels/:id',
name: 'manage.channels.detail',
component: () => import('~/views/admin/ChannelDetail.vue'),
props: true
},
{
path: 'albums',
name: 'manage.library.albums',
component: () => import('~/views/admin/CommonList.vue'),
props: route => ({ defaultQuery: route.query.q, type: 'albums' })
},
{
path: 'albums/:id',
name: 'manage.library.albums.detail',
component: () => import('~/views/admin/library/AlbumDetail.vue'),
props: true
},
{
path: 'tracks',
name: 'manage.library.tracks',
component: () => import('~/views/admin/CommonList.vue'),
props: route => ({ defaultQuery: route.query.q, type: 'tracks' })
},
{
path: 'tracks/:id',
name: 'manage.library.tracks.detail',
component: () => import('~/views/admin/library/TrackDetail.vue'),
props: true
},
{
path: 'libraries',
name: 'manage.library.libraries',
component: () => import('~/views/admin/CommonList.vue'),
props: route => ({ defaultQuery: route.query.q, type: 'libraries' })
},
{
path: 'libraries/:id',
name: 'manage.library.libraries.detail',
component: () => import('~/views/admin/library/LibraryDetail.vue'),
props: true
},
{
path: 'uploads',
name: 'manage.library.uploads',
component: () => import('~/views/admin/CommonList.vue'),
props: route => ({ defaultQuery: route.query.q, type: 'uploads' })
},
{
path: 'uploads/:id',
name: 'manage.library.uploads.detail',
component: () => import('~/views/admin/library/UploadDetail.vue'),
props: true
},
{
path: 'tags',
name: 'manage.library.tags',
component: () => import('~/views/admin/CommonList.vue'),
props: route => ({ defaultQuery: route.query.q, type: 'tags' })
},
{
path: 'tags/:id',
name: 'manage.library.tags.detail',
component: () => import('~/views/admin/library/TagDetail.vue'),
props: true
}
]
},
{
path: '/manage/users',
beforeEnter: hasPermissions('settings'),
component: () => import('~/views/admin/users/Base.vue'),
children: [
{
path: 'users',
name: 'manage.users.users.list',
component: () => import('~/views/admin/CommonList.vue'),
props: route => ({ type: 'users' })
},
{
path: 'invitations',
name: 'manage.users.invitations.list',
component: () => import('~/views/admin/CommonList.vue'),
props: route => ({ type: 'invitations' })
}
]
},
{
path: '/manage/moderation',
beforeEnter: hasPermissions('moderation'),
component: () => import('~/views/admin/moderation/Base.vue'),
children: [
{
path: 'domains',
name: 'manage.moderation.domains.list',
component: () => import('~/views/admin/moderation/DomainsList.vue')
},
{
path: 'domains/:id',
name: 'manage.moderation.domains.detail',
component: () => import('~/views/admin/moderation/DomainsDetail.vue'),
props: true
},
{
path: 'accounts',
name: 'manage.moderation.accounts.list',
component: () => import('~/views/admin/CommonList.vue'),
props: route => ({ defaultQuery: route.query.q, type: 'accounts' })
},
{
path: 'accounts/:id',
name: 'manage.moderation.accounts.detail',
component: () => import('~/views/admin/moderation/AccountsDetail.vue'),
props: true
},
{
path: 'reports',
name: 'manage.moderation.reports.list',
component: () => import('~/views/admin/moderation/ReportsList.vue'),
props: route => ({ defaultQuery: route.query.q, updateUrl: true, orderingConfigName: null })
},
{
path: 'reports/:id',
name: 'manage.moderation.reports.detail',
component: () => import('~/views/admin/moderation/ReportDetail.vue'),
props: true
},
{
path: 'requests',
name: 'manage.moderation.requests.list',
component: () => import('~/views/admin/moderation/RequestsList.vue'),
props: route => ({ defaultQuery: route.query.q, updateUrl: true, orderingConfigName: null })
},
{
path: 'requests/:id',
name: 'manage.moderation.requests.detail',
component: () => import('~/views/admin/moderation/RequestDetail.vue'),
props: true
}
]
},
] as RouteRecordRaw[]