Skip to content

Commit d0a0185

Browse files
authored
Merge pull request #931 from Ostap-Zherebetskyi/fix/login_redirect
[ENG-10623] Fix login URL encoding hack
2 parents 2856eec + db8bdad commit d0a0185

2 files changed

Lines changed: 9 additions & 15 deletions

File tree

src/app/core/services/auth.service.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { inject, Injectable, PLATFORM_ID } from '@angular/core';
88
import { SignUpModel } from '@core/models/sign-up.model';
99
import { ENVIRONMENT } from '@core/provider/environment.provider';
1010
import { ClearCurrentUser } from '@osf/core/store/user';
11-
import { doubleEncodedUrlParam, urlParam } from '@osf/shared/helpers/url-param.helper';
11+
import { urlParam } from '@osf/shared/helpers/url-param.helper';
1212
import { JsonApiService } from '@osf/shared/services/json-api.service';
1313
import { LoaderService } from '@osf/shared/services/loader.service';
1414

@@ -41,8 +41,14 @@ export class AuthService {
4141
}
4242

4343
this.loaderService.show();
44-
const loginUrl = `${this.casUrl}/login?${doubleEncodedUrlParam({ service: `${this.webUrl}/login`, next: window.location.href })}`;
45-
window.location.href = loginUrl;
44+
45+
const serviceUrl = new URL(`${this.webUrl}/login`);
46+
serviceUrl.searchParams.set('next', window.location.href);
47+
48+
const loginUrl = new URL(`${this.casUrl}/login`);
49+
loginUrl.searchParams.set('service', serviceUrl.toString());
50+
51+
window.location.href = loginUrl.toString();
4652
}
4753

4854
navigateToOrcidSignIn(): void {

src/app/shared/helpers/url-param.helper.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,3 @@ export const urlParam = (params: Record<string, string>) => {
33
.map((entry) => entry.map((comp) => encodeURIComponent(comp)).join('='))
44
.join('&');
55
};
6-
7-
export const doubleEncodedUrlParam = (params: { service: string; next?: string }): string => {
8-
const { service, next } = params;
9-
10-
if (!next) {
11-
return `service=${encodeURIComponent(service)}`;
12-
}
13-
14-
const encodedNext = encodeURIComponent(next);
15-
const valueAfterService = `${service}?next=${encodedNext}`;
16-
return `service=${encodeURIComponent(valueAfterService)}`;
17-
};

0 commit comments

Comments
 (0)