From baf4314a337cfc173381041c67d5f489eace08f8 Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Tue, 27 Oct 2020 12:04:57 +0200 Subject: [PATCH] Fixed various bugs with the new Login system (prevent to send twice the login request with some providers) --- .../src/app/ui/auth/login/login.module.ts | 4 +++- .../src/app/ui/auth/login/login.routing.ts | 13 +++++++------ .../ui/dmp/overview/dmp-overview.component.ts | 16 +++++++++------- .../service/oauth2-dialog.service.ts | 1 + .../ui/user-profile/user-profile.component.ts | 13 ++++++++----- 5 files changed, 28 insertions(+), 19 deletions(-) diff --git a/dmp-frontend/src/app/ui/auth/login/login.module.ts b/dmp-frontend/src/app/ui/auth/login/login.module.ts index 160a28e16..2c3a0550b 100644 --- a/dmp-frontend/src/app/ui/auth/login/login.module.ts +++ b/dmp-frontend/src/app/ui/auth/login/login.module.ts @@ -10,6 +10,7 @@ import { OrcidLoginComponent } from '@app/ui/auth/login/orcid-login/orcid-login. import { TwitterLoginComponent } from '@app/ui/auth/login/twitter-login/twitter-login.component'; import { ConfigurableProvidersService } from '@app/ui/auth/login/utilities/configurableProviders.service'; import { LoginService } from '@app/ui/auth/login/utilities/login.service'; +import { Oauth2DialogModule } from '@app/ui/misc/oauth2-dialog/oauth2-dialog.module'; import { CommonFormsModule } from '@common/forms/common-forms.module'; import { CommonUiModule } from '@common/ui/common-ui.module'; import { MergeLoginService } from './utilities/merge-login.service'; @@ -19,7 +20,8 @@ import { ZenodoLoginComponent } from './zenodo-login/zenodo-login.component'; imports: [ CommonUiModule, CommonFormsModule, - LoginRoutingModule + LoginRoutingModule, + Oauth2DialogModule ], declarations: [ LoginComponent, diff --git a/dmp-frontend/src/app/ui/auth/login/login.routing.ts b/dmp-frontend/src/app/ui/auth/login/login.routing.ts index 9509fa48e..ea5888efe 100644 --- a/dmp-frontend/src/app/ui/auth/login/login.routing.ts +++ b/dmp-frontend/src/app/ui/auth/login/login.routing.ts @@ -9,18 +9,19 @@ import { TwitterLoginComponent } from './twitter-login/twitter-login.component'; import { OpenAireLoginComponent } from "./openaire-login/openaire-login.component"; import { ConfigurableLoginComponent } from "./configurable-login/configurable-login.component"; import { ZenodoLoginComponent } from './zenodo-login/zenodo-login.component'; +import { Oauth2DialogComponent } from '@app/ui/misc/oauth2-dialog/oauth2-dialog.component'; const routes: Routes = [ { path: '', component: LoginComponent }, - { path: 'linkedin', component: LinkedInLoginComponent }, - { path: 'twitter', component: TwitterLoginComponent }, - { path: 'external/orcid', component: OrcidLoginComponent }, - { path: 'external/b2access', component: B2AccessLoginComponent }, + { path: 'linkedin', component: Oauth2DialogComponent }, + { path: 'twitter', component: Oauth2DialogComponent }, + { path: 'external/orcid', component: Oauth2DialogComponent }, + { path: 'external/b2access', component: Oauth2DialogComponent }, { path: 'confirmation/:token', component: EmailConfirmation }, { path: 'confirmation', component: EmailConfirmation }, - { path: 'openaire', component: OpenAireLoginComponent}, + { path: 'openaire', component: Oauth2DialogComponent}, { path: 'configurable/:id', component: ConfigurableLoginComponent}, - { path: 'external/zenodo', component: ZenodoLoginComponent } + { path: 'external/zenodo', component: Oauth2DialogComponent } ]; @NgModule({ diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts index 2e93d9bb8..ed4967f80 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts @@ -527,13 +527,15 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { this.oauth2DialogService.login(url) .pipe(takeUntil(this._destroyed)) .subscribe(result => { - if (result.oauthCode !== undefined && result.oauthCode !== null) { - this.userService.registerDOIToken(result.oauthCode, this.configurationService.app + 'oauth2') - .pipe(takeUntil(this._destroyed)) - .subscribe(() => { - this.hasDOIToken = true; - this.showConfirmationDOIDialog(dmp); - }); + if (result !== undefined) { + if (result.oauthCode !== undefined && result.oauthCode !== null) { + this.userService.registerDOIToken(result.oauthCode, this.configurationService.app + 'oauth2') + .pipe(takeUntil(this._destroyed)) + .subscribe(() => { + this.hasDOIToken = true; + this.showConfirmationDOIDialog(dmp); + }); + } } }); } diff --git a/dmp-frontend/src/app/ui/misc/oauth2-dialog/service/oauth2-dialog.service.ts b/dmp-frontend/src/app/ui/misc/oauth2-dialog/service/oauth2-dialog.service.ts index 13455de5c..e0b3ee9e5 100644 --- a/dmp-frontend/src/app/ui/misc/oauth2-dialog/service/oauth2-dialog.service.ts +++ b/dmp-frontend/src/app/ui/misc/oauth2-dialog/service/oauth2-dialog.service.ts @@ -41,6 +41,7 @@ export class Oauth2DialogService extends BaseService{ oauthVerifier = oauthObject.oauth_verifier; } this.code.next({oauthCode: oauthCode, oauthState: oauthState, oauthToken: oauthToken, oauthVerifier: oauthVerifier}); + this.code.next(undefined); sub.unsubscribe(); } }); diff --git a/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts b/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts index d0826a26b..f135f11e6 100644 --- a/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts +++ b/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts @@ -237,10 +237,12 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes this.oauth2DialogService.login(url) .pipe(takeUntil(this._destroyed)) .subscribe(result => { - if (result.oauthCode !== undefined && result.oauthCode !== null) { - this.userService.registerDOIToken(result.oauthCode, this.configurationService.app + 'oauth2') - .pipe(takeUntil(this._destroyed)) - .subscribe(() => this.router.navigate(['/reload']).then(() => this.router.navigate(['/profile']))); + if (result !== undefined) { + if (result.oauthCode !== undefined && result.oauthCode !== null) { + this.userService.registerDOIToken(result.oauthCode, this.configurationService.app + 'oauth2') + .pipe(takeUntil(this._destroyed)) + .subscribe(() => this.router.navigate(['/reload']).then(() => this.router.navigate(['/profile']))); + } } }); } @@ -265,7 +267,8 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes }); dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => { if (result) { - this.mergeEmailConfirmation.sendConfirmationEmail(result); + this.mergeEmailConfirmation.sendConfirmationEmail(result).pipe(takeUntil(this._destroyed)) + .subscribe(res => {}, err => {}); } }); }