123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- 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 {
- username: string = 'admin';
- password: string = 'admin';
- url: string = '192.168.100.141:22000';
- constructor(public http: Http) {
- }
- // Get token
- getToken(): void {
- // let response = this.getTokenFromServer();
- //
- // response.subscribe(data => {
- // this.setLocalToken(data.value);
- // }, err => console.error(err),
- // () => console.log('Token received')
- // );
- this.checkTokenOnServer();
- }
- // Check if token is present locally
- tokenIsPresent(): boolean {
- return this.getTokenFromLocal() ? true : false;
- }
- // Check local token on the server
- checkTokenOnServer(): Observable<Response> {
- let body = 'token=' + this.getTokenFromLocal();
- let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
- let options = new RequestOptions({ headers: headers });
- return this.http.post(this.normalizeCheckUrl(this.url), body, options).map(this.extractCheckData).catch(this.handleError);
- }
- // Extract check value from token verification
- private extractCheckData(response: Response): boolean {
- let body = response.json();
- return body.token == 'valid' ? true : false;
- }
- // Get token from
- private getTokenFromLocal(): string {
- return localStorage.getItem('odoo');
- }
- private setLocalToken(value): void {
- localStorage.setItem('odoo', value);
- }
- // Check if introduced url is valid
- private checkUrl(): boolean {
- return this.url.includes('.');
- }
- // Normalize provide url
- private normalizeCheckUrl(url: string): string {
- return (url.startsWith('http://') ? url : 'http://' + url) + '/api/check';
- }
- // Normalize provide url
- private normalizeJwtUrl(url: string): string {
- return (url.startsWith('http://') ? url : 'http://' + url) + '/api/jwt';
- }
- // Get token from server
- private getTokenFromServer(): Observable<Token> {
- let body = 'username=' + this.username + '&password=' + this.password;
- let headers = new Headers({ 'Content-Type': 'application/x-www-form-urlencoded' });
- let options = new RequestOptions({ headers: headers });
- return this.http.post(this.normalizeJwtUrl(this.url), body, options).map(this.extractTokenData).catch(this.handleError);
- }
- // Extract token data from http response
- private extractTokenData(response: Response) {
- let body = response.json();
- let token = new Token(body.token);
- return token;
- }
- // Handle error if ocurred
- private handleError(error: any) {
- let msg = error._body;
- return Observable.throw(msg);
- }
- }
|