From b29460fcdc2b8bf550c7a9da499d45d37f5d2a98 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Tue, 4 Aug 2020 08:57:54 +0300 Subject: [PATCH] feat: replace oAuth issuer --- .../core/src/lib/utils/initial-utils.ts | 2 +- .../core/src/lib/utils/multi-tenancy-utils.ts | 28 ++++--- .../extensions/src/tests/state.util.spec.ts | 3 +- .../src/lib/tests/validation-utils.spec.ts | 3 +- npm/ng-packs/yarn.lock | 82 +++++++++---------- 5 files changed, 63 insertions(+), 55 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts index bca8e1e176..d9c8ae163b 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/initial-utils.ts @@ -37,7 +37,7 @@ export function getInitialData(injector: Injector) { return fn; } -function checkAccessToken(store: Store, injector: Injector) { +export function checkAccessToken(store: Store, injector: Injector) { const oAuth = injector.get(OAuthService); if (oAuth.hasValidAccessToken() && !store.selectSnapshot(ConfigState.getDeep('currentUser.id'))) { oAuth.logOut(); diff --git a/npm/ng-packs/packages/core/src/lib/utils/multi-tenancy-utils.ts b/npm/ng-packs/packages/core/src/lib/utils/multi-tenancy-utils.ts index 237b4b5501..2d96c833c6 100644 --- a/npm/ng-packs/packages/core/src/lib/utils/multi-tenancy-utils.ts +++ b/npm/ng-packs/packages/core/src/lib/utils/multi-tenancy-utils.ts @@ -1,22 +1,23 @@ import { Injector } from '@angular/core'; import { Store } from '@ngxs/store'; -import { ConfigState } from '../states/config.state'; +import { switchMap, tap } from 'rxjs/operators'; +import { SetEnvironment } from '../actions'; import { Config } from '../models/config'; -import { FormattedStringValueExtractor } from './formatted-string-value-extractor'; import { MultiTenancyService } from '../services/multi-tenancy.service'; -import { tap, switchMap } from 'rxjs/operators'; -import { SetTenant, SetEnvironment } from '../actions'; -import { of } from 'rxjs'; +import { ConfigState } from '../states/config.state'; +import { FormattedStringValueExtractor } from './formatted-string-value-extractor'; const tenancyPlaceholder = '{TENANCY_NAME}'; export function getCurrentTenancyNameOrNull(appBaseUrl: string): string { if (appBaseUrl.indexOf(tenancyPlaceholder) < 0) return null; - const currentRootAddress = document.location.href; + if (appBaseUrl.charAt(appBaseUrl.length - 1) !== '/') appBaseUrl += '/'; + + const currentRootAddress = window.location.href; - const formattedStringValueExtracter = new FormattedStringValueExtractor(); - const values: any[] = formattedStringValueExtracter.isMatch(currentRootAddress, appBaseUrl); + const formattedStringValueExtractor = new FormattedStringValueExtractor(); + const values = formattedStringValueExtractor.isMatch(currentRootAddress, appBaseUrl); if (!values.length) { return null; } @@ -39,9 +40,9 @@ export async function parseTenantFromUrl(injector: Injector) { .pipe( switchMap(() => multiTenancyService.findTenantByName(tenancyName, { __tenant: '' })), tap(res => { - if (!res.success) return; - const tenant = { id: res.tenantId, name: res.name }; - multiTenancyService.domainTenant = tenant; + multiTenancyService.domainTenant = res.success + ? { id: res.tenantId, name: res.name } + : null; }), ) .toPromise(); @@ -60,6 +61,11 @@ export function setEnvironment(store: Store, tenancyName: string) { ); } + environment.oAuthConfig.issuer = environment.oAuthConfig.issuer.replace( + tenancyPlaceholder, + tenancyName, + ); + Object.keys(environment.apis).forEach(api => { Object.keys(environment.apis[api]).forEach(key => { environment.apis[api][key] = environment.apis[api][key].replace( diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts b/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts index 9592d4c9c1..86060b8597 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts @@ -13,6 +13,7 @@ import { getObjectExtensionEntitiesFromStore, mapEntitiesToContributors, } from '../lib/utils/state.util'; +import { OAuthService } from 'angular-oauth2-oidc'; describe('State Utils', () => { let spectator: SpectatorService; @@ -21,7 +22,7 @@ describe('State Utils', () => { const createService = createServiceFactory({ service: Store, imports: [NgxsModule.forRoot([ConfigState])], - mocks: [HttpClient], + mocks: [HttpClient, OAuthService], }); beforeEach(() => { diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts index 35a46e1ae9..22f445c36c 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/validation-utils.spec.ts @@ -6,6 +6,7 @@ import { NgxsModule, Store } from '@ngxs/store'; import { HttpClient } from '@angular/common/http'; import { getPasswordValidators } from '../utils'; import { Validators } from '@angular/forms'; +import { OAuthService } from 'angular-oauth2-oidc'; @Component({ template: '', selector: 'abp-dummy' }) class DummyComponent {} @@ -15,7 +16,7 @@ describe('ValidationUtils', () => { const createComponent = createComponentFactory({ component: DummyComponent, imports: [NgxsModule.forRoot([ConfigState]), NgxValidateCoreModule.forRoot()], - mocks: [HttpClient], + mocks: [HttpClient, OAuthService], }); beforeEach(() => (spectator = createComponent())); diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index c00ccb0da6..0f72400c00 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -280,9 +280,9 @@ rxjs "6.4.0" "@angular/animations@~10.0.0": - version "10.0.5" - resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-10.0.5.tgz#41c1419f5233cf8adc2139461a552969e1f938c1" - integrity sha512-vHWn7NJiiDAok36GSBJ0y/nqjd4UFl9WGIEsvydUqnyBJ0scuqJa+hADrWwqkK7b/xVW9ARVG00NXmemEPUVGA== + version "10.0.6" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-10.0.6.tgz#ab1d7dd5c7a76da2528a705f5186733763eee545" + integrity sha512-D2cDrfwnVjL0/6m1v35mAYebH2z0I3WJXohhePaDHEKBEXfXpBIbqqSiRpV9jLSa/xgmJPh4FSNVDCmKmuEmfg== dependencies: tslib "^2.0.0" @@ -320,9 +320,9 @@ uuid "8.1.0" "@angular/common@~10.0.0": - version "10.0.5" - resolved "https://registry.yarnpkg.com/@angular/common/-/common-10.0.5.tgz#f1c1b8671dbacc263d5d4f63606a82bc968644ff" - integrity sha512-AKmD/X13q3zzo5uTV/M4dWpAqJ136187rL4VweRc6b5t/oZ3VGcejjElZebgtoyGTye8luIP6fZ/LMb580lBlQ== + version "10.0.6" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-10.0.6.tgz#c279d771eef1e623bd8336c70c3ee821bbebbdd4" + integrity sha512-xS9IJGg6s+Y3K7pe9Oz39Dnpq5uSuUj3HkLKt1db5vPPAeT1qdZ+rdH5hnGwbf8Ihd6ZQacTAlh9W6MnqorZ0w== dependencies: tslib "^2.0.0" @@ -353,28 +353,28 @@ tslib "^2.0.0" "@angular/core@~10.0.0": - version "10.0.5" - resolved "https://registry.yarnpkg.com/@angular/core/-/core-10.0.5.tgz#52a11d1b6ce065f6c26d919ab3bea233f51902be" - integrity sha512-zoIxIi/UaRImeC1uD+eIKrdcihvQR/zfbqKgK67IPy/tghijxge1Tbl8FWIAT0ncAj0XH/JHsWnVdUV/TUI+CA== + version "10.0.6" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-10.0.6.tgz#91feaa070a65db22cf8eb65523351b653ce80d2a" + integrity sha512-mk/7XmZg7EeWEgl2UEyhyU6eukm2h+Thw1Ue84aBxMDaqt1RUpsPwpGCfIRfzH9gdzAjJUAPxiHAN2CF+3Wohw== dependencies: tslib "^2.0.0" "@angular/forms@~10.0.0": - version "10.0.5" - resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-10.0.5.tgz#c1e3d7218770e56ab0060b28dbf33d76a481a1c5" - integrity sha512-Bv+KEPjqd+ndl/Z0w1uWsBmvb8Je1JObHRjbKAcW7c4r1CVobm+QJv6r6MDL+FOs78lnrm8baekGLQyHH1uO7g== + version "10.0.6" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-10.0.6.tgz#5c98f7ef95f716986968a51946a7b1b9e6e36d40" + integrity sha512-C/+o4lLqyE2QX1brNBxf5yqBPxNpfRA8Rv0Nb1nQE0T6Y/AjyQWxYYl34fD6zk1WQfP3X8bUgkbhHhefmjVZKw== dependencies: tslib "^2.0.0" "@angular/language-service@~10.0.0": - version "10.0.5" - resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-10.0.5.tgz#2e4b24f7440257d3038ad717b19c5c0065684937" - integrity sha512-WJz5+XxOb0ORUERwNEUsX+0L7V4Tm7tz6i/mKAcz5SbE5eVfi+ywT+Zg7xMVRhyEpwDycqLXHK4piBOuGIjk+g== + version "10.0.6" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-10.0.6.tgz#d76e8f1850e521f716c15755b869ea4e49b8c59d" + integrity sha512-Aaee3kjmIPnTQJZL1+eBgkP+bnNh9zj6F78WEoYX7lHt98uRBfv3C9Wl+S4Gewoe99d7BZ53JdthsKY+ejCSIA== "@angular/localize@~10.0.0": - version "10.0.5" - resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-10.0.5.tgz#cc51976e0ad3cdd05df0ce8448b85d1f2b9ff492" - integrity sha512-iyZ58H7+WBm9J1K2OLKgFFHno33KOu1FMQKaGdj/XCZaG1PphanOUivNxvxXo/6r71UW6uX/U17Rk//F8M0zPA== + version "10.0.6" + resolved "https://registry.yarnpkg.com/@angular/localize/-/localize-10.0.6.tgz#da109c374da8576fe48ab13d3487bf33be65c03f" + integrity sha512-wcdPphTnBisN6kE37lilt4U7yJKKoM8NKz7hpSq8KTBvf0LN4AfYDzkIJbuapKeolQavblIKgAwkXzsjBhBa2A== dependencies: "@babel/core" "7.8.3" glob "7.1.2" @@ -390,23 +390,23 @@ yargs "15.3.0" "@angular/platform-browser-dynamic@~10.0.0": - version "10.0.5" - resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.5.tgz#bf0e6af90677e08c38747b1d1b9bacb2463872e0" - integrity sha512-Qa6RM9aJuuw5E7BeGBG9/kCOtssI6Wyzbb/8awzZFF6Fjqom1kef185nwx7SgQs2cdrhqRAgjt0eDJqTfSVb+Q== + version "10.0.6" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.0.6.tgz#664424e27a38dc599bf6003284ca3938f1450b32" + integrity sha512-ao6i9mEy314SI9Z57JPyKvb4sF61i2RNKHN/XuTpPBIRJ8ryOhG6aS1kN2gNFfj8HmyxZS0zohxTxd+nGitGgw== dependencies: tslib "^2.0.0" "@angular/platform-browser@~10.0.0": - version "10.0.5" - resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-10.0.5.tgz#0b90263a3858385cfb3ab440358d19eb9e8e91d3" - integrity sha512-bmknyK18yMv+iLCqcrfcpq3/2Ls9mRA1lOe7YhSGpHxM969Rb6Av8vJNW+uv0y7+gTvxacmpiQO8iryr/xvzRg== + version "10.0.6" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-10.0.6.tgz#1a48add3a697105ea5f1bc1e72bb6336c4832dbf" + integrity sha512-i3jqfXK6ZNwCJbCadeUC+ZAGvXZ0/k7/LocxKACFQW4a5o1W8aACn8COYDvdKMsT1B+tM9Wv1nDh3qjPZthaXw== dependencies: tslib "^2.0.0" "@angular/router@~10.0.0": - version "10.0.5" - resolved "https://registry.yarnpkg.com/@angular/router/-/router-10.0.5.tgz#3e5f8be439b827b1d7bc980d673dec216a2f0769" - integrity sha512-hUGffVOjkdaN5IN9fSipm5ED+XGyfc9yOr5hYr/6YA3H4xaQzXZGlzrrDhAVltTyYalD2LJeXhzlvp59lXgcjg== + version "10.0.6" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-10.0.6.tgz#c1e7a6b6a5472baa345fea8f472e9e9a7ef20c3c" + integrity sha512-+5c/1KitUeMHd7FPAKJ25aloouFHEjlPe5KKGJFtkuzZ7SOi3zwF3ASR52ysnGs/YymdBakIY8kg1Do00xn2wA== dependencies: tslib "^2.0.0" @@ -2735,9 +2735,9 @@ integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY= "@types/node@*", "@types/node@>= 8": - version "14.0.26" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.26.tgz#22a3b8a46510da8944b67bfc27df02c34a35331c" - integrity sha512-W+fpe5s91FBGE0pEa0lnqGLL4USgpLgs4nokw16SrBBco/gQxuua7KnArSEOd5iaMqbbSHV10vUDkJYJJqpXKA== + version "14.0.27" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.27.tgz#a151873af5a5e851b51b3b065c9e63390a9e0eb1" + integrity sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g== "@types/node@^12.11.1": version "12.12.53" @@ -5680,9 +5680,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.488: - version "1.3.510" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.510.tgz#dee781ff8b595c0deb60172b75d50b6889757eda" - integrity sha512-sLtGB0znXdmo6lM8hy5wTVo+fLqvIuO8hEpgc0DvPmFZqvBu/WB7AarEwhxVKjf3rVbws/rC8Xf+AlsOb36lJQ== + version "1.3.512" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.512.tgz#620e6731c693ddaaf3750f23dde7f7c4347b7327" + integrity sha512-y02hdFg7c4jTfREcXf4fRhHLt7BzofMgd7JAKY+u9i62E0D1eIpLQPFo5/eboZL0bIVY9YHZA53+vCGNFREOXA== elliptic@^6.0.0, elliptic@^6.5.2: version "6.5.3" @@ -9202,9 +9202,9 @@ minipass-flush@^1.0.5: minipass "^3.0.0" minipass-pipeline@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" - integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ== + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" @@ -9274,7 +9274,7 @@ mkdirp@*, mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1, mkdirp@~0.5.x: +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1, mkdirp@~0.5.x: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -10436,13 +10436,13 @@ pnp-webpack-plugin@1.6.4: ts-pnp "^1.1.6" portfinder@^1.0.26: - version "1.0.27" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.27.tgz#a41333c116b5e5f3d380f9745ac2f35084c4c758" - integrity sha512-bJ3U3MThKnyJ9Dx1Idtm5pQmxXqw08+XOHhi/Lie8OF1OlhVaBFhsntAIhkZYjfDcCzszSr0w1yCbccThhzgxQ== + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== dependencies: async "^2.6.2" debug "^3.1.1" - mkdirp "^0.5.1" + mkdirp "^0.5.5" posix-character-classes@^0.1.0: version "0.1.1"