|
@@ -15,41 +15,75 @@ export class TokenService {
|
|
|
url: string = '192.168.100.141:22000';
|
|
|
|
|
|
constructor(public http: Http) {
|
|
|
- console.log('Hello TokenAuth Provider');
|
|
|
}
|
|
|
|
|
|
+ // Get token
|
|
|
getToken(): void {
|
|
|
- let response = this.getTokenFromServer();
|
|
|
+ // 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 });
|
|
|
|
|
|
- response.subscribe(data => {
|
|
|
- console.log(data.value);
|
|
|
- }, err => console.error('Error: ' + err),
|
|
|
- () => console.log('Token received')
|
|
|
- );
|
|
|
+ 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
|
|
|
- checkUrl(): boolean {
|
|
|
+ private checkUrl(): boolean {
|
|
|
return this.url.includes('.');
|
|
|
}
|
|
|
|
|
|
// Normalize provide url
|
|
|
- private normalizeUrl(url: string): string {
|
|
|
+ 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
|
|
|
- getTokenFromServer(): Observable<Token> {
|
|
|
+ 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.normalizeUrl(this.url), body, options).map(this.extractData).catch(this.handleError);
|
|
|
+ return this.http.post(this.normalizeJwtUrl(this.url), body, options).map(this.extractTokenData).catch(this.handleError);
|
|
|
}
|
|
|
|
|
|
- // Extract data from http response
|
|
|
- private extractData(response: Response) {
|
|
|
+ // Extract token data from http response
|
|
|
+ private extractTokenData(response: Response) {
|
|
|
let body = response.json();
|
|
|
let token = new Token(body.token);
|
|
|
|