diff --git a/frontend/src/app/Types/types.ts b/frontend/src/app/Types/types.ts new file mode 100644 index 0000000000000000000000000000000000000000..405dfe29b65dc493a6d66f6abc0440c79f2cdff1 --- /dev/null +++ b/frontend/src/app/Types/types.ts @@ -0,0 +1,26 @@ +export type User = { + id: number; + username: string; + password: string; + type: string; +}; + +export type QandA = { + QUESTIONS: Question[]; + ANSWERS: Answer[]; +}; + +export type Question = { + question: string; + category: string; +} + +export type Answer = { + CORRECT: string; + WRONG: string[]; +} + +export type Category = { + id: number; + category: string; +}; \ No newline at end of file diff --git a/frontend/src/app/admin/admin-routing.module.ts b/frontend/src/app/admin/admin-routing.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..f413300cb33820d53e6044d176ec3f028d614e11 --- /dev/null +++ b/frontend/src/app/admin/admin-routing.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +const routes: Routes = []; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class AdminRoutingModule { } diff --git a/frontend/src/app/admin/admin.component.css b/frontend/src/app/admin/admin.component.css new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/frontend/src/app/admin/admin.component.html b/frontend/src/app/admin/admin.component.html new file mode 100644 index 0000000000000000000000000000000000000000..3e2ff7be25e79c5bbaab498e31f5617dd539a86b --- /dev/null +++ b/frontend/src/app/admin/admin.component.html @@ -0,0 +1,26 @@ +<table> + <thead> + <th>Username</th> + <th>Type</th> + </thead> + <tbody> + <tr *ngFor="let user of users"> + <td>{{user.username}}</td> + <td>{{user.user_type}}</td> + <td><button (click)="deleteUser(user)">DELETE</button></td> + </tr> + </tbody> +</table> + +<table> + <thead> + <th>Question</th> + <th>Catégorie</th> + </thead> + <tbody> + <tr *ngFor="let question of questions"> + <td>{{question.question}}</td> + <td>{{question.category}}</td> + </tr> + </tbody> +</table> \ No newline at end of file diff --git a/frontend/src/app/admin/admin.component.spec.ts b/frontend/src/app/admin/admin.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..830d8efc80d4587b374af7e95845020825380ea6 --- /dev/null +++ b/frontend/src/app/admin/admin.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AdminComponent } from './admin.component'; + +describe('AdminComponent', () => { + let component: AdminComponent; + let fixture: ComponentFixture<AdminComponent>; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [AdminComponent] + }); + fixture = TestBed.createComponent(AdminComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/admin/admin.component.ts b/frontend/src/app/admin/admin.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..2ae1f479ce829ea3d5f8ac663607232c061120d5 --- /dev/null +++ b/frontend/src/app/admin/admin.component.ts @@ -0,0 +1,47 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { Answer, QandA, Question, User } from '../Types/types'; +import { UsersService } from '../services/users.service'; + + +@Component({ + selector: 'app-admin', + templateUrl: './admin.component.html', + styleUrls: ['./admin.component.css'] +}) +export class AdminComponent implements OnInit { + public data; + public users: User[] = []; + public questions: Question[] = []; + public answers: Answer[] = []; + + constructor( + private router: Router, + private http: HttpClient, + private userController: UsersService) { } + + ngOnInit(): void { + + + let header = new HttpHeaders().set( + "Authorization", localStorage.getItem("token") + ); + + console.log(header); + + this.http.get("http://0.0.0.0:30992/API/v1/user", {headers:header}) + .subscribe(users => { + this.users = users as User[]; + }); + + this.http.get("http://0.0.0.0:30992/API/v1/question", {headers:header}) + .subscribe(res => { + let questions = res as QandA; + this.questions = questions.QUESTIONS; + this.answers = questions.ANSWERS; + }); + } + + deleteUser(user:User) {this.userController.deleteUser(user)} +} diff --git a/frontend/src/app/admin/admin.module.ts b/frontend/src/app/admin/admin.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..e1c263202517665f0c5d8ad5e744d062f35f7260 --- /dev/null +++ b/frontend/src/app/admin/admin.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { AdminRoutingModule } from './admin-routing.module'; + + +@NgModule({ + declarations: [], + imports: [ + CommonModule, + AdminRoutingModule + ] +}) +export class AdminModule { } diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts index c2cf1139249431c1086feac99f9eecc05c2930cb..137a71c96138f9cbab50198c3bc6368d414b5c97 100644 --- a/frontend/src/app/app-routing.module.ts +++ b/frontend/src/app/app-routing.module.ts @@ -1,10 +1,14 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { LoginComponent } from './login/login.component'; +import { AdminComponent } from './admin/admin.component'; const routes: Routes = [ { - path: 'login', - loadChildren: () => import('./login/login.module').then(m => m.LoginModule) + path: 'login', component: LoginComponent + }, + { + path: 'admin', component: AdminComponent } ]; diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 7137eeec7a6379564e251c00d51d85e6c4a3caf3..d7be40c45805569bc1297b2ab602a99c6bf782b2 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -3,16 +3,22 @@ import { BrowserModule } from '@angular/platform-browser'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; -import {HttpClientModule} from '@angular/common/http'; +import {HttpClientModule} from '@angular/common/http'; +import { AdminComponent } from './admin/admin.component'; +import { LoginComponent } from './login/login.component'; +import { ReactiveFormsModule } from '@angular/forms'; @NgModule({ declarations: [ - AppComponent + AppComponent, + AdminComponent, + LoginComponent ], imports: [ BrowserModule, AppRoutingModule, - HttpClientModule + HttpClientModule, + ReactiveFormsModule ], providers: [], bootstrap: [AppComponent] diff --git a/frontend/src/app/login/login.component.ts b/frontend/src/app/login/login.component.ts index 0caa4f7bcd9ec25e4259ae9d5a96da29f7552a1b..64e2754b5a605e452e6afc88b654b7729ac89c58 100644 --- a/frontend/src/app/login/login.component.ts +++ b/frontend/src/app/login/login.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from '@angular/core'; import { FormControl, FormGroup, Validators } from '@angular/forms'; import { Router } from '@angular/router'; -import { AuthenticationService } from '../authentication.service'; +import { AuthenticationService } from '../services/authentication.service'; @Component({ selector: 'app-login', diff --git a/frontend/src/app/login/login.module.ts b/frontend/src/app/login/login.module.ts index 9064214d464cef1a23d969d8df89be75f5747bf5..9e04d47b47336cf9c595fe51898d772880d1902f 100644 --- a/frontend/src/app/login/login.module.ts +++ b/frontend/src/app/login/login.module.ts @@ -2,17 +2,12 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { LoginRoutingModule } from './login-routing.module'; -import { LoginComponent } from './login.component'; - -import { ReactiveFormsModule } from '@angular/forms'; @NgModule({ declarations: [ - LoginComponent ], imports: [ CommonModule, - ReactiveFormsModule, LoginRoutingModule ] }) diff --git a/frontend/src/app/authentication.service.spec.ts b/frontend/src/app/services/authentication.service.spec.ts similarity index 100% rename from frontend/src/app/authentication.service.spec.ts rename to frontend/src/app/services/authentication.service.spec.ts diff --git a/frontend/src/app/authentication.service.ts b/frontend/src/app/services/authentication.service.ts similarity index 100% rename from frontend/src/app/authentication.service.ts rename to frontend/src/app/services/authentication.service.ts diff --git a/frontend/src/app/services/users.service.spec.ts b/frontend/src/app/services/users.service.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..f81244a53483382f484713b183a64a0db8df8ad7 --- /dev/null +++ b/frontend/src/app/services/users.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { UsersService } from './users.service'; + +describe('UsersService', () => { + let service: UsersService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(UsersService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/frontend/src/app/services/users.service.ts b/frontend/src/app/services/users.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..6dfed51c24f7ed36f806dda5f6ee10d6bc8807d7 --- /dev/null +++ b/frontend/src/app/services/users.service.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import { User } from '../Types/types'; +import { HttpClient } from '@angular/common/http'; + +@Injectable({ + providedIn: 'root' +}) +export class UsersService { + + constructor(private http: HttpClient) { } + + deleteUser(user: User) { + console.log("DELETE START") + this.http.delete("http://0.0.0.0:30992/API/v1/user", {body:user}).subscribe(res => { + console.log("PLZ REFRESH") + }); + } + +}