diff --git a/index/src/app/view/admin/admin-routing.module.ts b/index/src/app/view/admin/admin-routing.module.ts
index 8648c1e..6d63b80 100644
--- a/index/src/app/view/admin/admin-routing.module.ts
+++ b/index/src/app/view/admin/admin-routing.module.ts
@@ -10,19 +10,27 @@ import {AdminUpdateComponent} from './admin-update/admin-update.component';
import {AdminUserComponent} from './admin-user/admin-user.component';
import {AdminUserinfoComponent} from './admin-userinfo/admin-userinfo.component';
import {AdminVisitorComponent} from './admin-visitor/admin-visitor.component';
+import {AdminComponent} from './admin.component';
+import {AuthGuard} from './auth.guard';
const routes: Routes = [
- {path: 'article', component: AdminArticleComponent},
- {path: 'comment', component: AdminCommentComponent},
- {path: 'category', component: AdminCategoryComponent},
- {path: 'link', component: AdminLinkComponent},
- {path: 'tag', component: AdminTagComponent},
- {path: 'update', component: AdminUpdateComponent},
- {path: 'user', component: AdminUserComponent},
- {path: 'userInfo', component: AdminUserinfoComponent},
- {path: 'visitor', component: AdminVisitorComponent},
- {path: '**', component: AdminIndexComponent}
+ {
+ path: '',
+ component: AdminComponent,
+ children: [
+ {path: 'article', component: AdminArticleComponent, canActivate: [AuthGuard]},
+ {path: 'comment', component: AdminCommentComponent, canActivate: [AuthGuard]},
+ {path: 'category', component: AdminCategoryComponent, canActivate: [AuthGuard]},
+ {path: 'link', component: AdminLinkComponent, canActivate: [AuthGuard]},
+ {path: 'tag', component: AdminTagComponent, canActivate: [AuthGuard]},
+ {path: 'update', component: AdminUpdateComponent, canActivate: [AuthGuard]},
+ {path: 'user', component: AdminUserComponent, canActivate: [AuthGuard]},
+ {path: 'userInfo', component: AdminUserinfoComponent, canActivate: [AuthGuard]},
+ {path: 'visitor', component: AdminVisitorComponent, canActivate: [AuthGuard]},
+ {path: '**', component: AdminIndexComponent, canActivate: [AuthGuard]}
+ ]
+ }
];
@NgModule({
diff --git a/index/src/app/view/admin/admin.component.html b/index/src/app/view/admin/admin.component.html
new file mode 100644
index 0000000..8a9131c
--- /dev/null
+++ b/index/src/app/view/admin/admin.component.html
@@ -0,0 +1,12 @@
+
admin works!
+indec
+article
+category
+comment
+link
+tag
+update
+user
+userInfo
+visitor
+
diff --git a/index/src/app/view/admin/admin.component.less b/index/src/app/view/admin/admin.component.less
new file mode 100644
index 0000000..04b3e9a
--- /dev/null
+++ b/index/src/app/view/admin/admin.component.less
@@ -0,0 +1,4 @@
+a{
+ margin: 5px;
+ padding: 10px;
+}
diff --git a/index/src/app/view/admin/admin.component.spec.ts b/index/src/app/view/admin/admin.component.spec.ts
new file mode 100644
index 0000000..72e742f
--- /dev/null
+++ b/index/src/app/view/admin/admin.component.spec.ts
@@ -0,0 +1,25 @@
+import { async, ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { AdminComponent } from './admin.component';
+
+describe('AdminComponent', () => {
+ let component: AdminComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async(() => {
+ TestBed.configureTestingModule({
+ declarations: [ AdminComponent ]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(AdminComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/index/src/app/view/admin/admin.component.ts b/index/src/app/view/admin/admin.component.ts
new file mode 100644
index 0000000..76def9d
--- /dev/null
+++ b/index/src/app/view/admin/admin.component.ts
@@ -0,0 +1,15 @@
+import { Component, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'app-admin',
+ templateUrl: './admin.component.html',
+ styleUrls: ['./admin.component.less']
+})
+export class AdminComponent implements OnInit {
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+}
diff --git a/index/src/app/view/admin/admin.module.ts b/index/src/app/view/admin/admin.module.ts
index 010b9df..8f06c5b 100644
--- a/index/src/app/view/admin/admin.module.ts
+++ b/index/src/app/view/admin/admin.module.ts
@@ -11,6 +11,7 @@ import {AdminUpdateComponent} from './admin-update/admin-update.component';
import {AdminUserComponent} from './admin-user/admin-user.component';
import {AdminUserinfoComponent} from './admin-userinfo/admin-userinfo.component';
import {AdminVisitorComponent} from './admin-visitor/admin-visitor.component';
+import { AdminComponent } from './admin.component';
@NgModule({
@@ -24,7 +25,8 @@ import {AdminVisitorComponent} from './admin-visitor/admin-visitor.component';
AdminUpdateComponent,
AdminUserComponent,
AdminUserinfoComponent,
- AdminVisitorComponent
+ AdminVisitorComponent,
+ AdminComponent
],
imports: [
CommonModule,
diff --git a/index/src/app/view/admin/auth.guard.spec.ts b/index/src/app/view/admin/auth.guard.spec.ts
new file mode 100644
index 0000000..e362298
--- /dev/null
+++ b/index/src/app/view/admin/auth.guard.spec.ts
@@ -0,0 +1,16 @@
+import {TestBed} from '@angular/core/testing';
+
+import {AuthGuard} from './auth.guard';
+
+describe('AuthGuard', () => {
+ let guard: AuthGuard;
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({});
+ guard = TestBed.inject(AuthGuard);
+ });
+
+ it('should be created', () => {
+ expect(guard).toBeTruthy();
+ });
+});
diff --git a/index/src/app/view/admin/auth.guard.ts b/index/src/app/view/admin/auth.guard.ts
new file mode 100644
index 0000000..a233ad1
--- /dev/null
+++ b/index/src/app/view/admin/auth.guard.ts
@@ -0,0 +1,33 @@
+import {Injectable} from '@angular/core';
+import {CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree} from '@angular/router';
+import {Observable} from 'rxjs';
+import {User} from '../../class/User';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class AuthGuard implements CanActivate {
+
+ constructor() {
+ }
+
+ userInfo: User;
+
+ canActivate(
+ next: ActivatedRouteSnapshot,
+ state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {
+ const path = state.url.indexOf('?') > 0 ? state.url.substr(0, state.url.indexOf('?')) : state.url;
+ switch (path) {
+ case '/admin/article':
+ case '/admin/category':
+ case '/admin/link':
+ case '/admin/tag':
+ case '/admin/update':
+ case '/admin/user':
+ case '/admin/visitor':
+ if (!this.userInfo || this.userInfo.role !== 'admin') return false;
+ }
+ return true;
+ }
+
+}