diff --git a/package.json b/package.json index 9649b3e3d6bf92025633f283cb37c9d842cf5361..c02eff67afd798c6ab81f642ab6c964019e0a5d0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "itc-ng", - "version": "2.0.0-beta.5", + "version": "2.0.1", "scripts": { "ng": "ng", "start": "ng serve", diff --git a/src/app/app-root/login/login.component.ts b/src/app/app-root/login/login.component.ts index f192d027f91db0e9dcca832cd072eea93690ef8c..2c7d22b2c8fcec6f8a55942973c2e47560a50ebf 100644 --- a/src/app/app-root/login/login.component.ts +++ b/src/app/app-root/login/login.component.ts @@ -53,6 +53,9 @@ export class LoginComponent implements OnInit, OnDestroy { const errCode = authData as number; if (errCode === 400) { this.problemText = 'Anmeldedaten sind nicht gültig. Bitte nocheinmal versuchen!'; + } else if (errCode === 202 || errCode === 204) { + this.problemText = 'Anmeldedaten sind gültig, aber es sind keine Arbeitsbereiche oder Tests freigegeben.'; + } else { this.problemText = 'Problem bei der Anmeldung.'; // app.interceptor will show error message diff --git a/src/app/app.interceptor.ts b/src/app/app.interceptor.ts index 371ac9e36fdcb8d211b3d6b2817d19365df38119..5c05581675bbed3c7b8d182a77041507b4f7297c 100644 --- a/src/app/app.interceptor.ts +++ b/src/app/app.interceptor.ts @@ -49,39 +49,42 @@ export class AuthInterceptor implements HttpInterceptor { let goToLoginPage = false; let label = 'Unbekanntes Verbindungsproblem'; switch (httpError.status) { - case 400: { + case 202: + case 204: + case 207: + case 400: ignoreError = true; - // apiError.info = ?? TODO - from request body + // apiError.info contains error = body break; - } - case 401: { + + case 401: goToLoginPage = true; label = 'Bitte für diese Aktion erst anmelden!'; break; - } - case 403: { + + case 403: label = 'Für diese Funktion haben Sie keine Berechtigung.'; break; - } - case 404: { + + case 404: label = 'Daten/Objekt nicht gefunden.'; break; - } - case 410: { + + case 410: goToLoginPage = true; label = 'Anmeldung abgelaufen. Bitte erneut anmelden!'; break; - } - case 422: { + + case 422: ignoreError = true; // apiError.info = ?? TODO - from request body label = 'Die übermittelten Objekte sind fehlerhaft!'; break; - } - case 500: { + + case 500: label = 'Allgemeines Server-Problem.'; break; - } + } if (!ignoreError) { if (goToLoginPage) { diff --git a/src/app/backend.service.ts b/src/app/backend.service.ts index 1ebe43264566b9ca785737964a5217ed0751ac36..aa0d408fbfcf8491ee115a8c5b6cf8204ab052dc 100644 --- a/src/app/backend.service.ts +++ b/src/app/backend.service.ts @@ -38,7 +38,7 @@ export class BackendService { if (errCode === 400) { return this.http .put<AuthData>(this.serverUrl + 'session/login', {name, password}) - .pipe(catchError(errCode => of(errCode))); + .pipe(catchError((err: ApiError) => of(err.code))); } else { return of(errCode); } diff --git a/src/app/superadmin/backend.service.ts b/src/app/superadmin/backend.service.ts index f00f7768a9e27f919754356c499eb21e926488a1..273b271cc11f125427a0998901c949c0368f7db1 100644 --- a/src/app/superadmin/backend.service.ts +++ b/src/app/superadmin/backend.service.ts @@ -29,19 +29,11 @@ export class BackendService { addUser(name: string, password: string): Observable<Boolean> { return this.http .put<Boolean>(this.serverUrl + 'user', {n: name, p: password}) - .pipe(catchError((err: ApiError) => { - console.warn(`addUser Api-Error: ${err.code} ${err.info} `); - return of(false) - })); } changePassword(userId: number, password: string): Observable<Boolean> { return this.http .patch<Boolean>(this.serverUrl + `user/${userId}/password`, {p: password}) - .pipe(catchError((err: ApiError) => { - console.warn(`changePassword Api-Error: ${err.code} ${err.info} `); - return of(false) - })); } setSuperUserStatus(userId: number, changeToSuperUser: boolean, password: string): Observable<number> { diff --git a/src/app/superadmin/users/newpassword/newpassword.component.html b/src/app/superadmin/users/newpassword/newpassword.component.html index 49bc44b867202f95f12e7f250e548ca7b1882548..2eec34cd58f458e4bcf169344568668e96e813da 100644 --- a/src/app/superadmin/users/newpassword/newpassword.component.html +++ b/src/app/superadmin/users/newpassword/newpassword.component.html @@ -5,6 +5,7 @@ <div class="infobox"> <p>Ändern des Kennwortes für Nutzer/in "{{ data }}".</p> </div> + <p>Achtung: Mindestlänge für Kennwort 7 Zeichen</p> <p> <mat-form-field class="full-width"> <input matInput type="password" formControlName="pw" placeholder="Kennwort"> diff --git a/src/app/superadmin/users/newpassword/newpassword.component.ts b/src/app/superadmin/users/newpassword/newpassword.component.ts index c4b785f42eee61923e6308f50668d567495dfbc9..a3def06aed32ca3580d43d2aa1841ce38cbe0a73 100644 --- a/src/app/superadmin/users/newpassword/newpassword.component.ts +++ b/src/app/superadmin/users/newpassword/newpassword.component.ts @@ -9,7 +9,7 @@ import {FormGroup, Validators, FormControl} from '@angular/forms'; export class NewpasswordComponent { newpasswordform = new FormGroup({ - pw: new FormControl('', [Validators.required, Validators.minLength(3)]) + pw: new FormControl('', [Validators.required, Validators.minLength(7)]) }); constructor( diff --git a/src/app/superadmin/users/newuser/newuser.component.html b/src/app/superadmin/users/newuser/newuser.component.html index 8ac041c21bb29f7f51dc1f432e2d110763adf6c5..a4d1e5355a6816c9733e7516bd64939845672244 100644 --- a/src/app/superadmin/users/newuser/newuser.component.html +++ b/src/app/superadmin/users/newuser/newuser.component.html @@ -7,6 +7,7 @@ <input matInput formControlName="name" placeholder="Name" autocomplete="off"> </mat-form-field> </p> + <p>Achtung: Mindestlänge für Kennwort 7 Zeichen</p> <p> <mat-form-field class="full-width"> <input matInput type="password" formControlName="pw" placeholder="Kennwort" autocomplete="off"> diff --git a/src/app/superadmin/users/newuser/newuser.component.ts b/src/app/superadmin/users/newuser/newuser.component.ts index 615a84f02f6078d92c9de1783d02cc77d9b2cefe..14643f9fd4dffeb6cfb1e16e2e68ee34546cf899 100644 --- a/src/app/superadmin/users/newuser/newuser.component.ts +++ b/src/app/superadmin/users/newuser/newuser.component.ts @@ -9,6 +9,6 @@ import {FormControl, FormGroup, Validators} from '@angular/forms'; export class NewuserComponent { newuserform = new FormGroup({ name: new FormControl('', [Validators.required, Validators.minLength(3)]), - pw: new FormControl('', [Validators.required, Validators.minLength(3)]) + pw: new FormControl('', [Validators.required, Validators.minLength(7)]) }); } diff --git a/src/app/superadmin/users/users.component.ts b/src/app/superadmin/users/users.component.ts index deee5ea3b7fb4c1cd77a05e2a8adb48ac1cfc262..91241f9a618ad5060e58f6ebfa28297aca419299 100644 --- a/src/app/superadmin/users/users.component.ts +++ b/src/app/superadmin/users/users.component.ts @@ -17,6 +17,9 @@ import { import { MainDataService } from 'src/app/maindata.service'; import {IdRoleData, UserData} from "../superadmin.interfaces"; import {SuperadminPasswordRequestComponent} from "../superadmin-password-request/superadmin-password-request.component"; +import {catchError} from "rxjs/operators"; +import {ApiError} from "../../app.interfaces"; +import {of} from "rxjs"; @Component({ @@ -78,14 +81,17 @@ export class UsersComponent implements OnInit { if (result !== false) { this.mds.setSpinnerOn(); this.bs.addUser((<FormGroup>result).get('name').value, - (<FormGroup>result).get('pw').value).subscribe( + (<FormGroup>result).get('pw').value) + .pipe(catchError((err: ApiError) => { + this.snackBar.open(`Konnte Nutzer nicht hinzufügen: ${err.code} ${err.info} `, 'Fehler', {duration: 5000}); + return of(false) + })).subscribe( respOk => { if (respOk !== false) { this.snackBar.open('Nutzer hinzugefügt', '', {duration: 1000}); this.updateObjectList(); } else { this.mds.setSpinnerOff(); - this.snackBar.open('Konnte Nutzer nicht hinzufügen', 'Fehler', {duration: 1000}); } }); } @@ -179,13 +185,15 @@ export class UsersComponent implements OnInit { if (result !== false) { this.mds.setSpinnerOn(); this.bs.changePassword(selectedRows[0]['id'], - (<FormGroup>result).get('pw').value).subscribe( + (<FormGroup>result).get('pw').value) + .pipe(catchError((err: ApiError) => { + this.snackBar.open(`Konnte Kennwort nicht ändern: ${err.code} ${err.info} `, 'Fehler', {duration: 5000}); + return of(false) + })).subscribe( respOk => { this.mds.setSpinnerOff(); if (respOk !== false) { this.snackBar.open('Kennwort geändert', '', {duration: 1000}); - } else { - this.snackBar.open('Konnte Kennwort nicht ändern', 'Fehler', {duration: 1000}); } }); } diff --git a/src/environments/environment.build.ts b/src/environments/environment.build.ts index d10f7106d693f02b6abbd02909b5465fbae583c5..e8398de8913c8791bdfb3458a6e05d5e996b92c6 100644 --- a/src/environments/environment.build.ts +++ b/src/environments/environment.build.ts @@ -5,6 +5,6 @@ export const environment = { testcenterUrl: '/', appName: 'IQB-Testcenter', appPublisher: 'IQB - Institut zur Qualitätsentwicklung im Bildungswesen', - appVersion: '2.0.0-beta.5 - 30.4.2020', + appVersion: '2.0.1 - 13.5.2020', apiVersionExpected: '3.0.1' }; diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index f7dde3dea7dbb6ca995224e313ec8880c221f00e..ac78a5f44ca132ff96201ca70b785a84466c9da3 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -5,6 +5,6 @@ export const environment = { testcenterUrl: '/api/', appName: 'IQB-Testcenter', appPublisher: 'IQB - Institut zur Qualitätsentwicklung im Bildungswesen', - appVersion: '2.0.0-beta.5 - 30.4.2020', + appVersion: '2.0.1 - 13.5.2020', apiVersionExpected: '3.0.1' }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index ff36a88305c28e8584a6543c55f27fb77cd8db44..8c1008fd3447d527903ecb233702507d7ef6ad6e 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -10,7 +10,7 @@ export const environment = { // testcenterUrl: 'http://localhost/api/', appName: 'IQB-Testcenter', appPublisher: 'IQB - Institut zur Qualitätsentwicklung im Bildungswesen', - appVersion: '2.0.0-beta.5 - 30.4.2020', + appVersion: '2.0.1 - 13.5.2020', apiVersionExpected: '3.0.1' };