123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import {hasEveryAccess} from 'sentry/components/acl/access';
- import type {Scope} from 'sentry/types/core';
- import type {Team} from 'sentry/types/organization';
- import type {Project} from 'sentry/types/project';
- import useOrganization from 'sentry/utils/useOrganization';
- import {useUser} from 'sentry/utils/useUser';
- type Props = {
- /**
- * List of required access levels
- */
- access?: Scope[];
- /**
- * Optional: To be used when you need to check for access to the Project
- *
- * E.g. On the project settings page, the user will need project:write.
- * An "org-member" does not have project:write but if they are "team-admin" for
- * of a parent team, they will have appropriate scopes.
- */
- project?: Project | null | undefined;
- /**
- * Optional: To be used when you need to check for access to the Team
- *
- * E.g. On the team settings page, the user will need team:write.
- * An "org-member" does not have team:write but if they are "team-admin" for
- * the team, they will have appropriate scopes.
- */
- team?: Team | null | undefined;
- };
- export function useAccess({access = [], team, project}: Props) {
- const user = useUser();
- const organization = useOrganization();
- team = team ?? undefined;
- project = project ?? undefined;
- const hasAccess = hasEveryAccess(access, {organization, team, project});
- const hasSuperuser = Boolean(user?.isSuperuser);
- return {
- hasAccess,
- hasSuperuser,
- };
- }
|