从"Blog"仓库中分离出来
This commit is contained in:
70
admin/src/app/app-routing.module.ts
Normal file
70
admin/src/app/app-routing.module.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
import {NgModule} from '@angular/core';
|
||||
import {NavigationStart, Router, RouterModule, Routes} from '@angular/router';
|
||||
import {filter} from 'rxjs/operators';
|
||||
import {UserService} from './services/user/user.service';
|
||||
|
||||
import {AIndexComponent} from './pages/a-index/a-index.component';
|
||||
import {ArticleManagerComponent} from './pages/article-manager/article-manager.component';
|
||||
import {CommentManagerComponent} from './pages/comment-manager/comment-manager.component';
|
||||
import {TagManagerComponent} from './pages/tag-manager/tag-manager.component';
|
||||
import {UserInfoComponent} from './pages/user-info/user-info.component';
|
||||
import {CategoryManagerComponent} from './pages/category-manager/category-manager.component';
|
||||
import {LinksManagerComponent} from './pages/links-manager/links.component';
|
||||
import {VisitorManagerComponent} from './pages/visitor-manager/visitor-manager.component';
|
||||
import {UpdateManagerComponent} from './pages/update-manager/update.component';
|
||||
import {UserManagerComponent} from './pages/user-manager/user-manager.component';
|
||||
|
||||
|
||||
const routes: Routes = [
|
||||
{path: '', component: AIndexComponent},
|
||||
{path: 'articles', component: ArticleManagerComponent},
|
||||
{path: 'comments', component: CommentManagerComponent},
|
||||
{path: 'tags', component: TagManagerComponent},
|
||||
{path: 'userInfo', component: UserInfoComponent},
|
||||
{path: 'categories', component: CategoryManagerComponent},
|
||||
{path: 'links', component: LinksManagerComponent},
|
||||
{path: 'visitors', component: VisitorManagerComponent},
|
||||
{path: 'update', component: UpdateManagerComponent},
|
||||
{path: 'users', component: UserManagerComponent},
|
||||
{path: '**', component: AIndexComponent}
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forRoot(routes)],
|
||||
exports: [RouterModule]
|
||||
})
|
||||
export class AppRoutingModule {
|
||||
|
||||
// todo : 换用路由守卫
|
||||
constructor(private router: Router, private userService: UserService) {
|
||||
this.router.events.pipe(filter((event) => event instanceof NavigationStart)
|
||||
).subscribe((event: NavigationStart) => {
|
||||
if (!this.userService.userInfo) {
|
||||
this.userService.getUserInfo().subscribe(data => {
|
||||
if (data.code === 0) {
|
||||
this.checkPermission(event);
|
||||
} else if (data.code === 301) {
|
||||
window.location.href = '/login';
|
||||
} else {
|
||||
window.location.href = '/';
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this.checkPermission(event);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private checkPermission(event) {
|
||||
if (this.userService.userInfo.role === 'user') {
|
||||
switch (event.url) {
|
||||
case '/':
|
||||
case '/comments':
|
||||
case '/userInfo':
|
||||
break;
|
||||
default :
|
||||
this.router.navigateByUrl('/');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user