kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
183 wiersze
5.8 KiB
TypeScript
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[]
|