2020-01-19 17:39:37 -09:00
|
|
|
import React from 'react'
|
2020-06-10 12:13:02 -08:00
|
|
|
import { makeStyles } from '@material-ui/core/styles'
|
2020-01-19 17:39:37 -09:00
|
|
|
import {
|
|
|
|
|
TextInput,
|
|
|
|
|
BooleanInput,
|
|
|
|
|
DateField,
|
|
|
|
|
PasswordInput,
|
|
|
|
|
Edit,
|
|
|
|
|
required,
|
2020-01-20 05:54:29 -09:00
|
|
|
email,
|
2020-01-19 17:39:37 -09:00
|
|
|
SimpleForm,
|
2020-04-27 19:22:17 -08:00
|
|
|
useTranslate,
|
2020-06-10 12:13:02 -08:00
|
|
|
Toolbar,
|
|
|
|
|
SaveButton,
|
2020-01-19 17:39:37 -09:00
|
|
|
} from 'react-admin'
|
2020-01-22 06:19:13 -09:00
|
|
|
import { Title } from '../common'
|
2020-06-10 12:13:02 -08:00
|
|
|
import DeleteUserButton from './DeleteUserButton'
|
|
|
|
|
|
|
|
|
|
const useStyles = makeStyles({
|
|
|
|
|
toolbar: {
|
|
|
|
|
display: 'flex',
|
|
|
|
|
justifyContent: 'space-between',
|
|
|
|
|
},
|
|
|
|
|
})
|
2020-01-19 17:39:37 -09:00
|
|
|
|
2020-01-19 18:47:39 -09:00
|
|
|
const UserTitle = ({ record }) => {
|
2020-04-27 19:22:17 -08:00
|
|
|
const translate = useTranslate()
|
|
|
|
|
const resourceName = translate('resources.user.name', { smart_count: 1 })
|
|
|
|
|
return <Title subTitle={`${resourceName} ${record ? record.name : ''}`} />
|
2020-01-19 18:47:39 -09:00
|
|
|
}
|
2020-06-10 12:13:02 -08:00
|
|
|
|
2021-05-02 11:03:15 -08:00
|
|
|
const UserToolbar = ({ showDelete, ...props }) => (
|
2020-06-10 12:13:02 -08:00
|
|
|
<Toolbar {...props} classes={useStyles()}>
|
2021-04-28 18:35:25 -08:00
|
|
|
<SaveButton disabled={props.pristine} />
|
2021-05-02 11:03:15 -08:00
|
|
|
{showDelete && <DeleteUserButton />}
|
2020-06-10 12:13:02 -08:00
|
|
|
</Toolbar>
|
|
|
|
|
)
|
|
|
|
|
|
2021-04-28 18:35:25 -08:00
|
|
|
const UserEdit = (props) => {
|
|
|
|
|
const { permissions } = props
|
|
|
|
|
const translate = useTranslate()
|
|
|
|
|
|
2021-05-02 11:03:15 -08:00
|
|
|
const isMyself = props.id === localStorage.getItem('userId')
|
2021-04-28 18:35:25 -08:00
|
|
|
const getNameHelperText = () =>
|
2021-05-02 11:03:15 -08:00
|
|
|
isMyself && {
|
2021-04-28 18:35:25 -08:00
|
|
|
helperText: translate('resources.user.helperTexts.name'),
|
|
|
|
|
}
|
2021-05-02 11:03:15 -08:00
|
|
|
const canDelete = permissions === 'admin' && !isMyself
|
2021-04-28 18:35:25 -08:00
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Edit title={<UserTitle />} {...props}>
|
|
|
|
|
<SimpleForm
|
|
|
|
|
variant={'outlined'}
|
2021-05-02 11:03:15 -08:00
|
|
|
toolbar={<UserToolbar showDelete={canDelete} />}
|
2021-04-28 18:35:25 -08:00
|
|
|
redirect={permissions === 'admin' ? 'list' : false}
|
|
|
|
|
>
|
|
|
|
|
{permissions === 'admin' && (
|
|
|
|
|
<TextInput source="userName" validate={[required()]} />
|
|
|
|
|
)}
|
|
|
|
|
<TextInput
|
|
|
|
|
source="name"
|
|
|
|
|
validate={[required()]}
|
|
|
|
|
{...getNameHelperText()}
|
|
|
|
|
/>
|
|
|
|
|
<TextInput source="email" validate={[email()]} />
|
2021-04-29 16:04:01 -08:00
|
|
|
<PasswordInput
|
|
|
|
|
source="password"
|
|
|
|
|
label={translate('resources.user.fields.changePassword')}
|
|
|
|
|
/>
|
2021-04-28 18:35:25 -08:00
|
|
|
{permissions === 'admin' && (
|
|
|
|
|
<BooleanInput source="isAdmin" initialValue={false} />
|
|
|
|
|
)}
|
|
|
|
|
<DateField variant="body1" source="lastLoginAt" showTime />
|
|
|
|
|
{/*<DateField source="lastAccessAt" showTime />*/}
|
|
|
|
|
<DateField variant="body1" source="updatedAt" showTime />
|
|
|
|
|
<DateField variant="body1" source="createdAt" showTime />
|
|
|
|
|
</SimpleForm>
|
|
|
|
|
</Edit>
|
|
|
|
|
)
|
|
|
|
|
}
|
2020-01-19 17:39:37 -09:00
|
|
|
|
|
|
|
|
export default UserEdit
|