From 89ec974dfcf89a9c7c15d9b2576437f1410b560d Mon Sep 17 00:00:00 2001
From: Bram Wiepjes <bramw@protonmail.com>
Date: Mon, 17 Mar 2025 15:41:05 +0000
Subject: [PATCH] Fix various validations and errors

---
 .../admin/forms/SamlSettingsForm.vue          | 15 ++++++---
 .../admin/modals/AuditLogExportModal.vue      |  1 +
 .../license/RegisterLicenseForm.vue           |  1 +
 .../admin/users/forms/ChangePasswordForm.vue  |  1 -
 .../files/UploadViaURLUserFileUpload.vue      |  1 +
 web-frontend/modules/core/locales/en.json     |  5 +--
 .../modules/core/pages/admin/health.vue       |  2 +-
 .../modules/core/pages/resetPassword.vue      |  2 +-
 web-frontend/modules/core/pages/signup.vue    | 31 ++-----------------
 .../database/components/field/FieldForm.vue   |  1 +
 .../components/settings/APITokenForm.vue      |  1 +
 11 files changed, 20 insertions(+), 41 deletions(-)

diff --git a/enterprise/web-frontend/modules/baserow_enterprise/components/admin/forms/SamlSettingsForm.vue b/enterprise/web-frontend/modules/baserow_enterprise/components/admin/forms/SamlSettingsForm.vue
index ac4f89096..9f4a34161 100644
--- a/enterprise/web-frontend/modules/baserow_enterprise/components/admin/forms/SamlSettingsForm.vue
+++ b/enterprise/web-frontend/modules/baserow_enterprise/components/admin/forms/SamlSettingsForm.vue
@@ -3,7 +3,7 @@
     <FormGroup
       small-label
       required
-      :error="fieldHasErrors('domain')"
+      :error="fieldHasErrors('domain') || !!serverErrors.domain"
       class="margin-bottom-2"
     >
       <template #label>
@@ -21,13 +21,15 @@
         ref="domain"
         v-model="v$.values.domain.$model"
         size="large"
-        :error="fieldHasErrors('domain') || serverErrors.domain"
+        :error="fieldHasErrors('domain') || !!serverErrors.domain"
         :placeholder="$t('samlSettingsForm.domainPlaceholder')"
         @input="onDomainInput()"
         @blur="v$.values.domain.$touch"
       ></FormInput>
       <template #error>
-        {{ v$.values.domain.$errors[0]?.$message }}
+        {{
+          v$.values.domain.$errors[0]?.$message || serverErrors.domain[0].error
+        }}
       </template>
     </FormGroup>
 
@@ -42,14 +44,17 @@
         ref="metadata"
         v-model="v$.values.metadata.$model"
         :rows="12"
-        :error="fieldHasErrors('metadata') || serverErrors.metadata"
+        :error="fieldHasErrors('metadata') || !!serverErrors.metadata"
         :placeholder="$t('samlSettingsForm.metadataPlaceholder')"
         @input="onMetadataInput()"
         @blur="v$.values.metadata.$touch"
       ></FormTextarea>
 
       <template #error>
-        {{ v$.values.metadata.$errors[0]?.$message }}
+        {{
+          v$.values.metadata.$errors[0]?.$message ||
+          serverErrors.metadata[0].error
+        }}
       </template>
     </FormGroup>
 
diff --git a/enterprise/web-frontend/modules/baserow_enterprise/components/admin/modals/AuditLogExportModal.vue b/enterprise/web-frontend/modules/baserow_enterprise/components/admin/modals/AuditLogExportModal.vue
index df0d726ff..75aa8cae7 100644
--- a/enterprise/web-frontend/modules/baserow_enterprise/components/admin/modals/AuditLogExportModal.vue
+++ b/enterprise/web-frontend/modules/baserow_enterprise/components/admin/modals/AuditLogExportModal.vue
@@ -42,6 +42,7 @@
         <DownloadLink
           :url="finishedJob.url"
           :filename="getExportedFilename(finishedJob)"
+          loading-class="button-icon--loading"
         >
           <template #default="{ loading: downloadLoading }">
             <div v-if="downloadLoading" class="loading"></div>
diff --git a/premium/web-frontend/modules/baserow_premium/components/license/RegisterLicenseForm.vue b/premium/web-frontend/modules/baserow_premium/components/license/RegisterLicenseForm.vue
index 93e39e13d..27e1c3398 100644
--- a/premium/web-frontend/modules/baserow_premium/components/license/RegisterLicenseForm.vue
+++ b/premium/web-frontend/modules/baserow_premium/components/license/RegisterLicenseForm.vue
@@ -11,6 +11,7 @@
         v-model="v$.values.license.$model"
         :error="fieldHasErrors('license')"
         :rows="6"
+        @blur="v$.values.license.$touch()"
       />
 
       <template #error>
diff --git a/web-frontend/modules/core/components/admin/users/forms/ChangePasswordForm.vue b/web-frontend/modules/core/components/admin/users/forms/ChangePasswordForm.vue
index 187464959..e7859052e 100644
--- a/web-frontend/modules/core/components/admin/users/forms/ChangePasswordForm.vue
+++ b/web-frontend/modules/core/components/admin/users/forms/ChangePasswordForm.vue
@@ -6,7 +6,6 @@
       :label="$t('changePasswordForm.newPassword')"
       class="margin-bottom-2"
     >
-      {{ v$.values }}
       <PasswordInput
         v-model="values.password"
         :validation-state="v$.values.password"
diff --git a/web-frontend/modules/core/components/files/UploadViaURLUserFileUpload.vue b/web-frontend/modules/core/components/files/UploadViaURLUserFileUpload.vue
index a53c08f32..d037414e8 100644
--- a/web-frontend/modules/core/components/files/UploadViaURLUserFileUpload.vue
+++ b/web-frontend/modules/core/components/files/UploadViaURLUserFileUpload.vue
@@ -13,6 +13,7 @@
           v-model="v$.values.url.$model"
           size="large"
           :error="v$.values.url.$error"
+          @blur="v$.values.url.$touch()"
         >
         </FormInput>
 
diff --git a/web-frontend/modules/core/locales/en.json b/web-frontend/modules/core/locales/en.json
index 0c34cfb51..7c2227552 100644
--- a/web-frontend/modules/core/locales/en.json
+++ b/web-frontend/modules/core/locales/en.json
@@ -477,10 +477,7 @@
     "passwordPlaceholder": "Enter your password..",
     "passwordRepeatPlaceholder": "Confirm your password..",
     "loginText": "Already have an account?",
-    "login": "Login",
-    "agreeTerms": "By creating an account, you agree to the {0} {1} {2}",
-    "terms": "Terms of Service",
-    "privacyPolicy": "Privacy Policy"
+    "login": "Login"
   },
   "forgotPassword": {
     "title": "Forgot password",
diff --git a/web-frontend/modules/core/pages/admin/health.vue b/web-frontend/modules/core/pages/admin/health.vue
index a8339b262..9dc78a443 100644
--- a/web-frontend/modules/core/pages/admin/health.vue
+++ b/web-frontend/modules/core/pages/admin/health.vue
@@ -11,7 +11,7 @@
         <div>
           <div
             v-for="(status, checkName) in healthChecks"
-            :key="status"
+            :key="checkName"
             class="admin-health__check-item"
           >
             <div class="admin-health__check-item-label">
diff --git a/web-frontend/modules/core/pages/resetPassword.vue b/web-frontend/modules/core/pages/resetPassword.vue
index 94e0d76fc..77e4e05a2 100644
--- a/web-frontend/modules/core/pages/resetPassword.vue
+++ b/web-frontend/modules/core/pages/resetPassword.vue
@@ -167,7 +167,7 @@ export default {
         const token = this.$route.params.token
         await AuthService(this.$client).resetPassword(
           token,
-          this.state.password
+          this.account.password
         )
         this.success = true
         this.loading = false
diff --git a/web-frontend/modules/core/pages/signup.vue b/web-frontend/modules/core/pages/signup.vue
index 4d97bc2be..c8e474005 100644
--- a/web-frontend/modules/core/pages/signup.vue
+++ b/web-frontend/modules/core/pages/signup.vue
@@ -36,11 +36,7 @@
       </template>
       <template v-else>
         <template v-if="loginButtons.length">
-          <LoginButtons
-            :invitation="invitation"
-            :original="original"
-            :hide-if-no-buttons="true"
-          />
+          <LoginButtons :invitation="invitation" :hide-if-no-buttons="true" />
 
           <div class="auth__separator">
             {{ $t('common.or') }}
@@ -57,25 +53,7 @@
         <LoginActions
           v-if="!shouldShowAdminSignupPage"
           :invitation="invitation"
-        >
-          <!-- <li class="auth__action-link">
-            <i18n path="signup.agreeTerms" tag="span">
-              <a
-                href="https://baserow.io/terms-and-conditions"
-                target="_blank"
-                @click.stop
-                >{{ $t('signup.terms') }}
-              </a>
-              {{ $t('common.and') }}
-              <a
-                href="https://baserow.io/privacy-policy"
-                target="_blank"
-                @click.stop
-                >{{ $t('signup.privacyPolicy') }}
-              </a>
-            </i18n>
-          </li> -->
-        </LoginActions>
+        ></LoginActions>
       </template>
     </template>
   </div>
@@ -135,11 +113,6 @@ export default {
       loginButtons: 'authProvider/getAllLoginButtons',
       passwordLoginEnabled: 'authProvider/getPasswordLoginEnabled',
     }),
-    termsofServiceURL() {
-      return this.$nuxt.$router.resolve({
-        name: 'terms',
-      }).href
-    },
   },
   methods: {
     next(params) {
diff --git a/web-frontend/modules/database/components/field/FieldForm.vue b/web-frontend/modules/database/components/field/FieldForm.vue
index 7d86ee679..1db00544d 100644
--- a/web-frontend/modules/database/components/field/FieldForm.vue
+++ b/web-frontend/modules/database/components/field/FieldForm.vue
@@ -7,6 +7,7 @@
           v-model="v$.values.name.$model"
           :error="fieldHasErrors('name')"
           :placeholder="$t('fieldForm.name')"
+          @blur="v$.values.name.$touch()"
           @input="isPrefilledWithSuggestedFieldName = false"
           @keydown.enter="handleKeydownEnter($event)"
         ></FormInput>
diff --git a/web-frontend/modules/database/components/settings/APITokenForm.vue b/web-frontend/modules/database/components/settings/APITokenForm.vue
index 5d20124d2..8916188cd 100644
--- a/web-frontend/modules/database/components/settings/APITokenForm.vue
+++ b/web-frontend/modules/database/components/settings/APITokenForm.vue
@@ -12,6 +12,7 @@
         v-model="v$.values.name.$model"
         size="large"
         :error="fieldHasErrors('name')"
+        @blur="v$.values.name.$touch()"
       >
       </FormInput>