kris/download_restore_key
into master
4 years ago
@@ -13,7 +13,7 @@ | |||||
<button class="btn btn-primary" :disabled="status.authenticating || token === null || token.length < 6"> | <button class="btn btn-primary" :disabled="status.authenticating || token === null || token.length < 6"> | ||||
{{messages.button_label_submit_totp_code}} | {{messages.button_label_submit_totp_code}} | ||||
</button> | </button> | ||||
<img v-show="status.authenticating" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="status.authenticating" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</form> | </form> | ||||
</div> | </div> | ||||
@@ -21,7 +21,8 @@ | |||||
<script> | <script> | ||||
import { mapState, mapActions } from 'vuex'; | import { mapState, mapActions } from 'vuex'; | ||||
import { util } from '../_helpers' | |||||
import { util } from '../_helpers'; | |||||
import { loadingImgSrc } from '../_store'; | |||||
export default { | export default { | ||||
data() { | data() { | ||||
@@ -29,7 +30,8 @@ | |||||
submitted: false, | submitted: false, | ||||
token: '', | token: '', | ||||
refresher: null, | refresher: null, | ||||
showTotpModal: false | |||||
showTotpModal: false, | |||||
loadingImgSrc: loadingImgSrc | |||||
}; | }; | ||||
}, | }, | ||||
created() { | created() { | ||||
@@ -40,6 +40,17 @@ export const store = new Vuex.Store({ | |||||
}); | }); | ||||
export const safeEval = require('safe-eval'); | export const safeEval = require('safe-eval'); | ||||
export const loadingImgSrc = 'data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4' | |||||
+ 'wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2' | |||||
+ 'MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63' | |||||
+ 'P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAA' | |||||
+ 'EAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQo' | |||||
+ 'AAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TA' | |||||
+ 'AAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsG' | |||||
+ 'o/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3' | |||||
+ 'lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTA' | |||||
+ 'UkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMT' | |||||
+ 'CpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA=='; | |||||
function evalInContext(vue, string) { | function evalInContext(vue, string) { | ||||
try { | try { | ||||
@@ -243,6 +243,8 @@ const mutations = { | |||||
requestNetworkKeysRequest(state) { | requestNetworkKeysRequest(state) { | ||||
state.loading.requestNetworkKeys = true; | state.loading.requestNetworkKeys = true; | ||||
state.networkKeysRequested = null; | |||||
state.networkKeys = null; | |||||
}, | }, | ||||
requestNetworkKeysSuccess(state, networkId) { | requestNetworkKeysSuccess(state, networkId) { | ||||
state.loading.requestNetworkKeys = false; | state.loading.requestNetworkKeys = false; | ||||
@@ -255,6 +257,8 @@ const mutations = { | |||||
retrieveNetworkKeysRequest(state) { | retrieveNetworkKeysRequest(state) { | ||||
state.loading.retrieveNetworkKeys = true; | state.loading.retrieveNetworkKeys = true; | ||||
state.networkKeysRequested = null; | |||||
state.networkKeys = null; | |||||
}, | }, | ||||
retrieveNetworkKeysSuccess(state, keys) { | retrieveNetworkKeysSuccess(state, keys) { | ||||
state.loading.retrieveNetworkKeys = false; | state.loading.retrieveNetworkKeys = false; | ||||
@@ -86,7 +86,7 @@ | |||||
<hr/> | <hr/> | ||||
<div class="form-group"> | <div class="form-group"> | ||||
<button class="btn btn-primary" :disabled="loading || !addDeviceReady">{{messages.button_label_add_device}}</button> | <button class="btn btn-primary" :disabled="loading || !addDeviceReady">{{messages.button_label_add_device}}</button> | ||||
<img v-show="loading" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="loading" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</form> | </form> | ||||
@@ -119,6 +119,7 @@ | |||||
import { mapState, mapActions, mapGetters } from 'vuex'; | import { mapState, mapActions, mapGetters } from 'vuex'; | ||||
import { util } from '../_helpers'; | import { util } from '../_helpers'; | ||||
import config from 'config'; | import config from 'config'; | ||||
import { loadingImgSrc } from '../_store'; | |||||
export default { | export default { | ||||
data () { | data () { | ||||
@@ -131,7 +132,8 @@ | |||||
displayVpnConfig: {}, | displayVpnConfig: {}, | ||||
displayDeviceHelp: {}, | displayDeviceHelp: {}, | ||||
config: config, | config: config, | ||||
mitmLoading: true | |||||
mitmLoading: true, | |||||
loadingImgSrc: loadingImgSrc | |||||
}; | }; | ||||
}, | }, | ||||
computed: { | computed: { | ||||
@@ -54,10 +54,14 @@ | |||||
</div> | </div> | ||||
<div v-if="network.state === 'running' && configs.networkUuid && network.uuid === configs.networkUuid"> | <div v-if="network.state === 'running' && configs.networkUuid && network.uuid === configs.networkUuid"> | ||||
<button @click="requestRestoreKey()">{{messages.link_network_action_request_keys}}</button> | |||||
<button class="btn btn-secondary" @click="requestRestoreKey()" | |||||
:disabled="loading && loading.requestNetworkKeys"> | |||||
{{messages.link_network_action_request_keys}} | |||||
</button> | |||||
<img v-show="loading && loading.requestNetworkKeys" :src="loadingImgSrc" /> | |||||
<div v-if="errors.has('networkKeys')" class="invalid-feedback d-block">{{ errors.first('networkKeys') }}</div> | <div v-if="errors.has('networkKeys')" class="invalid-feedback d-block">{{ errors.first('networkKeys') }}</div> | ||||
<div v-if="networkKeysRequested && networkKeysRequested === networkId">{{messages.message_network_action_keys_requested}}</div> | <div v-if="networkKeysRequested && networkKeysRequested === networkId">{{messages.message_network_action_keys_requested}}</div> | ||||
<hr /> | |||||
<h5>{{messages.message_network_action_retrieve_keys}}</h5> | <h5>{{messages.message_network_action_retrieve_keys}}</h5> | ||||
<form @submit.prevent="retrieveRestoreKey()"> | <form @submit.prevent="retrieveRestoreKey()"> | ||||
<div class="form-group"> | <div class="form-group"> | ||||
@@ -67,17 +71,23 @@ | |||||
</div> | </div> | ||||
<div class="form-group"> | <div class="form-group"> | ||||
<label for="restoreKeyPassword">{{messages.field_network_key_download_password}}</label> | <label for="restoreKeyPassword">{{messages.field_network_key_download_password}}</label> | ||||
<input type="text" v-model="restoreKeyPassword" v-validate="'required'" name="restoreKeyPassword" class="form-control" :class="{ 'is-invalid': errors.has('password') }" /> | |||||
<input type="text" v-model="restoreKeyPassword" v-validate="'required'" name="restoreKeyPassword" | |||||
class="form-control" :class="{ 'is-invalid': errors.has('password') }" | |||||
:autofocus="this.$route.query.hasOwnProperty('keys_code')"/> | |||||
<div v-if="errors.has('password')" class="invalid-feedback">{{ errors.first('password') }}</div> | <div v-if="errors.has('password')" class="invalid-feedback">{{ errors.first('password') }}</div> | ||||
</div> | </div> | ||||
<button>{{messages.button_label_retrieve_keys}}</button> | |||||
<button class="btn btn-secondary" :disabled="loading && loading.retrieveNetworkKeys"> | |||||
{{ messages.button_label_retrieve_keys }} | |||||
</button> | |||||
<img v-show="loading && loading.retrieveNetworkKeys" :src="loadingImgSrc" /> | |||||
</form> | |||||
<div v-if="networkKeys"> | <div v-if="networkKeys"> | ||||
<hr/> | |||||
<h4><b>{{messages.message_network_keys}}</b></h4>: {{networkKeys}} | |||||
<hr/> | |||||
{{messages.message_network_keys_description}} | |||||
<hr /> | |||||
<h4><b>{{ messages.message_network_keys }}</b></h4> | |||||
<textarea v-model="networkKeys.data" name="networkKeys" class="form-control" cols="50" | |||||
readonly="true" /> | |||||
{{ messages.message_network_keys_description }} | |||||
</div> | </div> | ||||
</form> | |||||
</div> | </div> | ||||
<hr/> | <hr/> | ||||
@@ -92,13 +102,13 @@ | |||||
<div v-if="errors.has('accountPlan')" class="invalid-feedback d-block">{{ errors.first('accountPlan') }}</div> | <div v-if="errors.has('accountPlan')" class="invalid-feedback d-block">{{ errors.first('accountPlan') }}</div> | ||||
<div v-if="network.state === 'running' || network.state === 'starting'" style="border: 2px solid #000;"> | <div v-if="network.state === 'running' || network.state === 'starting'" style="border: 2px solid #000;"> | ||||
<hr/> | <hr/> | ||||
<button @click="stopNet()" class="text-danger">{{messages.link_network_action_stop}}</button> | |||||
<button @click="stopNet()" class="btn btn-danger">{{messages.link_network_action_stop}}</button> | |||||
{{messages.link_network_action_stop_description}} | {{messages.link_network_action_stop_description}} | ||||
</div> | </div> | ||||
<div v-else></div> | <div v-else></div> | ||||
<hr/> | <hr/> | ||||
<div v-if="network.state === 'stopped' || network.state === 'error_stopping'" style="border: 2px solid #000;"> | <div v-if="network.state === 'stopped' || network.state === 'error_stopping'" style="border: 2px solid #000;"> | ||||
<button @click="deleteNet()" class="text-danger">{{messages.link_network_action_delete}}</button> | |||||
<button @click="deleteNet()" class="btn btn-danger">{{messages.link_network_action_delete}}</button> | |||||
{{messages.link_network_action_delete_description}} | {{messages.link_network_action_delete_description}} | ||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -107,8 +117,9 @@ | |||||
</template> | </template> | ||||
<script> | <script> | ||||
import { mapState, mapActions, mapGetters } from 'vuex' | |||||
import { util } from '../_helpers' | |||||
import { mapState, mapActions, mapGetters } from 'vuex'; | |||||
import { util } from '../_helpers'; | |||||
import { loadingImgSrc } from '../_store'; | |||||
export default { | export default { | ||||
data() { | data() { | ||||
@@ -118,13 +129,14 @@ | |||||
stats: null, | stats: null, | ||||
refresher: null, | refresher: null, | ||||
restoreKeyCode: null, | restoreKeyCode: null, | ||||
restoreKeyPassword: null | |||||
restoreKeyPassword: null, | |||||
loadingImgSrc: loadingImgSrc | |||||
}; | }; | ||||
}, | }, | ||||
computed: { | computed: { | ||||
...mapState('networks', [ | ...mapState('networks', [ | ||||
'network', 'newNodeNotification', 'networkStatuses', 'networkNodes', 'networkKeysRequested', | 'network', 'newNodeNotification', 'networkStatuses', 'networkNodes', 'networkKeysRequested', | ||||
'deletedNetwork', 'networkKeys' | |||||
'deletedNetwork', 'networkKeys', 'loading' | |||||
]), | ]), | ||||
...mapState('system', ['messages', 'configs']), | ...mapState('system', ['messages', 'configs']), | ||||
showSetupHelp () { | showSetupHelp () { | ||||
@@ -134,9 +146,8 @@ | |||||
methods: { | methods: { | ||||
...mapActions('networks', [ | ...mapActions('networks', [ | ||||
'getNetworkById', 'deleteNetwork', 'getStatusesByNetworkId', 'getNodesByNetworkId', | 'getNetworkById', 'deleteNetwork', 'getStatusesByNetworkId', 'getNodesByNetworkId', | ||||
'stopNetwork', 'deleteNetwork', 'requestNetworkKeys' | |||||
'stopNetwork', 'deleteNetwork', 'requestNetworkKeys', 'retrieveNetworkKeys' | |||||
]), | ]), | ||||
...mapGetters('networks', ['loading']), | |||||
refreshStatus (userId) { | refreshStatus (userId) { | ||||
this.getNetworkById({userId: userId, networkId: this.networkId, messages: this.messages, errors: this.errors}); | this.getNetworkById({userId: userId, networkId: this.networkId, messages: this.messages, errors: this.errors}); | ||||
this.getStatusesByNetworkId({ | this.getStatusesByNetworkId({ | ||||
@@ -200,6 +211,7 @@ | |||||
const user = util.currentUser(); | const user = util.currentUser(); | ||||
this.refreshStatus(user.uuid); | this.refreshStatus(user.uuid); | ||||
this.startStatusRefresher(user); | this.startStatusRefresher(user); | ||||
this.restoreKeyCode = this.$route.query.keys_code; | |||||
}, | }, | ||||
beforeDestroy () { | beforeDestroy () { | ||||
clearInterval(this.refresher); | clearInterval(this.refresher); | ||||
@@ -299,7 +299,7 @@ | |||||
<div class="form-group"> | <div class="form-group"> | ||||
<button class="btn btn-primary" :disabled="loading() || !isComplete" @click="launchBubble()">{{messages.button_label_create_new_network}}</button> | <button class="btn btn-primary" :disabled="loading() || !isComplete" @click="launchBubble()">{{messages.button_label_create_new_network}}</button> | ||||
<img v-show="loading()" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="loading()" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</form> | </form> | ||||
</div> | </div> | ||||
@@ -309,6 +309,7 @@ | |||||
<script> | <script> | ||||
import { mapState, mapActions, mapGetters } from 'vuex' | import { mapState, mapActions, mapGetters } from 'vuex' | ||||
import { util } from '../_helpers' | import { util } from '../_helpers' | ||||
import { loadingImgSrc } from '../_store'; | |||||
// convenience methods | // convenience methods | ||||
import { isAuthenticator, isNotAuthenticator } from '../_store/users.module'; | import { isAuthenticator, isNotAuthenticator } from '../_store/users.module'; | ||||
@@ -367,7 +368,8 @@ | |||||
firstContact: null, | firstContact: null, | ||||
payMethods: null, | payMethods: null, | ||||
accountPayMethods: null, | accountPayMethods: null, | ||||
selectedPaymentMethod: null | |||||
selectedPaymentMethod: null, | |||||
loadingImgSrc: loadingImgSrc | |||||
}; | }; | ||||
}, | }, | ||||
computed: { | computed: { | ||||
@@ -19,7 +19,7 @@ | |||||
</div> | </div> | ||||
<div class="form-group"> | <div class="form-group"> | ||||
<button class="btn btn-primary" :disabled="loading()">{{messages.button_label_request_password_reset}}</button> | <button class="btn btn-primary" :disabled="loading()">{{messages.button_label_request_password_reset}}</button> | ||||
<img v-show="loading()" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="loading()" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div v-else> | <div v-else> | ||||
@@ -49,7 +49,7 @@ | |||||
<div class="form-group"> | <div class="form-group"> | ||||
<button class="btn btn-primary" :disabled="loading()">{{messages.button_label_change_password}}</button> | <button class="btn btn-primary" :disabled="loading()">{{messages.button_label_change_password}}</button> | ||||
<img v-show="loading()" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="loading()" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
@@ -60,6 +60,7 @@ | |||||
<script> | <script> | ||||
import { mapState, mapActions, mapGetters } from 'vuex'; | import { mapState, mapActions, mapGetters } from 'vuex'; | ||||
import { util } from '../../_helpers'; | import { util } from '../../_helpers'; | ||||
import { loadingImgSrc } from '../../_store'; | |||||
export default { | export default { | ||||
data() { | data() { | ||||
@@ -75,7 +76,8 @@ | |||||
totpToken: null, | totpToken: null, | ||||
hasRequiredAuthenticator: null, | hasRequiredAuthenticator: null, | ||||
hasRequiredExternalAuth: null, | hasRequiredExternalAuth: null, | ||||
requiredExternalAuthContacts: [] | |||||
requiredExternalAuthContacts: [], | |||||
loadingImgSrc: loadingImgSrc | |||||
} | } | ||||
}, | }, | ||||
computed: { | computed: { | ||||
@@ -55,7 +55,7 @@ | |||||
<hr/> | <hr/> | ||||
<div class="form-group"> | <div class="form-group"> | ||||
<button class="btn btn-primary" :disabled="loading()">{{messages.button_label_update_policy}}</button> | <button class="btn btn-primary" :disabled="loading()">{{messages.button_label_update_policy}}</button> | ||||
<img v-show="loading()" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="loading()" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</form> | </form> | ||||
@@ -329,7 +329,7 @@ | |||||
<hr/> | <hr/> | ||||
<div class="form-group"> | <div class="form-group"> | ||||
<button class="btn btn-primary" :disabled="loading() || !newContactValid">{{messages.button_label_add_contact}}</button> | <button class="btn btn-primary" :disabled="loading() || !newContactValid">{{messages.button_label_add_contact}}</button> | ||||
<img v-show="loading()" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="loading()" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</form> | </form> | ||||
@@ -339,6 +339,7 @@ | |||||
<script> | <script> | ||||
import { mapState, mapActions, mapGetters } from 'vuex'; | import { mapState, mapActions, mapGetters } from 'vuex'; | ||||
import { util } from '../../_helpers'; | import { util } from '../../_helpers'; | ||||
import { loadingImgSrc } from '../../_store'; | |||||
// convenience methods | // convenience methods | ||||
import { isAuthenticator, isNotAuthenticator } from '../../_store/users.module'; | import { isAuthenticator, isNotAuthenticator } from '../../_store/users.module'; | ||||
@@ -386,7 +387,8 @@ | |||||
newContact: initNewContact(), | newContact: initNewContact(), | ||||
verifyingContact: null, | verifyingContact: null, | ||||
inboundAction: null, | inboundAction: null, | ||||
watchedPolicy: null | |||||
watchedPolicy: null, | |||||
loadingImgSrc: loadingImgSrc | |||||
} | } | ||||
}, | }, | ||||
computed: { | computed: { | ||||
@@ -99,7 +99,7 @@ | |||||
<div class="form-group"> | <div class="form-group"> | ||||
<button v-if="newUser === null || newUser === false || admin !== true" class="btn btn-primary" :disabled="loading()">{{messages.button_label_update_profile}}</button> | <button v-if="newUser === null || newUser === false || admin !== true" class="btn btn-primary" :disabled="loading()">{{messages.button_label_update_profile}}</button> | ||||
<button v-else class="btn btn-primary" :disabled="loading()">{{messages.button_label_create_account}}</button> | <button v-else class="btn btn-primary" :disabled="loading()">{{messages.button_label_create_account}}</button> | ||||
<img v-show="loading()" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="loading()" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</form> | </form> | ||||
</div> | </div> | ||||
@@ -108,6 +108,7 @@ | |||||
<script> | <script> | ||||
import { mapState, mapActions, mapGetters } from 'vuex'; | import { mapState, mapActions, mapGetters } from 'vuex'; | ||||
import { util } from '../../_helpers'; | import { util } from '../../_helpers'; | ||||
import { loadingImgSrc } from '../../_store'; | |||||
const BLANK_SUBJECT = { | const BLANK_SUBJECT = { | ||||
name: null, | name: null, | ||||
@@ -136,7 +137,8 @@ | |||||
admin: false, | admin: false, | ||||
newUser: null, | newUser: null, | ||||
submitted: false, | submitted: false, | ||||
subject: Object.assign({}, BLANK_SUBJECT) | |||||
subject: Object.assign({}, BLANK_SUBJECT), | |||||
loadingImgSrc: loadingImgSrc | |||||
}; | }; | ||||
}, | }, | ||||
computed: { | computed: { | ||||
@@ -25,7 +25,7 @@ | |||||
<div class="form-group"> | <div class="form-group"> | ||||
<button class="btn btn-primary" :disabled="loading()">{{messages.button_label_set_password}}</button> | <button class="btn btn-primary" :disabled="loading()">{{messages.button_label_set_password}}</button> | ||||
<img v-show="loading()" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="loading()" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</form> | </form> | ||||
@@ -36,6 +36,7 @@ | |||||
<script> | <script> | ||||
import { mapState, mapActions, mapGetters } from 'vuex'; | import { mapState, mapActions, mapGetters } from 'vuex'; | ||||
import { util } from '../../_helpers'; | import { util } from '../../_helpers'; | ||||
import { loadingImgSrc } from '../../_store'; | |||||
export default { | export default { | ||||
data() { | data() { | ||||
@@ -46,7 +47,8 @@ | |||||
newPasswordConfirm: null, | newPasswordConfirm: null, | ||||
code: null, | code: null, | ||||
showTotp: false, | showTotp: false, | ||||
totpToken: null | |||||
totpToken: null, | |||||
loadingImgSrc: loadingImgSrc | |||||
} | } | ||||
}, | }, | ||||
computed: { | computed: { | ||||
@@ -53,7 +53,7 @@ | |||||
<div class="form-group"> | <div class="form-group"> | ||||
<button class="btn btn-primary" :disabled="loading() || !newKeyValid">{{messages.button_label_add_ssh_key}}</button> | <button class="btn btn-primary" :disabled="loading() || !newKeyValid">{{messages.button_label_add_ssh_key}}</button> | ||||
<img v-show="loading()" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="loading()" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</form> | </form> | ||||
@@ -64,6 +64,7 @@ | |||||
import { mapState, mapActions, mapGetters } from 'vuex'; | import { mapState, mapActions, mapGetters } from 'vuex'; | ||||
import { util } from '../../_helpers'; | import { util } from '../../_helpers'; | ||||
import { Settings } from 'luxon'; | import { Settings } from 'luxon'; | ||||
import { loadingImgSrc } from '../../_store'; | |||||
export default { | export default { | ||||
data() { | data() { | ||||
@@ -77,7 +78,8 @@ | |||||
expiration: null, | expiration: null, | ||||
sshPublicKey: null, | sshPublicKey: null, | ||||
minExpiration: (new Date()).toISOString(), | minExpiration: (new Date()).toISOString(), | ||||
timezone: null | |||||
timezone: null, | |||||
loadingImgSrc: loadingImgSrc | |||||
}; | }; | ||||
}, | }, | ||||
computed: { | computed: { | ||||
@@ -84,7 +84,7 @@ | |||||
<div class="form-group"> | <div class="form-group"> | ||||
<button class="btn btn-primary" :disabled="status.activating">{{messages.button_label_activate}}</button> | <button class="btn btn-primary" :disabled="status.activating">{{messages.button_label_activate}}</button> | ||||
<img v-show="status.activating" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="status.activating" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</form> | </form> | ||||
</div> | </div> | ||||
@@ -92,6 +92,7 @@ | |||||
<script> | <script> | ||||
import { mapState, mapActions } from 'vuex' | import { mapState, mapActions } from 'vuex' | ||||
import { loadingImgSrc } from '../_store'; | |||||
function toCredentialsMap(creds) { | function toCredentialsMap(creds) { | ||||
const map = {}; | const map = {}; | ||||
@@ -127,7 +128,9 @@ | |||||
domainName: null, | domainName: null, | ||||
publicDns: null, | publicDns: null, | ||||
displayShowAllCheckbox: null | |||||
displayShowAllCheckbox: null, | |||||
loadingImgSrc: loadingImgSrc | |||||
}; | }; | ||||
}, | }, | ||||
computed: { | computed: { | ||||
@@ -11,7 +11,7 @@ | |||||
</div> | </div> | ||||
<div class="form-group"> | <div class="form-group"> | ||||
<button class="btn btn-primary" :disabled="status.sendingResetPasswordMessage === true">{{messages.button_label_resetPassword}}</button> | <button class="btn btn-primary" :disabled="status.sendingResetPasswordMessage === true">{{messages.button_label_resetPassword}}</button> | ||||
<img v-show="status.sendingResetPasswordMessage === true" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="status.sendingResetPasswordMessage === true" :src="loadingImgSrc" /> | |||||
</div> | </div> | ||||
</form> | </form> | ||||
</div> | </div> | ||||
@@ -20,12 +20,14 @@ | |||||
<script> | <script> | ||||
import { mapState, mapActions } from 'vuex' | import { mapState, mapActions } from 'vuex' | ||||
import { util } from '../_helpers' | import { util } from '../_helpers' | ||||
import { loadingImgSrc } from '../_store'; | |||||
export default { | export default { | ||||
data () { | data () { | ||||
return { | return { | ||||
name: '', | name: '', | ||||
submitted: false | |||||
submitted: false, | |||||
loadingImgSrc: loadingImgSrc | |||||
} | } | ||||
}, | }, | ||||
computed: { | computed: { | ||||
@@ -32,7 +32,7 @@ | |||||
<div class="form-group"> | <div class="form-group"> | ||||
<div><small v-html="messages.message_login_agreeToTerms"></small><hr/></div> | <div><small v-html="messages.message_login_agreeToTerms"></small><hr/></div> | ||||
<button class="btn btn-primary" :disabled="status.loggingIn">{{messages.button_label_login}}</button> | <button class="btn btn-primary" :disabled="status.loggingIn">{{messages.button_label_login}}</button> | ||||
<img v-show="status.loggingIn" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="status.loggingIn" :src="loadingImgSrc" /> | |||||
<router-link v-if="configs && configs.allowRegistration" to="/register" class="btn btn-link">{{messages.button_label_register}}</router-link> | <router-link v-if="configs && configs.allowRegistration" to="/register" class="btn btn-link">{{messages.button_label_register}}</router-link> | ||||
</div> | </div> | ||||
<div class="form-group"> | <div class="form-group"> | ||||
@@ -44,6 +44,7 @@ | |||||
<script> | <script> | ||||
import { mapState, mapActions } from 'vuex'; | import { mapState, mapActions } from 'vuex'; | ||||
import { loadingImgSrc } from '../_store'; | |||||
export default { | export default { | ||||
data () { | data () { | ||||
@@ -53,7 +54,8 @@ export default { | |||||
totpToken: null, | totpToken: null, | ||||
unlockKey: (this.$route.query && this.$route.query.k) ? this.$route.query.k : null, | unlockKey: (this.$route.query && this.$route.query.k) ? this.$route.query.k : null, | ||||
showTotp: false, | showTotp: false, | ||||
submitted: false | |||||
submitted: false, | |||||
loadingImgSrc: loadingImgSrc | |||||
} | } | ||||
}, | }, | ||||
created () { | created () { | ||||
@@ -71,7 +71,7 @@ | |||||
</div> | </div> | ||||
<div class="form-group"> | <div class="form-group"> | ||||
<button class="btn btn-primary" :disabled="status.registering">{{messages.button_label_register}}</button> | <button class="btn btn-primary" :disabled="status.registering">{{messages.button_label_register}}</button> | ||||
<img v-show="status.registering" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" /> | |||||
<img v-show="status.registering" :src="loadingImgSrc" /> | |||||
<router-link to="/login" class="btn btn-link">{{messages.button_label_cancel}}</router-link> | <router-link to="/login" class="btn btn-link">{{messages.button_label_cancel}}</router-link> | ||||
</div> | </div> | ||||
</form> | </form> | ||||
@@ -81,6 +81,7 @@ | |||||
<script> | <script> | ||||
import { mapState, mapActions, mapGetters } from 'vuex'; | import { mapState, mapActions, mapGetters } from 'vuex'; | ||||
import { util } from '../_helpers'; | import { util } from '../_helpers'; | ||||
import { loadingImgSrc } from '../_store'; | |||||
export default { | export default { | ||||
data () { | data () { | ||||
@@ -101,7 +102,8 @@ export default { | |||||
selectedPaymentMethod: null, | selectedPaymentMethod: null, | ||||
paymentMethodObject: null, | paymentMethodObject: null, | ||||
confirmPassword: '', | confirmPassword: '', | ||||
submitted: false | |||||
submitted: false, | |||||
loadingImgSrc: loadingImgSrc | |||||
} | } | ||||
}, | }, | ||||
computed: { | computed: { | ||||