diff --git a/demo-shell-ng2/app/components/login.ts b/demo-shell-ng2/app/components/login.ts index 826ba1352c..b6b8779194 100644 --- a/demo-shell-ng2/app/components/login.ts +++ b/demo-shell-ng2/app/components/login.ts @@ -42,8 +42,8 @@ export class Login { } onSubmit(value: any, event) { - //event.preventDefault(); - this.auth.login(value.username, value.password) + event.preventDefault(); + this.auth.login('POST', value.username, value.password) .subscribe( //(token: any) => this.router.navigate(['../Home']), (token: any) => this.router.navigate(['Home']), diff --git a/demo-shell-ng2/app/services/authentication.ts b/demo-shell-ng2/app/services/authentication.ts index 3ccf2c7be6..d8f653a547 100644 --- a/demo-shell-ng2/app/services/authentication.ts +++ b/demo-shell-ng2/app/services/authentication.ts @@ -1,11 +1,15 @@ import {Injectable} from "angular2/core"; import {Observable} from 'rxjs/Rx'; +import {Http, Headers, URLSearchParams} from 'angular2/http'; @Injectable() export class Authentication { token: string; - constructor() { + private _host: string = 'http://192.168.99.100:8080'; + private _baseUrl: string = this._host + '/alfresco/service/api/'; + + constructor(public http: Http) { this.token = localStorage.getItem('token'); } @@ -13,14 +17,49 @@ export class Authentication { return !!localStorage.getItem('token'); } - login(username: String, password: String) { - if (username === 'test' && password === 'test') { - this.token = 'token'; - localStorage.setItem('token', this.token); - return Observable.of('token'); + login(method:String, username:String, password:String) { + if (method === 'GET') { + return this.loginGet(username, password); + } else { + return this.loginPost(username, password); } + } - return Observable.throw('authentication failure'); + loginGet(username:String, password:String) { + const searchParams = new URLSearchParams() + searchParams.set('u', username); + searchParams.set('pw', password); + + return this.http.get(this._baseUrl + 'login', {search: searchParams}) + .map((res:any) => { + let data = JSON.parse(xml2json(res.text(),' ')); + this.token = data.ticket; + this.saveJwt(this.token); + }) + .catch(this.handleError); + } + + loginPost(username:String, password:String) { + var credentials = "{ username: " + username+ ", password: "+ password +" }"; + + var headers = new Headers(); + headers.append('Content-Type', 'application/json'); + + return this.http.post(this._baseUrl+ 'login', credentials, { + headers: headers + }) + .map((res:any) => { + let response = res.json(); + this.token = response.data.ticket; + this.saveJwt(this.token); + }) + .catch(this.handleError); + } + + saveJwt(jwt) { + if(jwt) { + localStorage.setItem('token', jwt) + } } logout() { @@ -29,4 +68,11 @@ export class Authentication { return Observable.of(true); } + + private handleError (error: Response) { + // in a real world app, we may send the error to some remote logging infrastructure + // instead of just logging it to the console + console.error(error); + return Observable.throw(error.json().error || 'Server error'); + } } diff --git a/demo-shell-ng2/index.html b/demo-shell-ng2/index.html index d562d5c35e..a56217f29b 100644 --- a/demo-shell-ng2/index.html +++ b/demo-shell-ng2/index.html @@ -26,6 +26,8 @@ + +