import { Injectable } from '@angular/core'; import { Headers, Http, RequestOptions, URLSearchParams } from '@angular/http'; import { Observable } from 'rxjs/Observable'; import * as cookie from 'cookie'; @Injectable() export class TokenService { constructor(private http: Http) { } public getPowerBiToken(url, wcId, wid, rid) { let params = new URLSearchParams(); params.set('wcId', wcId); params.set('wid', wid); params.set('rid', rid); return this.http .get(`${url}/token`, this.requestOptions(params)) .map(res => res.json()) .catch(err => this.handleErr(err)); } requestOptions(query?: URLSearchParams) { let requestOptions = new RequestOptions({ headers: new Headers({ Authorization: `Bearer ${this.token}`, 'Content-Type': 'application/json' }) }); if (query) { requestOptions.search = query; } return requestOptions; } handleErr(err) { return Observable.throw(err); } get token(): string { return cookie.parse(document.cookie)['authtoken']; } set token(token: string) { document.cookie = cookie.serialize('authtoken', token || '', { path: '/' }); } }