Browse Source

Merge pull request #3729 from abpframework/fix/auth-guard

Fixed AuthGuard redirectUrl problem
pull/3737/head
Levent Arman Özak 7 years ago
committed by GitHub
parent
commit
b37ba4a8f7
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      npm/ng-packs/packages/core/src/lib/guards/auth.guard.ts
  2. 11
      npm/ng-packs/packages/core/src/lib/tests/auth.guard.spec.ts
  3. 2
      npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts

3
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;
}
}

11
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: '/' },
});
});
});

2
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) {

Loading…
Cancel
Save