Переглянути джерело

move mitm controls to devices page

pull/1/head
Jonathan Cobb 4 роки тому
джерело
коміт
b7f7d68eed
13 змінених файлів з 73 додано та 65 видалено
  1. +3
    -1
      src/_helpers/util.js
  2. +1
    -1
      src/_store/accountPlans.module.js
  3. +3
    -1
      src/_store/apps.module.js
  4. +1
    -1
      src/_store/bills.module.js
  5. +1
    -1
      src/_store/devices.module.js
  6. +1
    -1
      src/_store/domains.module.js
  7. +1
    -1
      src/_store/footprints.module.js
  8. +1
    -1
      src/_store/networks.module.js
  9. +1
    -1
      src/_store/paymentMethods.module.js
  10. +1
    -1
      src/_store/plans.module.js
  11. +1
    -1
      src/_store/users.module.js
  12. +4
    -45
      src/account/AppsPage.vue
  13. +54
    -9
      src/account/DevicesPage.vue

+ 3
- 1
src/_helpers/util.js Переглянути файл

@@ -187,15 +187,17 @@ export const util = {
}
},

checkLoading: function(loadingObject) {
checkLoading: function(loadingObject, store) {
return function() {
for (const key in loadingObject) {
if (loadingObject.hasOwnProperty(key)) {
if (loadingObject[key] === true) {
// console.log('checkLoading('+store+'): returning true because key='+key+' was true');
return true;
}
}
}
// console.log('checkLoading('+store+'): returning false');
return false;
};
},


+ 1
- 1
src/_store/accountPlans.module.js Переглянути файл

@@ -81,7 +81,7 @@ const mutations = {
};

const getters = {
loading: util.checkLoading(state.loading)
loading: util.checkLoading(state.loading, 'accountPlans')
};

export const accountPlans = {


+ 3
- 1
src/_store/apps.module.js Переглянути файл

@@ -212,10 +212,12 @@ const mutations = {
state.loading.getMitmStatus = true;
},
getMitmStatusSuccess(state, enabled) {
console.log('getMitmStatusSuccess: enabled='+enabled);
state.loading.getMitmStatus = false;
state.mitmEnabled = enabled;
},
getMitmStatusFailure(state, error) {
console.log('getMitmStatusFailure: error='+error);
state.loading.getMitmStatus = false;
state.error = error;
},
@@ -424,7 +426,7 @@ const mutations = {
};

const getters = {
loading: util.checkLoading(state.loading)
loading: util.checkLoading(state.loading, 'apps')
};

export const apps = {


+ 1
- 1
src/_store/bills.module.js Переглянути файл

@@ -55,7 +55,7 @@ const mutations = {
};

const getters = {
loading: util.checkLoading(state.loading)
loading: util.checkLoading(state.loading, 'bills')
};

export const bills = {


+ 1
- 1
src/_store/devices.module.js Переглянути файл

@@ -135,7 +135,7 @@ const mutations = {
};

const getters = {
loading: util.checkLoading(state.loading)
loading: util.checkLoading(state.loading, 'devices')
};

export const devices = {


+ 1
- 1
src/_store/domains.module.js Переглянути файл

@@ -56,7 +56,7 @@ const mutations = {
};

const getters = {
loading: util.checkLoading(state.loading)
loading: util.checkLoading(state.loading, 'domains')
};

export const domains = {


+ 1
- 1
src/_store/footprints.module.js Переглянути файл

@@ -54,7 +54,7 @@ const mutations = {
};

const getters = {
loading: util.checkLoading(state.loading)
loading: util.checkLoading(state.loading, 'footprints')
};

export const footprints = {


+ 1
- 1
src/_store/networks.module.js Переглянути файл

@@ -263,7 +263,7 @@ const mutations = {
};

const getters = {
loading: util.checkLoading(state.loading)
loading: util.checkLoading(state.loading, 'networks')
};

export const networks = {


+ 1
- 1
src/_store/paymentMethods.module.js Переглянути файл

@@ -217,7 +217,7 @@ const mutations = {
};

const getters = {
loading: util.checkLoading(state.loading)
loading: util.checkLoading(state.loading, 'paymentMethods')
};

export const paymentMethods = {


+ 1
- 1
src/_store/plans.module.js Переглянути файл

@@ -54,7 +54,7 @@ const mutations = {
};

const getters = {
loading: util.checkLoading(state.loading)
loading: util.checkLoading(state.loading, 'plans')
};

export const plans = {


+ 1
- 1
src/_store/users.module.js Переглянути файл

@@ -375,7 +375,7 @@ const mutations = {
};

const getters = {
loading: util.checkLoading(state.loading)
loading: util.checkLoading(state.loading, 'users')
};

export const users = {


+ 4
- 45
src/account/AppsPage.vue Переглянути файл

@@ -1,29 +1,11 @@
<template>
<div>
<div v-if="user && user.admin">
<h3>{{messages.form_title_mitm}}: {{mitmEnabled ? messages.message_mitm_enabled : messages.message_mitm_disabled}}</h3>
<button v-if="mitmEnabled" :disabled="loading()" @click="mitmOff()">{{messages.button_label_mitm_disable}}</button>
<button v-else :disabled="loading()" @click="mitmOn()">{{messages.button_label_mitm_enable}}</button>
<div v-if="errors.has('mitm')" class="invalid-feedback d-block">{{ errors.first('mitm') }}</div>
<hr/>
</div>

<div>
<h4>{{messages.message_download_ca_cert}}</h4>
<a href="/api/auth/cacert?type=pem">{{messages.message_os_apple}}</a> |
<a href="/api/auth/cacert?type=p12">{{messages.message_os_windows}}</a> |
<a href="/api/auth/cacert?type=cer">{{messages.message_os_android}}</a> |
<a href="/api/auth/cacert?type=crt">{{messages.message_os_linux}}</a>
<hr/>
</div>

<em v-if="loading()">{{messages.loading_apps}}</em>
<div v-if="apps && apps.length > 0">

<h2>{{messages.table_title_apps}}</h2>
<!-- <h2>{{messages.table_title_apps}}</h2>-->

<div v-for="app in apps">
<hr/>
<router-link :to="{ path: '/app/'+ app.name }"><h3><img width="64" v-if="icons && icons[app.name]" :src="icons[app.name]"/>{{messages['app_'+app.name+'_name']}}</h3></router-link>
<div v-if="messages['!app_'+app.name+'_summary']"><h5>{{messages['app_'+app.name+'_summary']}}</h5></div>
<p>{{messages['app_'+app.name+'_description']}}</p>
@@ -32,6 +14,7 @@
<button v-if="app.enabled" @click="disableApp(app.name)">{{messages.button_label_app_disable}}</button>
<button v-else @click="enableApp(app.name)">{{messages.button_label_app_enable}}</button>
</div>
<hr/>
</div>

</div>
@@ -56,11 +39,6 @@
...mapState('system', ['messages'])
},
created () {
this.getMitmStatus({
userId: this.user.uuid,
messages: this.messages,
errors: this.errors
});
this.getAppsByUserId({
userId: this.user.uuid,
messages: this.messages,
@@ -68,27 +46,8 @@
});
},
methods: {
...mapActions('apps', [
'getMitmStatus', 'enableMitm', 'disableMitm',
'getAppsByUserId', 'enableAppByUserId', 'disableAppByUserId'
]),
...mapActions('apps', ['getAppsByUserId', 'enableAppByUserId', 'disableAppByUserId']),
...mapGetters('apps', ['loading']),
mitmOn () {
this.errors.clear();
this.enableMitm({
userId: this.user.uuid,
messages: this.messages,
errors: this.errors
});
},
mitmOff () {
this.errors.clear();
this.disableMitm({
userId: this.user.uuid,
messages: this.messages,
errors: this.errors
});
},
enableApp (appId) {
this.errors.clear();
this.enableAppByUserId({
@@ -110,7 +69,7 @@
},
watch: {
app (a) {
// app was enable/disabled, refresh apps
// app was enabled/disabled, refresh apps
this.getAppsByUserId({
userId: this.user.uuid,
messages: this.messages,


+ 54
- 9
src/account/DevicesPage.vue Переглянути файл

@@ -49,10 +49,6 @@
</table>
</div>

<div v-if="!devices || devices.length === 0">
{{messages.message_no_devices}}
</div>

<hr/>

<form @submit.prevent="addDevice()">
@@ -67,11 +63,30 @@

<hr/>
<div class="form-group">
<button class="btn btn-primary" :disabled="loading()">{{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==" />
<button class="btn btn-primary" :disabled="loading">{{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==" />
</div>
</form>

<hr/>

<div>
<h4>{{messages.message_download_ca_cert}}</h4>
<a href="/api/auth/cacert?type=pem">{{messages.message_os_apple}}</a> |
<a href="/api/auth/cacert?type=p12">{{messages.message_os_windows}}</a> |
<a href="/api/auth/cacert?type=cer">{{messages.message_os_android}}</a> |
<a href="/api/auth/cacert?type=crt">{{messages.message_os_linux}}</a>
<hr/>
</div>

<div v-if="user && user.admin">
<h4>{{messages.form_title_mitm}}: {{mitmEnabled ? messages.message_mitm_enabled : messages.message_mitm_disabled}}</h4>
<button v-if="mitmEnabled" :disabled="mitmLoading" @click="mitmOff()">{{messages.button_label_mitm_disable}}</button>
<button v-else :disabled="mitmLoading" @click="mitmOn()">{{messages.button_label_mitm_enable}}</button>
<div v-if="errors.has('mitm')" class="invalid-feedback d-block">{{ errors.first('mitm') }}</div>
<hr/>
</div>

</div>
</template>

@@ -83,18 +98,27 @@
export default {
data () {
return {
user: util.currentUser(),
userId: util.currentUser().uuid,
submitted: false,
deviceName: null,
displayVpnConfig: {},
config: config
config: config,
mitmLoading: true
};
},
computed: {
...mapState('apps', ['mitmEnabled']),
...mapState('devices', ['devices', 'device', 'qrCodeImageBase64', 'vpnConfBase64']),
...mapState('system', ['messages'])
...mapState('system', ['messages']),
...mapGetters('devices', ['loading'])
},
created () {
this.getMitmStatus({
userId: this.userId,
messages: this.messages,
errors: this.errors
});
this.getDevicesByUserId({
userId: this.userId,
messages: this.messages,
@@ -102,11 +126,11 @@
});
},
methods: {
...mapActions('apps', ['getMitmStatus', 'enableMitm', 'disableMitm']),
...mapActions('devices', [
'getDevicesByUserId', 'addDeviceByUserId', 'removeDeviceByUserId',
'getDeviceQRcodeById', 'getDeviceVPNconfById'
]),
...mapGetters('devices', ['loading']),
addDevice () {
this.errors.clear();
this.submitted = true;
@@ -156,6 +180,24 @@
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
},
mitmOn () {
this.mitmLoading = true;
this.errors.clear();
this.enableMitm({
userId: this.user.uuid,
messages: this.messages,
errors: this.errors
});
},
mitmOff () {
this.mitmLoading = true;
this.errors.clear();
this.disableMitm({
userId: this.user.uuid,
messages: this.messages,
errors: this.errors
});
}
},
watch: {
@@ -164,6 +206,9 @@
// after device added, clear device name field
this.deviceName = null;
}
},
mitmEnabled (m) {
this.mitmLoading = false;
}
}
};

Завантаження…
Відмінити
Зберегти