sms.vue 2.1 KB

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