1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import Cookies from 'js-cookie';
- import ConfigStore from 'sentry/stores/configStore';
- const SUPERUSER_COOKIE_NAME = window.superUserCookieName ?? 'su';
- const SUPERUSER_COOKIE_DOMAIN = window.superUserCookieDomain;
- /**
- * Checking for just isSuperuser on a config object may not be enough as backend
- * often checks for *active* superuser. We check both isSuperuser flag
- * AND superuser session cookie.
- *
- * Note that this function does not work all the time. It is possible to have
- * an expired superuser cookie.
- *
- * Documented here: https://getsentry.atlassian.net/browse/ER-1602
- */
- export function isActiveSuperuser() {
- const {isSuperuser} = ConfigStore.get('user') || {};
- if (isSuperuser) {
- const superUserCookieName =
- ConfigStore.get('superUserCookieName') || SUPERUSER_COOKIE_NAME;
- const superUserCookieDomain =
- ConfigStore.get('superUserCookieDomain') || SUPERUSER_COOKIE_DOMAIN;
- /**
- * Superuser cookie cannot be checked for existence as it is HttpOnly. As a workaround, we try
- * to change it to something else and if that fails we can assume that it's being present.
- */
- Cookies.set(superUserCookieName, 'set-in-isActiveSuperuser', {
- domain: superUserCookieDomain,
- });
- if (Cookies.get(superUserCookieName) === undefined) {
- return true;
- }
- }
- return false;
- }
|