I've written a custom error handler that uses the Content Projection Service to display an error message to the user, using the AppendComponentToBody projection strategy. However I would like these error messages to behave much like the 404, page not found error. In that they remove the theme, and is the only component displayed.
How can I go about doing this?
import { ContentProjectionService, PROJECTION_STRATEGY } from '@abp/ng.core';
import { HttpErrorResponse } from '@angular/common/http';
import { ErrorHandler, Injectable, Injector } from '@angular/core';
import { ErrorHandlingComponent } from './error-handling.component';
@Injectable()
export class RouteErrorHandler implements ErrorHandler {
constructor(
private readonly injector: Injector
) { }
handleError(error: Error): void {
if (error instanceof HttpErrorResponse)
return;
const contentProjection = this.injector.get(ContentProjectionService);
var errorMessage: any;
errorMessage = error.message;
if (errorMessage && (typeof errorMessage === 'string' || errorMessage instanceof String)) {
errorMessage = errorMessage.replace(/<[^>]*>/g, '');
}
contentProjection.projectContent(PROJECTION_STRATEGY.AppendComponentToBody(ErrorHandlingComponent, { code: 403, error: errorMessage }));
return;
}
}
Current Result:
Desired Result
I've recently updated our angular app to use Auth0 for authentication and authorization, almost everything is working so far. The issue I'm having is when signed into a non-host tenant a '_tenant' header gets automatically added to all API requests.
When the '_tenant' header is included to Auth0's ./well-known/openid-configuration
endpoint the error response is 'Request header field __tenant is not allowed by Access-Control-Allow-Headers in preflight response
This is only occurring when signed into a tenant, the host tenant does not include this header and does not receive this error response.
Is there a way to exclude the '_tenant' header to this, and other Auth0 endpoint?
Full error message:
Access to XMLHttpRequest at 'https://{removed}/.well-known/openid-configuration' from origin 'https://localhost:4200' has been blocked by CORS policy: Request header field __tenant is not allowed by Access-Control-Allow-Headers in preflight response.