import React from 'react'; import useSWR from 'swr'; import LoadingSpinner from '../../Common/LoadingSpinner'; import type { MainSettings } from '../../../../server/lib/settings'; import { Form, Formik, Field } from 'formik'; import axios from 'axios'; import Button from '../../Common/Button'; import { defineMessages, useIntl } from 'react-intl'; import { useToasts } from 'react-toast-notifications'; import PermissionEdit from '../../PermissionEdit'; const messages = defineMessages({ userSettings: 'Users', userSettingsDescription: 'Configure global and default user settings.', save: 'Save Changes', saving: 'Saving…', toastSettingsSuccess: 'Settings successfully saved!', toastSettingsFailure: 'Something went wrong while saving settings.', localLogin: 'Enable Local User Sign-In', defaultPermissions: 'Default User Permissions', }); const SettingsUsers: React.FC = () => { const { addToast } = useToasts(); const intl = useIntl(); const { data, error, revalidate } = useSWR( '/api/v1/settings/main' ); if (!data && !error) { return ; } return ( <>

{intl.formatMessage(messages.userSettings)}

{intl.formatMessage(messages.userSettingsDescription)}

{ try { await axios.post('/api/v1/settings/main', { localLogin: values.localLogin, defaultPermissions: values.defaultPermissions, }); addToast(intl.formatMessage(messages.toastSettingsSuccess), { autoDismiss: true, appearance: 'success', }); } catch (e) { addToast(intl.formatMessage(messages.toastSettingsFailure), { autoDismiss: true, appearance: 'error', }); } finally { revalidate(); } }} > {({ isSubmitting, values, setFieldValue }) => { return (
{ setFieldValue('localLogin', !values.localLogin); }} />
{intl.formatMessage(messages.defaultPermissions)}
setFieldValue('defaultPermissions', newPermissions) } />
); }}
); }; export default SettingsUsers;