Skip to content

Commit 9cf024f

Browse files
authored
feat(settings): Allow user to connect ORCID in profile settings page (#918)
1 parent 10716b9 commit 9cf024f

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

src/app/features/settings/profile-settings/components/authenticated-identity/authenticated-identity.component.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { finalize } from 'rxjs';
1010
import { NgOptimizedImage } from '@angular/common';
1111
import { ChangeDetectionStrategy, Component, computed, inject, OnInit } from '@angular/core';
1212

13+
import { ENVIRONMENT } from '@core/provider/environment.provider';
1314
import { ExternalIdentityStatus } from '@osf/shared/enums/external-identity-status.enum';
1415
import { CustomConfirmationService } from '@osf/shared/services/custom-confirmation.service';
1516
import { LoaderService } from '@osf/shared/services/loader.service';
@@ -20,6 +21,7 @@ import {
2021
DeleteExternalIdentity,
2122
GetExternalIdentities,
2223
} from '../../../account-settings/store';
24+
import { ProfileSettingsTabOption } from '../../enums';
2325

2426
@Component({
2527
selector: 'osf-authenticated-identity',
@@ -29,6 +31,7 @@ import {
2931
changeDetection: ChangeDetectionStrategy.OnPush,
3032
})
3133
export class AuthenticatedIdentityComponent implements OnInit {
34+
private readonly environment = inject(ENVIRONMENT);
3235
private readonly customConfirmationService = inject(CustomConfirmationService);
3336
private readonly toastService = inject(ToastService);
3437
private readonly loaderService = inject(LoaderService);
@@ -72,6 +75,18 @@ export class AuthenticatedIdentityComponent implements OnInit {
7275
}
7376

7477
connectOrcid(): void {
75-
/* no-op for now*/
78+
const webUrl = this.environment.webUrl;
79+
const casUrl = this.environment.casUrl;
80+
const finalDestination = new URL(`${webUrl}/settings/profile`);
81+
finalDestination.searchParams.set('tab', ProfileSettingsTabOption.Social.toString());
82+
const casLoginUrl = new URL(`${casUrl}/login`);
83+
casLoginUrl.search = new URLSearchParams({
84+
redirectOrcid: 'true',
85+
service: `${webUrl}/login`,
86+
next: encodeURIComponent(finalDestination.toString()),
87+
}).toString();
88+
const logoutUrl = new URL(`${webUrl}/logout/`);
89+
logoutUrl.searchParams.set('next', casLoginUrl.toString());
90+
window.location.href = logoutUrl.toString();
7691
}
7792
}

0 commit comments

Comments
 (0)