|
@@ -0,0 +1,46 @@
|
|
|
+import { Injectable } from '@angular/core';
|
|
|
+import { Http, Response, Headers, RequestOptions } from '@angular/http';
|
|
|
+import { Observable } from 'rxjs/Observable'
|
|
|
+import { Token } from '../components/token.component';
|
|
|
+
|
|
|
+import 'rxjs/add/operator/map';
|
|
|
+import 'rxjs/add/operator/catch';
|
|
|
+import 'rxjs/add/observable/throw'
|
|
|
+
|
|
|
+@Injectable()
|
|
|
+export class TokenService {
|
|
|
+
|
|
|
+ constructor(public http: Http) {
|
|
|
+ console.log('Hello TokenAuth Provider');
|
|
|
+ }
|
|
|
+
|
|
|
+ // Get token from server
|
|
|
+ getTokenFromServer(url: string, username: string, password: string): Observable<Token> {
|
|
|
+ let body = JSON.stringify({
|
|
|
+ username: username,
|
|
|
+ password: password
|
|
|
+ });
|
|
|
+
|
|
|
+ let headers = new Headers({ 'Content-Type': 'multipart/form-data'});
|
|
|
+ let options = new RequestOptions({ headers: headers });
|
|
|
+
|
|
|
+ return this.http.post(this.normalizeUrl(url), body, options).map(this.extractData).catch(this.handleError);
|
|
|
+ }
|
|
|
+
|
|
|
+ // Normalize provide url
|
|
|
+ private normalizeUrl(url: string): string {
|
|
|
+ return (url.startsWith('http://') ? url : 'http://' + url) + '/jwt/api';
|
|
|
+ }
|
|
|
+
|
|
|
+ // Extract data from http response
|
|
|
+ private extractData(response: Response) {
|
|
|
+ let body = response.json();
|
|
|
+
|
|
|
+ return body.data || {};
|
|
|
+ }
|
|
|
+
|
|
|
+ // Handle error if ocurred
|
|
|
+ private handleError(error: any) {
|
|
|
+ return Observable.throw(error.response);
|
|
|
+ }
|
|
|
+}
|