sms.vue 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <template>
  2. <div>
  3. <UiForm v-if="parameters" v-model="parameters">
  4. <v-row>
  5. <v-col cols="12">
  6. <UiInputText
  7. v-model="parameters.smsSenderName"
  8. field="smsSenderName"
  9. :rules="rules()"
  10. variant="underlined"
  11. />
  12. </v-col>
  13. <v-col cols="12">
  14. <UiInputText
  15. v-model="parameters.usernameSMS"
  16. field="usernameSMS"
  17. label="Nom d'utilisateur SMS"
  18. variant="underlined"
  19. />
  20. </v-col>
  21. <v-col cols="12">
  22. <UiInputText
  23. v-model="parameters.passwordSMS"
  24. field="passwordSMS"
  25. class="password"
  26. variant="underlined"
  27. />
  28. </v-col>
  29. </v-row>
  30. </UiForm>
  31. </div>
  32. </template>
  33. <script setup lang="ts">
  34. import type { AsyncData } from '#app'
  35. import Parameters from '~/models/Organization/Parameters'
  36. import { useEntityFetch } from '~/composables/data/useEntityFetch'
  37. import { useOrganizationProfileStore } from '~/stores/organizationProfile'
  38. definePageMeta({
  39. name: 'parameters_sms_page',
  40. })
  41. const i18n = useI18n()
  42. const { fetch } = useEntityFetch()
  43. const organizationProfile = useOrganizationProfileStore()
  44. if (organizationProfile.parametersId === null) {
  45. throw new Error('Missing organization parameters id')
  46. }
  47. const { data: parameters } = fetch(
  48. Parameters,
  49. organizationProfile.parametersId,
  50. ) as AsyncData<Parameters | null, Error | null>
  51. /**
  52. * Règles de validation
  53. */
  54. const rules = () => [
  55. (smsSenderName: string | null) =>
  56. (smsSenderName !== null && /^\w{3,11}$/.test(smsSenderName)) ||
  57. i18n.t('please_enter_a_value_for_the_sms_sender_name'),
  58. ]
  59. </script>
  60. <style scoped lang="scss">
  61. /**
  62. Simule une apparence de saisie de type mot de passe
  63. Sans ça, les navigateurs proposent la saisie semi auto et la mémorisation du mot de passe
  64. */
  65. @font-face {
  66. font-family: 'password';
  67. font-style: normal;
  68. font-weight: 400;
  69. font-display: block;
  70. src: url(https://jsbin-user-assets.s3.amazonaws.com/rafaelcastrocouto/password.ttf);
  71. }
  72. :deep(.password input) {
  73. font-family: 'password';
  74. }
  75. </style>