diff options
Diffstat (limited to 'client/src/app/app-routing.module.ts')
-rw-r--r-- | client/src/app/app-routing.module.ts | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts index 4619c4046..444b6f134 100644 --- a/client/src/app/app-routing.module.ts +++ b/client/src/app/app-routing.module.ts | |||
@@ -5,7 +5,8 @@ import { MenuGuards } from '@app/core/routing/menu-guard.service' | |||
5 | import { POSSIBLE_LOCALES } from '@shared/core-utils/i18n' | 5 | import { POSSIBLE_LOCALES } from '@shared/core-utils/i18n' |
6 | import { MetaGuard, PreloadSelectedModulesList } from './core' | 6 | import { MetaGuard, PreloadSelectedModulesList } from './core' |
7 | import { EmptyComponent } from './empty.component' | 7 | import { EmptyComponent } from './empty.component' |
8 | import { RootComponent } from './root.component' | 8 | import { USER_USERNAME_REGEX_CHARACTERS } from './shared/form-validators/user-validators' |
9 | import { ActorRedirectGuard } from './shared/shared-main' | ||
9 | 10 | ||
10 | const routes: Routes = [ | 11 | const routes: Routes = [ |
11 | { | 12 | { |
@@ -17,7 +18,8 @@ const routes: Routes = [ | |||
17 | }, | 18 | }, |
18 | { | 19 | { |
19 | path: 'home', | 20 | path: 'home', |
20 | loadChildren: () => import('./+home/home.module').then(m => m.HomeModule) | 21 | loadChildren: () => import('./+home/home.module').then(m => m.HomeModule), |
22 | canActivateChild: [ MetaGuard ] | ||
21 | }, | 23 | }, |
22 | { | 24 | { |
23 | path: 'my-account', | 25 | path: 'my-account', |
@@ -94,18 +96,22 @@ const routes: Routes = [ | |||
94 | { | 96 | { |
95 | matcher: (url): UrlMatchResult => { | 97 | matcher: (url): UrlMatchResult => { |
96 | // Matches /@:actorName | 98 | // Matches /@:actorName |
97 | if (url.length === 1 && url[0].path.match(/^@[\w]+$/gm)) { | 99 | const regex = new RegExp(`^@(${USER_USERNAME_REGEX_CHARACTERS}+)$`) |
98 | return { | 100 | if (url.length !== 1) return null |
99 | consumed: url, | 101 | |
100 | posParams: { | 102 | const matchResult = url[0].path.match(regex) |
101 | actorName: new UrlSegment(url[0].path.substr(1), {}) | 103 | if (!matchResult) return null |
102 | } | 104 | |
105 | return { | ||
106 | consumed: url, | ||
107 | posParams: { | ||
108 | actorName: new UrlSegment(matchResult[1], {}) | ||
103 | } | 109 | } |
104 | } | 110 | } |
105 | |||
106 | return null | ||
107 | }, | 111 | }, |
108 | component: RootComponent | 112 | pathMatch: 'full', |
113 | canActivate: [ ActorRedirectGuard ], | ||
114 | component: EmptyComponent | ||
109 | }, | 115 | }, |
110 | { | 116 | { |
111 | path: '', | 117 | path: '', |