diff --git a/src/components/CommonUtil.vue b/src/components/CommonUtil.vue index ecff902ff6d5566bf84a775af7dbf98de42b62ca..bbd64eb0b5834a5032fd70e841b3d0f55060af0b 100644 --- a/src/components/CommonUtil.vue +++ b/src/components/CommonUtil.vue @@ -41,6 +41,8 @@ CONST_URL_AUTH_UUID: '/rest/auth/uuid', CONST_URL_AUTH_LOGIN: '/rest/auth/login', CONST_URL_LAST_TIMESTAMP: '/rest/observation/organismsystemupdated', + + CONST_URL_USER: '/user', CONST_URL_CROP_CATEGORY: '/rest/organism/cropcategory/', CONST_URL_CROP_LIST: '/rest/organism/crop/list', diff --git a/src/components/DeleteUserForm.vue b/src/components/DeleteUserForm.vue index c0571ecf10b9054543d9f0ee0c59e307d4c8e96f..e4ccef23434ab270871c886e0f02a005b8f868b3 100644 --- a/src/components/DeleteUserForm.vue +++ b/src/components/DeleteUserForm.vue @@ -93,7 +93,6 @@ }, autoLogout: function() { this.$root.$emit("autoLogout"); - console.info("AutoLogout!") } } } diff --git a/src/components/LoginSystem.vue b/src/components/LoginSystem.vue index e062597345c507cd75e8c1435728fa37e5425c8a..29992bda34e230280114d4b18b17747a0fafd93f 100644 --- a/src/components/LoginSystem.vue +++ b/src/components/LoginSystem.vue @@ -43,12 +43,31 @@ :aria-label="$t('login.pwd.field.placeholder')" v-model="password" v-on:keyup.enter="handleLogin()" /> </div> - - <button class="btn btn-primary" type="button" v-on:click="handleLogin()" - v-on:keyup.enter="handleLogin()"> - {{ $t("login.button.label")}} - </button> - <router-link to="/RegisterUserForm" class="btn btn-warning" onclick="$('.offcanvas-collapse').toggleClass('open')">{{ $t("registeruser.button.label") }}</router-link> + <div class="form-group"> + <button class="btn btn-primary" type="button" v-on:click="handleLogin()" + v-on:keyup.enter="handleLogin()"> + {{ $t("login.button.label")}} + </button> + <router-link to="/RegisterUserForm" class="btn btn-warning" onclick="$('.offcanvas-collapse').toggleClass('open')">{{ $t("registeruser.button.label") }}</router-link> + </div> + <div v-show="!showForgottenPasswordForm && !showForgottenPasswordSubmitSuccessMsg" class="form-group" v-on:click="showForgottenPasswordForm=true"><a href="#" class="card-link">{{ $t("login.forgotpassword.label") }}</a></div> + <div v-show="showForgottenPasswordForm" > + <h4>{{ $t("login.forgotpassword.label") }}</h4> + {{ $t("login.forgotpassword.description")}} + <div class="form-group"> + <input type="text" class="form-control" v-model="email" :placeholder="$t('login.forgotpassword.field.placeholder')"/> + </div> + <div class="form-group"> + <button class="btn btn-primary" type="button" v-on:click="handleForgottenPassword()"> + {{ $t("login.forgotpassword.button.label")}} + </button> + </div> + </div> + <div v-show="showForgottenPasswordSubmitSuccessMsg" class="form-group"> + <h4>{{ $t("login.forgotpassword.label") }}</h4> + {{ $t("login.forgotpassword.success.msg")}} + </div> + <div v-show="errMsg" class="alert alert-warning alert-dismissible fade show"> {{errMsg}} <button type="button" class="close" data-dismiss="alert" aria-label="Close"> @@ -92,6 +111,9 @@ isSyncNeeded: false, errMsg: '', isLogginFail: false, + email: "", + showForgottenPasswordForm: false, + showForgottenPasswordSubmitSuccessMsg: false }; }, //emits: {}, @@ -249,6 +271,25 @@ $('.offcanvas-collapse').removeClass('open'); this.$router.push('/Logout'); }, + handleForgottenPassword: async function(){ + const formData = new URLSearchParams(); + formData.append("email", this.email); + const response = await fetch( + CommonUtil.CONST_URL_DOMAIN + CommonUtil.CONST_URL_USER + "?action=resetPasswordRequestFormSubmit", + { + method: "POST", + body: formData + } + ); + if(response.status != 200) + { + alert("Something went wrong. Status code = " + response.status + ". Please contact your system administrator"); + return false; + } + this.showForgottenPasswordForm = false; + this.showForgottenPasswordSubmitSuccessMsg = true; + + }, /** Remove stored data on logout */ removeStoredData() { /* Remove localstorage */ diff --git a/src/locales/en.json b/src/locales/en.json index e583f7ae7595686d2ab61f709ec9bae81a3e64e4..8ef9b1c700ab590ad17497a7a5f9a1c0237c57a0 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -10,7 +10,12 @@ "login.pwd.field.placeholder": "Password", "login.systems.wrong.credential": "Wrong username and/or password. Please try again.", "logout.header.text": "Logout", - "logout.success.text": "You successfully log out ", + "logout.success.text": "You have successfully logged out ", + "login.forgotpassword.label": "Forgotten password", + "login.forgotpassword.description": "An email will be sent to the provided address, with instructions on how to reset your password.", + "login.forgotpassword.field.placeholder": "E-mail address", + "login.forgotpassword.button.label": "Send e-mail address", + "login.forgotpassword.success.msg": "Your request has been accepted. An e-mail with further instructions has been sent.", "observation.date.label": "Observation Date", "observation.quantification.label": "Quantify", "observation.quantification.form.label": "Observasjon quantification", diff --git a/src/locales/nb.json b/src/locales/nb.json index 526944bcd1a6e1ef261be698b7e3931d599fe8fa..2f599347bf955ca58e069b35de19532eb3850a04 100644 --- a/src/locales/nb.json +++ b/src/locales/nb.json @@ -11,6 +11,11 @@ "login.systems.wrong.credential": "Feil brukernavn og/eller passord. Vennligst prøv igjen.", "logout.header.text": "Logg ut", "logout.success.text": "Du er nå utlogget", + "login.forgotpassword.label": "Glemt passord", + "login.forgotpassword.description": "En e-post sendes til den adressen du registrerer her med informasjon om hvordan du nullstiller nåværende passord og oppretter et nytt.", + "login.forgotpassword.field.placeholder": "E-postadresse", + "login.forgotpassword.button.label": "Send e-postadresse", + "login.forgotpassword.success.msg": "Din henvendelse er behandlet og akseptert. En e-post med flere instruksjoner har blitt sendt til den registrerte e-postadressen.", "observation.date.label": "Observasjonsdato", "observation.quantification.label": "Tell/kvantifiser", "observation.quantification.form.label": "Observasjonsspesifikke detaljer", diff --git a/static/css/vipsobsapp.css b/static/css/vipsobsapp.css index 5e460efcc1fab2934e31bf0c90518ee14b895f8d..a8186a89b52e76551d153768db3a0a5ac19cd7e4 100644 --- a/static/css/vipsobsapp.css +++ b/static/css/vipsobsapp.css @@ -63,13 +63,15 @@ div.addItem { bottom: 25px; right: 25px; z-index: 1000; - } - div.addItem button { - background-color: #3d8052 !important; - border-radius: 25px; - border: 0px; - font-weight: bolder; - } +} + +div.addItem button { + background-color: #3d8052 !important; + border-radius: 25px; + border: 0px; + font-weight: bolder; +} + #divAbout { padding: 10px; border: 1px solid #3d8052;