Create.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <script setup>
  2. import Form from '@/components/formElements/Form'
  3. import { useNotifyStore } from '@/stores/notify'
  4. const notify = useNotifyStore()
  5. const router = useRouter()
  6. const registerForm = reactive(new Form({
  7. name : '',
  8. email : '',
  9. password : '',
  10. password_confirmation : '',
  11. is_admin : false
  12. }))
  13. /**
  14. * Register a new user
  15. */
  16. async function createUser(e) {
  17. registerForm.password_confirmation = registerForm.password
  18. registerForm.post('/api/v1/users').then(response => {
  19. const user = response.data
  20. notify.success({ text: trans('admin.user_created') })
  21. router.push({ name: 'admin.manageUser', params: { userId: user.info.id } })
  22. })
  23. }
  24. </script>
  25. <template>
  26. <div>
  27. <FormWrapper title="admin.new_user">
  28. <form @submit.prevent="createUser" @keydown="registerForm.onKeydown($event)">
  29. <FormField v-model="registerForm.name" fieldName="name" :fieldError="registerForm.errors.get('name')" inputType="text" label="auth.forms.name" autocomplete="username" :maxLength="255" autofocus />
  30. <FormField v-model="registerForm.email" fieldName="email" :fieldError="registerForm.errors.get('email')" inputType="email" label="auth.forms.email" autocomplete="email" :maxLength="255" />
  31. <FormPasswordField v-model="registerForm.password" fieldName="password" :fieldError="registerForm.errors.get('password')" :showRules="true" label="auth.forms.password" autocomplete="new-password" />
  32. <FormCheckbox v-model="registerForm.is_admin" fieldName="is_admin" label="admin.forms.is_admin.label" help="admin.forms.is_admin.help" />
  33. <FormButtons :isBusy="registerForm.isBusy" :isDisabled="registerForm.isDisabled" :showCancelButton="true" :cancelLandingView="'admin.users'" caption="commons.create" submitId="btnCreateUser" />
  34. </form>
  35. </FormWrapper>
  36. <!-- footer -->
  37. <VueFooter />
  38. </div>
  39. </template>