From 59344d468df73937a33056508f863d7477b04433 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 24 Apr 2020 12:13:38 +0300 Subject: [PATCH 1/3] fix(core): resolve auth guard redirect url problem resolves #3707 --- npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts b/npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts index 1e9dc52bb3..e799eb6784 100644 --- a/npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts +++ b/npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts @@ -26,6 +26,7 @@ export class AuthGuard implements CanActivate { return hasValidAccessToken; } - return router.createUrlTree(['/account/login'], { state: { redirectUrl: state.url } }); + router.navigate(['/account/login'], { state: { redirectUrl: state.url } }); + return true; } } From a282a1240a911bf537c1d0b351c54ec37cf1a14b Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 24 Apr 2020 12:14:15 +0300 Subject: [PATCH 2/3] fix(theme-shared): add HttpErrorResponse instance control to error.handler --- .../packages/theme-shared/src/lib/handlers/error.handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts b/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts index f1ae22f3ae..af2db977fe 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts @@ -90,7 +90,7 @@ export class ErrorHandler { .subscribe(err => { const body = snq(() => err.error.error, DEFAULT_ERROR_MESSAGES.defaultError.title); - if (err.headers.get('_AbpErrorFormat')) { + if (err instanceof HttpErrorResponse && err.headers.get('_AbpErrorFormat')) { const confirmation$ = this.showError(null, null, body); if (err.status === 401) { From e653842229f66d3874013334eed89d9f778f2049 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 24 Apr 2020 14:15:08 +0300 Subject: [PATCH 3/3] test(core): fix a test of auth guard --- .../packages/core/src/lib/tests/auth.guard.spec.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts index 93339bcbcc..1e7f5bf585 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts @@ -10,7 +10,7 @@ describe('AuthGuard', () => { let guard: AuthGuard; const createService = createServiceFactory({ service: AuthGuard, - mocks: [OAuthService], + mocks: [OAuthService, Router], imports: [RouterModule.forRoot([{ path: '', component: RouterOutletComponent }])], declarations: [RouterOutletComponent], providers: [{ provide: APP_BASE_HREF, useValue: '/' }], @@ -26,10 +26,13 @@ describe('AuthGuard', () => { expect(guard.canActivate(null, null)).toBe(true); }); - it('should return url tree when user not logged in', () => { + it('should return navigate to login page with redirectUrl state', () => { const router = spectator.get(Router); - const expectedUrlTree = router.createUrlTree(['/account/login'], { state: { redirectUrl: '/' } }); spectator.get(OAuthService).hasValidAccessToken.andReturn(false); - expect(guard.canActivate(null, { url: '/' } as any) as UrlTree).toEqual(expectedUrlTree); + + expect(guard.canActivate(null, { url: '/' } as any)).toBe(true); + expect(router.navigate).toHaveBeenCalledWith(['/account/login'], { + state: { redirectUrl: '/' }, + }); }); });