diff --git a/src/components/FormComponents/NewPasswordForm.vue b/src/components/FormComponents/NewPasswordForm.vue index f9a9c779db23ef5d16e6871d1edac10fd7b7e55b..9a1c75bfb37dee46c1c8dbc234d680d056d1c062 100644 --- a/src/components/FormComponents/NewPasswordForm.vue +++ b/src/components/FormComponents/NewPasswordForm.vue @@ -8,8 +8,35 @@ Endre passord </h3> + <div + id="oldPasswordField" + :class="{ error: v$.user.oldPassword.$errors.length }" + > + <label + for="oldPassword" + class="block text-sm text-gray-800 dark:text-gray-200" + >Gammelt passord</label + > + <input + type="password" + v-model="v$.user.oldPassword.$model" + class="block w-full px-4 py-2 mt-2 text-gray-700 placeholder-gray-500 bg-white border rounded-md dark:bg-gray-800 dark:border-gray-600 dark:placeholder-gray-400 focus:border-blue-400 dark:focus:border-blue-300 focus:ring-opacity-40 focus:outline-none focus:ring focus:ring-blue-300" + /> + <!-- error message --> + <div v-for="(error, index) of v$.user.oldPassword.$errors" :key="index"> + <div + class="text-red-600 text-sm" + v-show="showError" + id="oldPasswordErrorId" + > + {{ error.$message }} + </div> + </div> + </div> + <div id="firstPasswordField" + class="mt-4" :class="{ error: v$.user.password.$errors.length }" > <label @@ -71,6 +98,12 @@ :text="'Sett ny passord'" /> </div> + <div class="flex items-center justify-center text-center bg-gray-50"> + <label + class="mx-2 text-sm font-bold text-red-500 dark:text-primary-light hover:underline" + >{{ message }}</label + > + </div> </div> </template> @@ -93,6 +126,9 @@ export default { validations() { return { user: { + oldPassword: { + required: helpers.withMessage(`Feltet må være utfylt`, required), + }, password: { required: helpers.withMessage(`Feltet må være utfylt`, required), minLength: helpers.withMessage( @@ -112,7 +148,9 @@ export default { }, data() { return { + message: "", user: { + oldPassword: "", password: "", rePassword: "", }, @@ -134,30 +172,25 @@ export default { return; } - const newPassword = this.user.password; + const newPassword = { + newPassword: this.user.password, + oldPassword: this.user.oldPassword, + }; const newPasswordResponse = await doNewPassword(newPassword); - if (newPasswordResponse != null) { - console.log("New password set"); - this.$store.commit("saveToken", newPasswordResponse); + if (newPasswordResponse.correctPassword) { + //New password was set + this.message = ""; + this.$store.commit("saveToken", newPasswordResponse.token); await this.$router.push("/"); + } else if (!newPasswordResponse.correctPassword){ + //The old password was not correct + this.message = "Det gamle passordet stemmer ikke for denne brukeren"; } else { - console.log("Couldn't set new password"); + //Ops something went wrong + this.message = "Ops noe gikk galt"; } - - /* - - if (newPasswordResponse.newPasswordSet === true) { - console.log("New password set"); - await this.$router.push("/"); - } else if (newPasswordResponse.newPasswordSet === false) { - console.log("Couldn't set new password"); - } else { - console.log("Something went wrong"); - } - - */ }, validate() { this.$refs.form.validate(); diff --git a/src/utils/apiutil.js b/src/utils/apiutil.js index 1397849ea208d2760f3b8ac372ba1d6820892d73..a48a38855bdcf878f4df50a33fd6c12cae46e423 100644 --- a/src/utils/apiutil.js +++ b/src/utils/apiutil.js @@ -85,21 +85,25 @@ export function getAverageRating(userid) { }); } export async function doNewPassword(password) { + const auth = { correctPassword: false, token: "" }; let res = await axios({ method: "put", - url: API_URL + "user/profile/password", + url: API_URL + "user/password/change", headers: tokenHeader(), data: { password: password, }, }) .then((response) => { - return response; + auth.correctPassword = true; + auth.token = response.data; + return auth; }) .catch((error) => { console.log(error); + return auth; }); - return res.data; + return res; } export function postNewItem(itemInfo) {