import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; import { HomeComponent } from './home/home.component'; import { AddStudentDialog, StudentsComponent } from './students/students.component'; import { RouterModule, Routes } from "@angular/router"; import { HttpClientModule } from "@angular/common/http"; import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { LoginComponent } from "./login/login.component"; import { RegisterComponent } from "./register/register.component"; import { httpInterceptorProviders } from './auth/auth-interceptor'; import { RoleGuard } from "./guards/role.guard"; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MaterialModule } from "./material/material.module"; import { AddSubjectDialog, SubjectListComponent } from './subject/subject-list/subject-list.component'; import { StudentSelectionDialog, SubjectDetailsComponent } from './subject/subject-details/subject-details.component'; import { SubjectForStudentComponent } from './subject/subject-for-student/subject-for-student.component'; const routes: Routes = [ { path: 'home', component: HomeComponent }, { path: 'students', component: StudentsComponent, canActivate: [RoleGuard], data: { roles: ['ROLE_ADMIN'] }, }, { path: 'subjects', component: SubjectListComponent, canActivate: [RoleGuard], data: { roles: ['ROLE_ADMIN'] }, }, { path: 'subjects/:id', component: SubjectDetailsComponent, canActivate: [RoleGuard], data: { roles: ['ROLE_ADMIN'] }, }, { path: 'student/subjects', component: SubjectForStudentComponent, canActivate: [RoleGuard], data: { roles: ['ROLE_USER'] }, }, { path: 'auth/login', component: LoginComponent }, { path: 'auth/signup', component: RegisterComponent }, { path: '', redirectTo: 'home', pathMatch: 'full' } ]; @NgModule({ declarations: [ AppComponent, HomeComponent, StudentsComponent, LoginComponent, RegisterComponent, SubjectListComponent, AddSubjectDialog, SubjectDetailsComponent, AddStudentDialog, StudentSelectionDialog, SubjectForStudentComponent, ], imports: [ BrowserModule, HttpClientModule, FormsModule, RouterModule.forRoot(routes), BrowserAnimationsModule, MaterialModule, ReactiveFormsModule ], providers: [httpInterceptorProviders, AppComponent], bootstrap: [AppComponent] }) export class AppModule { }