/*
============LICENSE_START==========================================
===================================================================
Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
===================================================================

Unless otherwise specified, all software contained herein is licensed
under the Apache License, Version 2.0 (the License);
you may not use this software except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
============LICENSE_END============================================
*/

import {RouterModule, Routes} from '@angular/router';

import {AboutUsComponent} from './about-us/aboutus.component';
import { CanActivate } from '@angular/router';
import {HelpComponent} from './shared/components/help/help/help.component';
import {HomeComponent} from './home/home/home.component';
import { LoginGuardService } from './vnfs/LoginGuardService/Login-guard-service';
import {LogoutComponent} from './shared/components/logout/logout.component';
import {NgModule} from '@angular/core';
import {TestComponent} from './test/test.component';
import {AdminComponent} from './admin/admin.component';
import {AnsibleServerComponent} from './admin/view-edit/ansible-server.component';


const routes: Routes = [
    {
        path: 'home',
        component: HomeComponent,
    }, {
        path: 'vnfs',
        loadChildren: './vnfs/vnfs.module#VnfsModule'
    }, {
        path: 'test',
        component: TestComponent,
        canActivate:[LoginGuardService]
    },
    {
        path: 'admin',
        component: AdminComponent,
        canActivate:[LoginGuardService]
    },
    {
        path: 'ansible-server',
        component: AnsibleServerComponent,
        canActivate:[LoginGuardService]
    },
    {
        path: 'help',
        component: HelpComponent,
        canActivate:[LoginGuardService]
    }, {
        path: 'aboutUs',
        component: AboutUsComponent,
        canActivate:[LoginGuardService]
    }, {
        path: 'logout',
        component: LogoutComponent
    }, {
        path: '',
        redirectTo: '/home',
        pathMatch: 'full'
    }
];

@NgModule({
    imports: [RouterModule.forRoot(routes)],
    
exports: [RouterModule]
})
export class AppRoutingModule {
}
