50 lines
1.8 KiB
TypeScript
50 lines
1.8 KiB
TypeScript
import { Component, OnInit } from '@angular/core';
|
|
import { ActivatedRoute, Params } from '@angular/router';
|
|
import { takeUntil } from 'rxjs/operators';
|
|
import { environment } from '../../../../../environments/environment';
|
|
import { BaseComponent } from '../../../../core/common/base/base.component';
|
|
import { AuthProvider } from '../../../../core/common/enum/auth-provider';
|
|
import { AuthService } from '../../../../core/services/auth/auth.service';
|
|
import { LoginService } from '../utilities/login.service';
|
|
|
|
@Component({
|
|
selector: 'app-linkedin-login',
|
|
templateUrl: './linkedin-login.component.html',
|
|
})
|
|
export class LinkedInLoginComponent extends BaseComponent implements OnInit {
|
|
|
|
private returnUrl: string;
|
|
|
|
constructor(
|
|
private route: ActivatedRoute,
|
|
private loginService: LoginService,
|
|
private authService: AuthService
|
|
) {
|
|
super();
|
|
}
|
|
|
|
ngOnInit(): void {
|
|
this.route.queryParams
|
|
.pipe(takeUntil(this._destroyed))
|
|
.subscribe((params: Params) => {
|
|
const returnUrl = params['returnUrl'];
|
|
if (returnUrl) { this.returnUrl = returnUrl; }
|
|
if (!params['code']) { this.linkedinAuthorize(); } else { this.linkedInLoginUser(params['code']); }
|
|
});
|
|
}
|
|
|
|
public linkedinAuthorize() {
|
|
window.location.href = environment.loginProviders.linkedInConfiguration.oauthUrl + '?response_type=code&client_id=' + environment.loginProviders.linkedInConfiguration.clientId + '&redirect_uri=' + environment.loginProviders.linkedInConfiguration.redirectUri + '&state=987654321';
|
|
}
|
|
|
|
|
|
public linkedInLoginUser(code: string) {
|
|
this.authService.login({ ticket: code, provider: AuthProvider.LinkedIn })
|
|
.pipe(takeUntil(this._destroyed))
|
|
.subscribe(
|
|
res => this.loginService.onLogInSuccess(res, this.returnUrl),
|
|
error => this.loginService.onLogInError(error)
|
|
);
|
|
}
|
|
}
|