mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-06-23 15:50:47 +00:00
* ReposOwner view shows all repos owned by a person or organization uses /:repoOwner urls (e. g. ci.example.org/example-org) also includes a link from the repo page to the owner page related to #468 * ReposOwner remove add btn; msg if no projects; grid implements the changes suggested by @anbraten: - removed the `add repository` button - now shows a message `This organization / user does not have any projects yet.` when appropriate now uses `grid` instead of `flex` on desktop to keep the search bar centered and always in the same place
146 lines
3.9 KiB
TypeScript
146 lines
3.9 KiB
TypeScript
import { Component } from 'vue';
|
|
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
|
|
|
|
import useAuthentication from './compositions/useAuthentication';
|
|
|
|
const routes: RouteRecordRaw[] = [
|
|
{
|
|
path: '/',
|
|
name: 'home',
|
|
redirect: '/repos',
|
|
},
|
|
{
|
|
path: '/repos',
|
|
name: 'repos',
|
|
component: (): Component => import('~/views/Repos.vue'),
|
|
meta: { authentication: 'required' },
|
|
},
|
|
{
|
|
path: '/repo/add',
|
|
name: 'repo-add',
|
|
component: (): Component => import('~/views/RepoAdd.vue'),
|
|
meta: { authentication: 'required' },
|
|
},
|
|
{
|
|
path: '/:repoOwner',
|
|
name: 'repos-owner',
|
|
component: (): Component => import('~/views/ReposOwner.vue'),
|
|
props: true,
|
|
meta: { authentication: 'required' },
|
|
},
|
|
{
|
|
path: '/:repoOwner/:repoName',
|
|
name: 'repo-wrapper',
|
|
component: (): Component => import('~/views/repo/RepoWrapper.vue'),
|
|
props: true,
|
|
children: [
|
|
{
|
|
path: '',
|
|
name: 'repo',
|
|
component: (): Component => import('~/views/repo/RepoBuilds.vue'),
|
|
meta: { repoHeader: true },
|
|
},
|
|
{
|
|
path: 'branches',
|
|
name: 'repo-branches',
|
|
component: (): Component => import('~/views/repo/RepoBranches.vue'),
|
|
meta: { repoHeader: true },
|
|
props: (route) => ({ branch: route.params.branch }),
|
|
},
|
|
{
|
|
path: 'branches/:branch',
|
|
name: 'repo-branch',
|
|
component: (): Component => import('~/views/repo/RepoBranch.vue'),
|
|
meta: { repoHeader: true },
|
|
props: (route) => ({ branch: route.params.branch }),
|
|
},
|
|
{
|
|
path: 'build/:buildId',
|
|
component: (): Component => import('~/views/repo/build/BuildWrapper.vue'),
|
|
props: true,
|
|
children: [
|
|
{
|
|
path: ':procId?',
|
|
name: 'repo-build',
|
|
component: (): Component => import('~/views/repo/build/Build.vue'),
|
|
props: true,
|
|
},
|
|
{
|
|
path: 'changed-files',
|
|
name: 'repo-build-changed-files',
|
|
component: (): Component => import('~/views/repo/build/BuildChangedFiles.vue'),
|
|
},
|
|
{
|
|
path: 'config',
|
|
name: 'repo-build-config',
|
|
component: (): Component => import('~/views/repo/build/BuildConfig.vue'),
|
|
props: true,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: 'settings',
|
|
name: 'repo-settings',
|
|
component: (): Component => import('~/views/repo/RepoSettings.vue'),
|
|
meta: { authentication: 'required' },
|
|
props: true,
|
|
},
|
|
// TODO: redirect to support backwards compatibility => remove after some time
|
|
{
|
|
path: ':buildId',
|
|
redirect: (route) => ({ name: 'repo-build', params: route.params }),
|
|
},
|
|
],
|
|
},
|
|
{
|
|
path: '/admin',
|
|
name: 'admin',
|
|
component: (): Component => import('~/views/admin/Admin.vue'),
|
|
meta: { authentication: 'required' },
|
|
props: true,
|
|
},
|
|
{
|
|
path: '/user',
|
|
name: 'user',
|
|
component: (): Component => import('~/views/User.vue'),
|
|
meta: { authentication: 'required' },
|
|
props: true,
|
|
},
|
|
{
|
|
path: '/login/error',
|
|
name: 'login-error',
|
|
component: (): Component => import('~/views/Login.vue'),
|
|
meta: { blank: true },
|
|
props: true,
|
|
},
|
|
{
|
|
path: '/do-login',
|
|
name: 'login',
|
|
component: (): Component => import('~/views/Login.vue'),
|
|
meta: { blank: true },
|
|
props: true,
|
|
},
|
|
{
|
|
path: '/:pathMatch(.*)*',
|
|
name: 'not-found',
|
|
component: (): Component => import('~/views/NotFound.vue'),
|
|
},
|
|
];
|
|
|
|
const router = createRouter({
|
|
history: createWebHistory(),
|
|
routes,
|
|
});
|
|
|
|
router.beforeEach(async (to, _, next) => {
|
|
const authentication = useAuthentication();
|
|
if (to.meta.authentication === 'required' && !authentication.isAuthenticated) {
|
|
next({ name: 'login', query: { url: to.fullPath } });
|
|
return;
|
|
}
|
|
|
|
next();
|
|
});
|
|
|
|
export default router;
|