Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- authSuccess(resp) {
- const response = resp.json();
- const expiredAt = new Date();
- expiredAt.setSeconds(expiredAt.getSeconds() + response.expires_in);
- response.expires_at = expiredAt.getTime();
- this.$localStorage.store('authenticationToken', response);
- if (this.refreshSubcription !== null) {
- // cancel previous refresh
- this.refreshSubcription.unsubscribe();
- }
- // refresh token 5 seconds before expiration
- this.refreshSubcription = Observable
- .timer((response.expires_in - 5) * 1000 )
- .take(1)
- .subscribe(() => this.refresh());
- return response;
- }
- refresh() {
- const data = 'refresh_token=' + this.getToken().refresh_token + '&grant_type=refresh_token&scope=read%20write&' +
- 'client_secret=<SECRET-TOKEN>&client_id=<CLIENT-ID>';
- const headers = new Headers({
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + this.getToken().access_token
- });
- this.http
- .post('oauth/token', data, {headers})
- .map(this.authSuccess.bind(this))
- .subscribe();
- }
- login(credentials): Observable<any> {
- const data = 'username=' + encodeURIComponent(credentials.username) + '&password=' +
- encodeURIComponent(credentials.password) + '&grant_type=password&scope=read%20write&' +
- '<SECRET-TOKEN>&client_id=<CLIENT-ID>';
- const headers = new Headers({
- 'Content-Type': 'application/x-www-form-urlencoded',
- 'Accept': 'application/json',
- 'Authorization': 'Basic ' + this.base64.encode('<CLIENT-ID>' + ':' + '<SECRET-TOKEN>')
- });
- return this.http
- .post('oauth/token', data, {headers})
- .map(this.authSuccess.bind(this));
- }
- logout(): Observable<any> {
- if (this.refreshSubcription !== null) {
- // cancel previous refresh
- this.refreshSubcription.unsubscribe();
- }
- return new Observable((observer) => {
- this.http.post('api/logout', {});
- this.$localStorage.clear('authenticationToken');
- observer.complete();
- });
- }
Add Comment
Please, Sign In to add comment