organizationPermissionAlert.tsx 926 B

123456789101112131415161718192021222324252627282930313233
  1. import type {ReactNode} from 'react';
  2. import Access from 'sentry/components/acl/access';
  3. import {Alert, type AlertProps} from 'sentry/components/core/alert';
  4. import {t} from 'sentry/locale';
  5. import type {Scope} from 'sentry/types/core';
  6. export interface OrganizationPermissionAlertProps extends Omit<AlertProps, 'type'> {
  7. access?: Scope[];
  8. message?: ReactNode;
  9. }
  10. export function OrganizationPermissionAlert({
  11. access = ['org:write'],
  12. message = t(
  13. 'These settings can only be edited by users with the organization owner or manager role.'
  14. ),
  15. ...props
  16. }: OrganizationPermissionAlertProps) {
  17. return (
  18. <Access access={access}>
  19. {({hasAccess}) =>
  20. !hasAccess && (
  21. <Alert.Container>
  22. <Alert data-test-id="org-permission-alert" type="warning" showIcon {...props}>
  23. {message}
  24. </Alert>
  25. </Alert.Container>
  26. )
  27. }
  28. </Access>
  29. );
  30. }