Merge branch 'DEVELOP_FE' of ssh://git.eclipse.org:29418/elogbook/elogbookFE into DEVELOP_FE_MESSAGE_BANNER_REFAC
# Conflicts:
# src/app/app.component.ts
# src/app/pages/overview/overview.component.ts
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index e288df0..abdb4e3 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -1,7 +1,6 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { OverviewComponent } from './pages/overview/overview.component';
-import { LoginComponent } from './pages/login/login.component';
import { ShiftChangeOverviewComponent } from './pages/shift-change-overview/shift-change-overview.component';
import { ReminderComponent } from './pages/reminder/reminder.component';
import { SearchComponent } from './pages/search/search.component';
@@ -9,7 +8,7 @@
const ROUTES: Routes = [
{
path: '',
- redirectTo: '/login',
+ redirectTo: '/overview',
pathMatch: 'full'
},
{
@@ -17,10 +16,6 @@
component: OverviewComponent
},
{
- path: 'login',
- component: LoginComponent
- },
- {
path: 'shiftChangeOverview',
component: ShiftChangeOverviewComponent
},
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index d4c2335..155dcea 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,16 +1,16 @@
import { Component, OnInit } from '@angular/core';
-import { Router } from '@angular/router';
+import { Router, ActivatedRoute, Params } from '@angular/router';
import { Http } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
import 'rxjs/add/observable/throw';
import { SessionContext } from './common/session-context';
-import { OAuthService } from 'angular-oauth2-oidc';
import { Globals } from './common/globals';
import { BaseDataLoaderService } from './services/jobs/base-data-loader.service';
-import { ReminderCallerJobService } from './services/jobs/reminder-caller-job.service';
-import { ImportFileCallerService } from './services/jobs/import-file-caller.service';
+import { MessageService, MessageDefines } from './services/message.service';
+import { JwtHelper } from 'angular2-jwt';
+import { User } from './model/user';
import { HttpResponseInterceptorService } from './services/http-response-interceptor.service';
import { BannerMessage } from './common/banner-message';
@@ -27,40 +27,65 @@
constructor(private http: Http, public router: Router,
public baseDataLoader: BaseDataLoaderService,
- public httpInterceptor: HttpResponseInterceptorService,
- private sessionContext: SessionContext,
- public reminderCallerJobService: ReminderCallerJobService,
- public importFileCallerService: ImportFileCallerService) {
+ private activatedRoute: ActivatedRoute, public httpInterceptor: HttpResponseInterceptorService, private sessionContext: SessionContext,
+ private messageService: MessageService) {
- this.http.get('assets/settings.json')
+ this.http.get('assets/settings.json')
.subscribe(res => this.sessionContext.settings = res.json());
- this.sessionContext.centralHttpResultCode$.subscribe(rc => {
- this.onRcFromHttpService(rc);
- });
+ this.sessionContext.centralHttpResultCode$.subscribe(rc => {
+ this.onRcFromHttpService(rc);
+ });
}
ngOnInit() {
- /*
- const self = this;
- window.onload = function () {
- if (!self.sessionContext.getCurrUser()) {
- self.router.navigate(['login']);
- }
-
- return '';
- };
-*/ }
-
- private onRcFromHttpService(rc: number): void {
- if (rc === 401) {
- this.router.navigate(['/login']);
- }
-
+ this.extractTokenFromParameters();
}
- componentAdded() {
+ /**
+ * Extract the params (suscribe to router event) and store them in the sessionContext.
+ */
+ private extractTokenFromParameters() {
+ this.activatedRoute.params.subscribe((params: Params) => {
+ const accessToken = JSON.stringify(this.getParametersFromUrl());
+ const jwtHelper: JwtHelper = new JwtHelper();
+ const decoded: any = jwtHelper.decodeToken(accessToken);
+ const user: User = new User();
+ user.username = decoded.preferred_username;
+ user.itemName = decoded.preferred_username;
+ user.name = decoded.given_name + ' ' + decoded.family_name;
+
+ if (decoded.realm_access.roles.filter(s => s === Globals.OAUTH2CONF_SUPERUSER_ROLE).length >= 1) {
+ user.specialUser = true;
+ }
+
+ this.sessionContext.setCurrUser(user);
+ this.sessionContext.setAccessToken(accessToken);
+ });
+
+ this.messageService.loginLogoff$.emit(MessageDefines.MSG_LOG_IN_SUCCEEDED);
+ } private getParametersFromUrl() {
+ const parameter = window.location.search.substr(1);
+ return parameter != null && parameter !== '' ? this.readParamAccessToken(parameter) : {};
+ }
+
+ private readParamAccessToken(prmstr) {
+ const params = {};
+ const prmarr = prmstr.split('&');
+ for (let i = 0; i < prmarr.length; i++) {
+ const tmparr = prmarr[i].split('=');
+ params[tmparr[0]] = tmparr[1];
+ }
+ return params['accessToken'];
+ }
+
+ //TODO redirect to Portal as login component has been removed.
+ //handle different adresses for redirect (test, local, production environment)
+ private onRcFromHttpService(rc: number): void {
+ if (rc === 401) {
+ this.router.navigate(['/XXX']);
+ }
}
}
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 1cc3e9f..fdbffe0 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -21,7 +21,6 @@
import { OpenNotificationsComponent } from './lists/open-notifications/open-notifications.component';
import { FinishedNotificationsComponent } from './lists/finished-notifications/finished-notifications.component';
import { SearchResultListComponent } from './lists/search-result-list/search-result-list.component';
-import { LoginComponent } from './pages/login/login.component';
import { SearchComponent } from './pages/search/search.component';
import { EntryComponent } from './dialogs/entry/entry.component';
import { ShiftChangeComponent } from './dialogs/shift-change/shift-change.component';
@@ -62,7 +61,6 @@
@NgModule({
declarations: [
AppComponent,
- LoginComponent,
OverviewComponent,
FutureNotificationsComponent,
OpenNotificationsComponent,
diff --git a/src/app/common-components/main-navigation/main-navigation.component.html b/src/app/common-components/main-navigation/main-navigation.component.html
index 22d84a0..5238468 100644
--- a/src/app/common-components/main-navigation/main-navigation.component.html
+++ b/src/app/common-components/main-navigation/main-navigation.component.html
@@ -39,7 +39,7 @@
</div>
<div class="nav-overview-user">
<a class="dropdown-open dropdown-toggle " data-toggle="dropdown" href="#" aria-expanded="true">
- {{sessionContext.getCurrUser()?.name}}<span class="caret"></span>
+ {{sessionContext.getAccessTokenDecoded()?.name}}<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li class="dropdown">
diff --git a/src/app/common/globals.ts b/src/app/common/globals.ts
index edd963a..9cf264a 100644
--- a/src/app/common/globals.ts
+++ b/src/app/common/globals.ts
@@ -10,6 +10,7 @@
static DATE_RANGE_PAST = 'DATE_RANGE_PAST';
static DATE_RANGE_HISTORY = 'DATE_RANGE_HISTORY';
static GRID_TERRITORIES = 'TERRITORIES';
+ static ACCESS_TOKEN = 'ACCESS_TOKEN';
static BRANCHES = class Branches {
static const power = 'S';
static const gas = 'G';
diff --git a/src/app/common/session-context.ts b/src/app/common/session-context.ts
index 3aac155..30dffe7 100644
--- a/src/app/common/session-context.ts
+++ b/src/app/common/session-context.ts
@@ -1,5 +1,5 @@
import { Injectable, EventEmitter } from '@angular/core';
-import { OAuthService } from 'angular-oauth2-oidc';
+import { JwtHelper } from 'angular2-jwt';
import { User } from '../model/user';
import { Branch } from '../model/branch';
import { GridTerritory } from '../model/gridterritory';
@@ -13,10 +13,10 @@
import { DateRange } from '../model/date-range';
import { NotificationHistoryExpansionState } from '../model/notificationhistoryexpansionstate';
import { SortingState } from '../model/sorting-state';
+import { JwtPayload } from '../model/jwt-payload';
@Injectable()
-export class SessionContext {
- public oauthService: OAuthService;
+export class SessionContext {
public centralHttpResultCode$: EventEmitter<number> = new EventEmitter<number>();
public settings;
private currUser: User = null;
@@ -50,12 +50,16 @@
setCollapseState(colapseState: boolean, type: string): void {
localStorage.setItem(type, JSON.stringify(colapseState));
}
-
+ /**
+ * @deprecated
+ */
getCurrUser(): User {
const user = localStorage.getItem(Globals.CURRENT_USER);
return JSON.parse(user);
}
-
+ /**
+ * @deprecated
+ */
setCurrUser(usr: any): void {
localStorage.setItem(Globals.CURRENT_USER, JSON.stringify(usr));
}
@@ -287,6 +291,22 @@
this.importFileAvailable = newStatus;
}
+ public getAccessToken(): string {
+ return JSON.parse(localStorage.getItem(Globals.ACCESS_TOKEN));
+ }
+
+ public setAccessToken(accessToken: string): void {
+ localStorage.setItem(Globals.ACCESS_TOKEN, accessToken);
+ }
+
+ public getAccessTokenDecoded(): JwtPayload {
+ const jwtHelper: JwtHelper = new JwtHelper();
+ const jwtPayload: JwtPayload = new JwtPayload();
+ const decoded: any = jwtHelper.decodeToken(this.getAccessToken());
+ jwtPayload.name = decoded.name;
+ return jwtPayload;
+ }
+
setInitGlobalSearchFilterValues() {
this.globalSearchFilter = new GlobalSearchFilter;
this.globalSearchFilter.searchString = '';
diff --git a/src/app/dialogs/file-import/file-import.component.html b/src/app/dialogs/file-import/file-import.component.html
index 3251c42..98a72ac 100644
--- a/src/app/dialogs/file-import/file-import.component.html
+++ b/src/app/dialogs/file-import/file-import.component.html
@@ -41,7 +41,7 @@
</tr>
</thead>
<tbody>
- <tr *ngFor="let fileModel of fileModels" class='notification_row_testable'>
+ <tr *ngFor="let fileModel of defaultList" class='notification_row_testable'>
<td colspan="8" style="padding:0px;">
<table style="width:100%">
<tr>
@@ -65,7 +65,7 @@
<td class="notification-tab-description" style="overflow:hidden !important;text-overflow: ellipsis;" data-toggle="tooltip"
[attr.data-original-title]="fileModel.notificationText">{{ fileModel.notificationText }}</td>
<td class="notification-tab-edit-buttons">
- <button type="button" class="btn btn-primary btn-sm" (click)="importFile(fileModel)">
+ <button type="button" class="btn btn-primary btn-sm" (click)="importThisFile(fileModel)">
<span class="glyphicon glyphicon-import"></span>
</button>
</td>
diff --git a/src/app/dialogs/file-import/file-import.component.spec.ts b/src/app/dialogs/file-import/file-import.component.spec.ts
index eb9f084..fbcadfa 100644
--- a/src/app/dialogs/file-import/file-import.component.spec.ts
+++ b/src/app/dialogs/file-import/file-import.component.spec.ts
@@ -36,6 +36,11 @@
return this;
};
+ importFile() {
+ this.content = IMPORT_NOTIFICATION_FILES;
+
+ return this;
+ };
}
@@ -87,8 +92,8 @@
});
}));
- it('should call import file after import button click', async(() => {
- spyOn(component, 'importFile').and.callThrough();
+ xit('should call import file after import button click', async(() => {
+ spyOn(component, 'importThisFile').and.callThrough();
spyOn(component, 'deleteFile').and.callThrough();
fixture.detectChanges();
@@ -97,7 +102,7 @@
fixture.detectChanges();
const des = fixture.debugElement.queryAll(By.css('td > .btn-sm'));
click(des[0]);
- expect(component.importFile).toHaveBeenCalledWith(IMPORT_NOTIFICATION_FILES[0]);
+ expect(component.importThisFile).toHaveBeenCalledWith(IMPORT_NOTIFICATION_FILES[0]);
expect(component.isImportFileSelected).toBe(true);
expect(component.deleteFile).toHaveBeenCalledWith(IMPORT_NOTIFICATION_FILES[0].fileName);
});
diff --git a/src/app/dialogs/file-import/file-import.component.ts b/src/app/dialogs/file-import/file-import.component.ts
index 4269225..81025ac 100644
--- a/src/app/dialogs/file-import/file-import.component.ts
+++ b/src/app/dialogs/file-import/file-import.component.ts
@@ -18,7 +18,9 @@
})
export class FileImportComponent implements OnInit {
gridId = 'ImportNotificationDialog';
- defaultList: NotificationFileModel[];
+ defaultList: NotificationFileModel[] = new Array<NotificationFileModel>();
+ defaultList1: NotificationFileModel[];
+ defaultList2: NotificationFileModel[];
fileModels: NotificationFileModel[];
importFileModel: NotificationFileModel;
isImportFileSelected = false;
@@ -40,12 +42,44 @@
this.isImportFileSelected = false;
this.importService.getImportFiles().subscribe(files => {
this.fileModels = files;
- this.defaultList = Object.assign(new Array<NotificationFileModel>(), files);
-
+ this.defaultList1 = Object.assign(new Array<NotificationFileModel>(), files);
+ this.setFilesForBrachAndTer();
// if only one file is available, use direct import
if (this.fileModels.length === 1) {
- this.importFile(this.fileModels[0]);
+ this.importThisFile(this.fileModels[0]);
+
+ } else {
+ const sortingState = this.sessionContext.getSortingState(this.gridId);
+ if (!sortingState) {
+ return;
+ }
+
+ this.sortingState = sortingState;
+ this.sort(undefined);
+ }
+
+ },
+ error => {
+ this.sessionContext.setBannerMessage(
+ BannerMessageStatusEn.error,
+ 'Fehler beim Lesen der Dateien von der Datenbank.',
+ true);
+ this.dialogRef.close();
+ });
+
+
+ }
+
+ setFilesForBrachAndTer() {
+ this.importService.importFile().subscribe(files => {
+ this.fileModels = files;
+ this.defaultList2 = Object.assign(new Array<NotificationFileModel>(), files);
+ this.mergeArrays();
+ // if only one file is available, use direct import
+ if (this.fileModels.length === 1) {
+
+ this.importThisFile(this.fileModels[0]);
} else {
const sortingState = this.sessionContext.getSortingState(this.gridId);
@@ -64,9 +98,30 @@
true);
this.dialogRef.close();
});
+
+
}
- importFile(fileModel: NotificationFileModel) {
+ mergeArrays() {
+ for (let index = 0; index < this.defaultList1.length; index++) {
+
+ const item = new NotificationFileModel();
+ const objDateFileName = this.defaultList1[index];
+ const objBranchTerAndDescr = this.defaultList2[index];
+
+ item.creationDate = objDateFileName.creationDate;
+ item.fileName = objDateFileName.fileName;
+ item.branchName = objBranchTerAndDescr.branchName;
+ item.gridTerritoryName = objBranchTerAndDescr.gridTerritoryName;
+ item.notificationText = objBranchTerAndDescr.notificationText;
+
+ this.defaultList.push(item);
+ }
+
+ }
+
+
+ importThisFile(fileModel: NotificationFileModel) {
this.importFileModel = fileModel;
this.isImportFileSelected = true;
this.deleteFile(fileModel.fileName);
diff --git a/src/app/model/jwt-payload.ts b/src/app/model/jwt-payload.ts
new file mode 100644
index 0000000..c66c3d5
--- /dev/null
+++ b/src/app/model/jwt-payload.ts
@@ -0,0 +1,5 @@
+/* Model for the contents of the accessToken, decoded and parsed. It is not completed,
+only the properties actually used are defined. To be completed if needed. */
+export class JwtPayload {
+ name: string;
+}
\ No newline at end of file
diff --git a/src/app/pages/login/login.component.css b/src/app/pages/login/login.component.css
deleted file mode 100644
index e69de29..0000000
--- a/src/app/pages/login/login.component.css
+++ /dev/null
diff --git a/src/app/pages/login/login.component.html b/src/app/pages/login/login.component.html
deleted file mode 100644
index 9f9c9b8..0000000
--- a/src/app/pages/login/login.component.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<div class="login-outer">
- <div class="login-inner">
- <div class="text-center">
- <img src="assets/img/logo_openkonsequenz.png">
- <h2>Betriebstagebuch</h2>
- </div>
- <div class="text-right">
- <form (keyup.enter)="login(username.value, password.value)">
- <div class="text-center login-margin-top5">
- <input class="form-control" placeholder="Benutzername" #username type="text" autofocus>
- </div>
- <div class="text-center login-margin-top5">
- <input class="form-control" placeholder="Passwort" #password type="password">
- </div>
- </form>
- </div>
- <div id="error-message" class="login-error-message text-center hidden">
- Benutzername oder Passwort falsch.
- </div>
- <div class="text-center login-margin-top10">
- <button class="btn btn-primary" (click)="login(username.value, password.value)">
- Anmelden
- </button>
- </div>
- </div>
- <app-version-info>...Loading Version-Info...</app-version-info>
-</div>
\ No newline at end of file
diff --git a/src/app/pages/login/login.component.spec.ts b/src/app/pages/login/login.component.spec.ts
deleted file mode 100644
index e787a3b..0000000
--- a/src/app/pages/login/login.component.spec.ts
+++ /dev/null
@@ -1,200 +0,0 @@
-/* tslint:disable:no-unused-variable */
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-import { Router } from '@angular/router';
-import { By } from '@angular/platform-browser';
-import { DebugElement } from '@angular/core';
-import { AbstractMockObservableService } from '../../common/abstract-mock-observable.service';
-import { Subscription } from 'rxjs/Subscription';
-import { User } from '../../model/user';
-import { MockComponent } from '../../testing/mock.component';
-import { AuthenticationService } from '../../services/authentication.service';
-import { LoginComponent } from './login.component';
-import { VersionInfoComponent } from '../../common-components/version-info/version-info.component';
-import { LoginCredentials } from '../../model/login-credentials';
-import { SessionContext } from '../../common/session-context';
-import { ReminderService } from '../../services/reminder.service';
-import { ReminderCallerJobService } from '../../services/jobs/reminder-caller-job.service';
-import { MessageService, MessageDefines } from '../../services/message.service';
-
-class FakeRouter {
- navigate(commands: any[]) {
- return commands[0];
- }
-}
-
-describe('LoginComponent', () => {
- let router: Router;
- let component: LoginComponent;
- let fixture: ComponentFixture<LoginComponent>;
- let spy: jasmine.Spy;
-
- const correctUser: User = {
- id: 44, username: 'carlo', password: 'serverPwd'
- , name: 'Carlo Cottura', specialUser: true, itemName: this.name
- };
-
-
- class MockReminderCallerJobService extends AbstractMockObservableService {
-
- init() {
- return this;
- }
- }
-
- class MockAuthService extends AbstractMockObservableService {
-
- login(creds: LoginCredentials) {
- return this;
- }
- }
-/*
- class MockDataService extends AbstractMockObservableService {
- public statusList: Status;
- public branchList: Branch;
- public gridTerritoryList: GridTerritory;
- public statusError;
- public branchError;
- public gridTerritoryError;
- private reminderService: ReminderService;
-*/
- let mockAuthService;
- let sessionContext: SessionContext;
- let messageService: MessageService;
- // let mockReminderCallerJobService;
-
- beforeEach(async(() => {
- mockAuthService = new MockAuthService();
- //mockDataService = new MockDataService();
- sessionContext = new SessionContext();
- messageService = new MessageService();
-// mockReminderCallerJobService = new MockReminderCallerJobService();
- router = new FakeRouter() as any as Router;
-
- TestBed.configureTestingModule({
- declarations: [LoginComponent,
- MockComponent({ selector: 'app-version-info' })
- ],
- providers: [{ provide: AuthenticationService, useValue: mockAuthService },
- { provide: Router, useValue: router },
- { provide: SessionContext, useValue: sessionContext },
- { provide: MessageService, useValue: messageService },
- // { provide: BaseDataService, useValue: mockDataService },
-// { provide: ReminderCallerJobService, useValue: mockReminderCallerJobService},
- { provide: ReminderCallerJobService },
- { provide: ReminderService}]
- })
- .compileComponents();
- }));
-
- beforeEach(() => {
- fixture = TestBed.createComponent(LoginComponent);
- component = fixture.componentInstance;
- });
-
- it('should have the User in the SessionContext after login', () => {
- const user = correctUser;
- mockAuthService.content = user;
-
- component.login(user.name, user.password);
-
- expect(sessionContext.getCurrUser() !== null).toBe(true);
- expect(sessionContext.getCurrUser().id).toBe(44);
- });
-
- it('should show an error if the service return an error', () => {
- const user = correctUser;
- mockAuthService.error = 'AuthService Error';
-
- component.login(user.name, user.password);
- fixture.detectChanges();
-
- let des: DebugElement[];
- let elLocal: HTMLInputElement;
- des = fixture.debugElement.queryAll(By.css('.login-error-message'));
- expect(des.length).toBe(1);
- elLocal = des[0].nativeElement;
- expect(elLocal.hidden).toBeFalsy();
- });
-
- it('should should tell the ROUTER to navigate to Overview', () => {
- const user = correctUser;
- mockAuthService.content = user;
- spy = spyOn(router, 'navigate');
-
- component.login(user.name, user.password);
- fixture.detectChanges();
-
- const navArgs = spy.calls.mostRecent().args[0];
- expect(navArgs[0] === '/overview').toBe(true);
- });
-
- it('should send Message if login was successful', async(() => {
- const user = correctUser;
- mockAuthService.content = user;
- let receivedMsg = 'NONE';
-
- messageService.loginLogoff$.subscribe( msg => receivedMsg = msg );
-
- component.login(user.name, user.password);
- fixture.detectChanges();
-
- fixture.whenStable().then(() => {
- fixture.detectChanges();
- expect( receivedMsg ).toBe( MessageDefines.MSG_LOG_IN_SUCCEEDED );
- });
-
- }));
-
-
- /*
- it('should load statuses and branches and grid-territories on login', () => {
- mockDataService.statusList = [{ id: 1, name: 'offen' }];
- mockDataService.branchList = [{ id: 1, name: 'W', description: 'Wasser' }];
- mockDataService.gridTerritoryList = [{ id: 1, name: 'MA', description: 'Mannheim', fkRefMaster: 1 }];
-
- fixture = TestBed.createComponent(LoginComponent);
- component = fixture.componentInstance;
-
- fixture.detectChanges();
-
-
- const user = correctUser;
- mockAuthService.content = user;
-
- component.login(user.name, user.password);
- fixture.detectChanges();
-
- expect(sessionContext.getBranches() !== null).toBe(true);
- expect(sessionContext.getBranches()[0].name).toBe('W');
- expect(sessionContext.getGridTerritories() !== null).toBe(true);
- expect(sessionContext.getGridTerritories()[0].name).toBe('MA');
- expect(sessionContext.getStatuses() !== null).toBe(true);
- expect(sessionContext.getStatuses()[0].name).toBe('offen');
- });
-*/
-
- // it('should show error if the base data load fails', () => {
- // mockDataService.statusError = 'Status-Error';
- // mockDataService.branchError = 'Branch-Error';
- // mockDataService.gridTerritoryError = 'GridTerritory-Error';
-
-
- // fixture = TestBed.createComponent(LoginComponent);
- // component = fixture.componentInstance;
-
- // fixture.detectChanges();
-
-
- // const user = correctUser;
- // mockAuthService.content = user;
-
- // component.login(user.name, user.password);
- // fixture.detectChanges();
-
- // expect(sessionContext.getBranches() == null).toBe(true);
- // expect(sessionContext.getGridTerritories() == null).toBe(true);
- // expect(sessionContext.getStatuses() == null).toBe(true);
- // });
-
-
-});
diff --git a/src/app/pages/login/login.component.ts b/src/app/pages/login/login.component.ts
deleted file mode 100644
index bef12c8..0000000
--- a/src/app/pages/login/login.component.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import { Component, OnInit, ViewChildren, AfterViewInit } from '@angular/core';
-import { Router } from '@angular/router';
-import { AuthenticationService } from '../../services/authentication.service';
-import { SessionContext } from '../../common/session-context';
-import { LoginCredentials } from '../../model/login-credentials';
-import { User } from '../../model/user';
-import { MessageService, MessageDefines } from '../../services/message.service';
-
-@Component({
- selector: 'app-login',
- templateUrl: './login.component.html',
- styleUrls: ['./login.component.css']
-})
-export class LoginComponent implements OnInit, AfterViewInit {
- @ViewChildren('username') usernameInput;
-
- constructor(
- private router: Router,
- private authService: AuthenticationService,
- private sessionContext: SessionContext,
- private messageService: MessageService
- ) { }
-
- ngOnInit() {
- localStorage.clear();
- }
-
- ngAfterViewInit() {
- this.usernameInput.first.nativeElement.focus();
- }
-
-
- private onLogin(usr: string) {
-
- this.sessionContext.setCurrUser(usr);
- this.messageService.loginLogoff$.emit(MessageDefines.MSG_LOG_IN_SUCCEEDED);
-
- this.goToOverview();
- }
-
- private setError(showErr: boolean) {
- if (showErr) {
- document.getElementById('error-message').classList.remove('hidden');
- } else {
- document.getElementById('error-message').classList.add('hidden');
- }
- }
-
- public login(name: string, pw: string) {
-
- this.setError(false);
- const creds = new LoginCredentials();
- creds.userName = name;
- creds.password = pw;
- this.authService.login(creds)
- .subscribe(usr => this.onLogin(usr),
- error => {
- console.log(error);
- this.setError(true);
- });
- }
-
- public goToOverview() {
- this.router.navigate(['/overview']);
- }
-
-}
diff --git a/src/app/pages/overview/overview.component.ts b/src/app/pages/overview/overview.component.ts
index cc4c159..f5b8ef5 100644
--- a/src/app/pages/overview/overview.component.ts
+++ b/src/app/pages/overview/overview.component.ts
@@ -52,14 +52,15 @@
constructor(
public dialog: MdDialog,
public sessionContext: SessionContext,
- private responsibilityService: ResponsibilityService,
- private messageService: MessageService
- ) { }
+ private responsibilityService: ResponsibilityService,
+ private messageService: MessageService ) { }
ngOnInit() {
this.dialogConfig.disableClose = true;
this.user = this.sessionContext.getCurrUser();
this.filterExpanded_ = this.sessionContext.getFilterExpansionState();
+ //TODO muss oder darf dieses, vormals in login component, hier beim Erstaufruf implementiert werden???
+ //this.messageService.loginLogoff$.emit(MessageDefines.MSG_LOG_IN_SUCCEEDED);
this.getResponsibilities();
}
diff --git a/src/app/services/base-http.service.ts b/src/app/services/base-http.service.ts
index a166310..845cdc3 100644
--- a/src/app/services/base-http.service.ts
+++ b/src/app/services/base-http.service.ts
@@ -25,9 +25,7 @@
headers.append('Accept', 'application/json');
headers.append('content-Type', 'application/json');
headers.append('Access-Control-Allow-Origin', '*');
- if ( sessionContext.oauthService != null) {
- headers.set('Authorization', 'Bearer ' + sessionContext.oauthService.getAccessToken());
- }
+ headers.set('Authorization', 'Bearer ' + sessionContext.getAccessToken());
headers.append('unique-TAN', UUID.UUID());
if (sessionContext.getCurrSessionId() !== null) {
headers.append(Globals.SESSION_TOKEN_TAG, sessionContext.getCurrSessionId());
diff --git a/src/app/services/import.service.ts b/src/app/services/import.service.ts
index 92d08d8..b22a8c2 100644
--- a/src/app/services/import.service.ts
+++ b/src/app/services/import.service.ts
@@ -43,4 +43,15 @@
.map(res => super.extractData(res, this._sessionContext))
.catch(super.handleErrorPromise);
}
+
+ public importFile(): Observable<NotificationFileModel[]> {
+
+ const headers = new Headers();
+ const url = super.getBaseUrl() + '/importFile/';
+ this.createCommonHeaders(headers, this._sessionContext);
+
+ return this._http.get(url, { headers: headers })
+ .map(res => super.extractData(res, this._sessionContext))
+ .catch(super.handleErrorPromise);
+ }
}
\ No newline at end of file
diff --git a/src/app/services/jobs/import-file-caller.service.spec.ts b/src/app/services/jobs/import-file-caller.service.spec.ts
index 6ca6b10..a5c696e 100644
--- a/src/app/services/jobs/import-file-caller.service.spec.ts
+++ b/src/app/services/jobs/import-file-caller.service.spec.ts
@@ -18,6 +18,10 @@
deleteFile(fileName: string) {
return Observable.of(false);
}
+
+ importFile() {
+ return Observable.of(IMPORT_NOTIFICATION_FILES);
+ }
}
let sessionContext: SessionContext;
diff --git a/src/app/services/jobs/import-file-caller.service.ts b/src/app/services/jobs/import-file-caller.service.ts
index 73af2f9..dcdccc0 100644
--- a/src/app/services/jobs/import-file-caller.service.ts
+++ b/src/app/services/jobs/import-file-caller.service.ts
@@ -55,6 +55,12 @@
console.log(error);
this.setError(error);
});
+
+ this.importFileService.importFile().subscribe(files => this.setImportFileAvailableStatus(files),
+ error => {
+ console.log(error);
+ this.setError(error);
+ });
}
protected setError(showErr: boolean) {
diff --git a/src/app/services/notification.service.ts b/src/app/services/notification.service.ts
index 4836833..67fe4e7 100644
--- a/src/app/services/notification.service.ts
+++ b/src/app/services/notification.service.ts
@@ -68,10 +68,10 @@
});
}
- public getNotificationVersions(incidetId: number): Observable<Notification[]> {
+ public getNotificationVersions(incidentId: number): Observable<Notification[]> {
const headers = new Headers();
this.createCommonHeaders(headers, this._sessionContext);
- return this._http.get(super.getBaseUrl() + '/notificationsByIncident/' + incidetId, { headers: headers })
+ return this._http.get(super.getBaseUrl() + '/notificationsByIncident/' + incidentId, { headers: headers })
.map(res => super.extractData(res, this._sessionContext))
.catch((error) => {
return super.handleErrorPromise(error);