|
@@ -0,0 +1,68 @@
|
|
|
+import Access from 'sentry/components/acl/access';
|
|
|
+import Form from 'sentry/components/forms/form';
|
|
|
+import JsonForm from 'sentry/components/forms/jsonForm';
|
|
|
+import type {JsonFormObject} from 'sentry/components/forms/types';
|
|
|
+import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle';
|
|
|
+import {t} from 'sentry/locale';
|
|
|
+import type {RouteComponentProps} from 'sentry/types/legacyReactRouter';
|
|
|
+import type {Organization} from 'sentry/types/organization';
|
|
|
+import type {Project} from 'sentry/types/project';
|
|
|
+import SettingsPageHeader from 'sentry/views/settings/components/settingsPageHeader';
|
|
|
+import PermissionAlert from 'sentry/views/settings/project/permissionAlert';
|
|
|
+
|
|
|
+type RouteParams = {
|
|
|
+ projectId: string;
|
|
|
+};
|
|
|
+type Props = RouteComponentProps<RouteParams, {}> & {
|
|
|
+ organization: Organization;
|
|
|
+ project: Project;
|
|
|
+};
|
|
|
+
|
|
|
+function ProjectToolbarSettings({organization, project, params: {projectId}}: Props) {
|
|
|
+ const formGroups: JsonFormObject[] = [
|
|
|
+ {
|
|
|
+ title: 'Settings',
|
|
|
+ fields: [
|
|
|
+ {
|
|
|
+ name: 'sentry:toolbar_allowed_origins',
|
|
|
+ type: 'textarea',
|
|
|
+ rows: 3,
|
|
|
+ autosize: true,
|
|
|
+
|
|
|
+ // additional data/props that is related to rendering of form field rather than data
|
|
|
+ label: t('Allowed Origins'),
|
|
|
+ help: t(
|
|
|
+ 'Domain URLs where the dev toolbar can be installed and access your data. Wildcards (*) are supported. Please separate multiple entries with a newline.'
|
|
|
+ ),
|
|
|
+ getData: data => ({options: data}),
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ return (
|
|
|
+ <SentryDocumentTitle title={t('Toolbar Settings')} projectSlug={project.slug}>
|
|
|
+ <SettingsPageHeader title={t('Developer Toolbar')} />
|
|
|
+ <PermissionAlert project={project} />
|
|
|
+
|
|
|
+ <Form
|
|
|
+ apiMethod="PUT"
|
|
|
+ apiEndpoint={`/projects/${organization.slug}/${projectId}/`}
|
|
|
+ initialData={project.options}
|
|
|
+ requireChanges
|
|
|
+ >
|
|
|
+ <Access access={['project:write']} project={project}>
|
|
|
+ {({hasAccess}) => (
|
|
|
+ <JsonForm
|
|
|
+ disabled={!hasAccess}
|
|
|
+ features={new Set(organization.features)}
|
|
|
+ forms={formGroups}
|
|
|
+ />
|
|
|
+ )}
|
|
|
+ </Access>
|
|
|
+ </Form>
|
|
|
+ </SentryDocumentTitle>
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+export default ProjectToolbarSettings;
|