isActiveSuperuser.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import Cookies from 'js-cookie';
  2. import ConfigStore from 'sentry/stores/configStore';
  3. const SUPERUSER_COOKIE_NAME = window.superUserCookieName ?? 'su';
  4. const SUPERUSER_COOKIE_DOMAIN = window.superUserCookieDomain;
  5. /**
  6. * Checking for just isSuperuser on a config object may not be enough as backend often checks for *active* superuser.
  7. * We therefore check both isSuperuser flag AND superuser session cookie.
  8. */
  9. export function isActiveSuperuser() {
  10. const {isSuperuser} = ConfigStore.get('user') || {};
  11. if (isSuperuser) {
  12. const superUserCookieName =
  13. ConfigStore.get('superUserCookieName') || SUPERUSER_COOKIE_NAME;
  14. const superUserCookieDomain =
  15. ConfigStore.get('superUserCookieDomain') || SUPERUSER_COOKIE_DOMAIN;
  16. /**
  17. * Superuser cookie cannot be checked for existence as it is HttpOnly.
  18. * As a workaround, we try to change it to something else and if that fails we can assume that it's being present.
  19. * There may be an edgecase where it's present and expired but for current usage it's not a big deal.
  20. */
  21. Cookies.set(superUserCookieName, 'set-in-isActiveSuperuser', {
  22. domain: superUserCookieDomain,
  23. });
  24. if (Cookies.get(superUserCookieName) === undefined) {
  25. return true;
  26. }
  27. }
  28. return false;
  29. }