sms.vue 2.1 KB

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