69 lines
1.7 KiB
TypeScript
69 lines
1.7 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
|
|
import { Observable} from 'rxjs/Rx';
|
|
|
|
import * as base64 from 'base64util';
|
|
|
|
import { Logger } from '@nsalaun/ng-logger';
|
|
import { MzModalService } from 'ng2-materialize';
|
|
|
|
import { Token } from './token';
|
|
import { LoginModalComponent } from './loginModal.component';
|
|
import { Login } from './login';
|
|
|
|
@Injectable()
|
|
export class LoginService {
|
|
|
|
constructor(
|
|
private httpClient: HttpClient,
|
|
private logger: Logger,
|
|
private mzModalService: MzModalService,
|
|
) {}
|
|
|
|
public readonly url: string = '/api/user/login';
|
|
|
|
login(): Observable<Token> {
|
|
let modal = this.mzModalService.open(LoginModalComponent);
|
|
|
|
sessionStorage.clear();
|
|
|
|
//let observable: Observable<any> = Observable.fromPromise(modal.result);
|
|
|
|
//return observable.flatMap((login: Login) =>
|
|
// this.doLogin(login)
|
|
//).map((token: Token): Token => {
|
|
// this.accessToken = token.access_token;
|
|
// return token;
|
|
//});
|
|
return null;
|
|
}
|
|
|
|
logout() {
|
|
sessionStorage.clear();
|
|
}
|
|
|
|
doLogin(login: Login): Observable<any> {
|
|
var authdata = base64.encode(
|
|
`${login.email}:${login.password}`
|
|
);
|
|
|
|
let headers = new HttpHeaders()
|
|
headers = headers.set('Authorization', `Basic ${authdata}`);
|
|
|
|
this.logger.log("Headers", headers);
|
|
|
|
return this.httpClient.post(this.url, {}, {
|
|
headers: headers
|
|
});
|
|
}
|
|
|
|
get accessToken(): string {
|
|
return sessionStorage.getItem('access_token');
|
|
}
|
|
|
|
set accessToken(token: string) {
|
|
sessionStorage.setItem('access_token', token);
|
|
}
|
|
};
|