dad24c03ff
* outposts: initial cookie domain implementation Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: add cookie domain setting Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * providers/proxy: replace forward_auth_mode with general mode Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: rebuild proxy provider form Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * providers/proxy: re-add forward_auth_mode for backwards compat Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: fix data.mode not being set Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * root: always set log level to debug when testing Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * providers/proxy: use new mode attribute Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * providers/proxy: only ingress /akprox on forward_domain Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * providers/proxy: fix lint error Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: fix error on ProxyProviderForm when not using proxy mode Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: fix default for outpost form's type missing Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: add additional desc for proxy modes Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * outposts: fix service account permissions not always being updated Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * outpost/proxy: fix redirecting to incorrect host for domain mode Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web: improve error handling for network errors Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * outpost: fix image naming not matching main imaeg Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * outposts/proxy: fix redirects for domain mode and traefik Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web: fix colour for paragraphs Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/flows: fix consent stage not showing permissions correctly Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * website/docs: add domain-level docs Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * website/docs: fix broken links Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * outposts/proxy: remove dead code Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/flows: fix missing id for #header-text Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
73 lines
3.2 KiB
TypeScript
73 lines
3.2 KiB
TypeScript
import * as Sentry from "@sentry/browser";
|
|
import { Integrations } from "@sentry/tracing";
|
|
import { VERSION } from "../constants";
|
|
import { SentryIgnoredError } from "../common/errors";
|
|
import { me } from "./Users";
|
|
import { config } from "./Config";
|
|
import { Config } from "authentik-api";
|
|
|
|
export const TAG_SENTRY_COMPONENT = "authentik.component";
|
|
|
|
export function configureSentry(canDoPpi: boolean = false, tags: { [key: string]: string; } = {}): Promise<Config> {
|
|
return config().then((config) => {
|
|
if (config.errorReportingEnabled) {
|
|
Sentry.init({
|
|
dsn: "https://a579bb09306d4f8b8d8847c052d3a1d3@sentry.beryju.org/8",
|
|
release: `authentik@${VERSION}`,
|
|
integrations: [
|
|
new Integrations.BrowserTracing({
|
|
tracingOrigins: [window.location.host, "localhost"],
|
|
}),
|
|
],
|
|
tracesSampleRate: 0.6,
|
|
environment: config.errorReportingEnvironment,
|
|
beforeSend: async (event: Sentry.Event, hint: Sentry.EventHint): Promise<Sentry.Event | null> => {
|
|
if (hint.originalException instanceof SentryIgnoredError) {
|
|
return null;
|
|
}
|
|
if ((hint.originalException as Error | undefined)?.hasOwnProperty("name")) {
|
|
if ((hint.originalException as Error | undefined)?.name == 'NetworkError') {
|
|
return null;
|
|
}
|
|
}
|
|
if (hint.originalException instanceof Response) {
|
|
const response = hint.originalException as Response;
|
|
// We only care about server errors
|
|
if (response.status < 500) {
|
|
return null;
|
|
}
|
|
const body = await response.json();
|
|
event.message = `${response.status} ${response.url}: ${JSON.stringify(body)}`
|
|
}
|
|
if (event.exception) {
|
|
me().then(user => {
|
|
Sentry.showReportDialog({
|
|
eventId: event.event_id,
|
|
user: {
|
|
email: user.user.email,
|
|
name: user.user.name,
|
|
}
|
|
});
|
|
});
|
|
}
|
|
return event;
|
|
},
|
|
});
|
|
Sentry.setTags(tags);
|
|
if (window.location.pathname.includes("if/")) {
|
|
// Get the interface name from URL
|
|
const intf = window.location.pathname.replace(/.+if\/(.+)\//, "$1");
|
|
Sentry.setTag(TAG_SENTRY_COMPONENT, `web/${intf}`);
|
|
}
|
|
console.debug("authentik/config: Sentry enabled.");
|
|
if (config.errorReportingSendPii && canDoPpi) {
|
|
me().then(user => {
|
|
Sentry.setUser({ email: user.user.email });
|
|
console.debug("authentik/config: Sentry with PII enabled.");
|
|
});
|
|
}
|
|
}
|
|
return config;
|
|
});
|
|
}
|