Browse Source

Improve query params handling

pull/4568/head
Igor Kulikov 5 years ago
parent
commit
f3c10a4ca2
  1. 5
      ui-ngx/src/app/core/auth/auth.service.ts
  2. 19
      ui-ngx/src/app/core/services/utils.service.ts

5
ui-ngx/src/app/core/auth/auth.service.ts

@ -294,10 +294,11 @@ export class AuthService {
}) })
); );
} else if (accessToken) { } else if (accessToken) {
this.utils.updateQueryParam('accessToken', null); const queryParamsToRemove = ['accessToken'];
if (refreshToken) { if (refreshToken) {
this.utils.updateQueryParam('refreshToken', null); queryParamsToRemove.push('refreshToken');
} }
this.utils.removeQueryParams(queryParamsToRemove);
try { try {
this.updateAndValidateToken(accessToken, 'jwt_token', false); this.updateAndValidateToken(accessToken, 'jwt_token', false);
if (refreshToken) { if (refreshToken) {

19
ui-ngx/src/app/core/services/utils.service.ts

@ -410,9 +410,23 @@ export class UtilsService {
return decodeURIComponent(results[2].replace(/\+/g, ' ')); return decodeURIComponent(results[2].replace(/\+/g, ' '));
} }
public removeQueryParams(keys: Array<string>) {
let params = this.window.location.search;
for (const key of keys) {
params = this.updateUrlQueryString(params, key, null);
}
const baseUrlPart = [baseUrl(), this.window.location.pathname].join('');
this.window.history.replaceState({}, '', baseUrlPart + params);
}
public updateQueryParam(name: string, value: string | null) { public updateQueryParam(name: string, value: string | null) {
const baseUrlPart = [baseUrl(), this.window.location.pathname].join(''); const baseUrlPart = [baseUrl(), this.window.location.pathname].join('');
const urlQueryString = this.window.location.search; const urlQueryString = this.window.location.search;
const params = this.updateUrlQueryString(urlQueryString, name, value);
this.window.history.replaceState({}, '', baseUrlPart + params);
}
private updateUrlQueryString(urlQueryString: string, name: string, value: string | null): string {
let newParam = ''; let newParam = '';
let params = ''; let params = '';
if (value !== null) { if (value !== null) {
@ -425,13 +439,16 @@ export class UtilsService {
newParam = '$1' + newParam; newParam = '$1' + newParam;
} }
params = urlQueryString.replace(keyRegex, newParam); params = urlQueryString.replace(keyRegex, newParam);
if (params.startsWith('&')) {
params = '?' + params.substring(1);
}
} else if (newParam) { } else if (newParam) {
params = urlQueryString + '&' + newParam; params = urlQueryString + '&' + newParam;
} }
} else if (newParam) { } else if (newParam) {
params = '?' + newParam; params = '?' + newParam;
} }
this.window.history.replaceState({}, '', baseUrlPart + params); return params;
} }
public baseUrl(): string { public baseUrl(): string {

Loading…
Cancel
Save