blob: 4f68e1a38b84449905e1d06f52950c1da4785485 [file] [log] [blame]
<script>
import {accessLevels} from '../consts.js';
import * as ksObjectsPb from '../api_proto/kill_switch_objects_pb.js';
import * as ksPb from '../api_proto/kill_switch_pb.js';
export default {
props: {
modelValue: Boolean, // If the dialog is open
isUpdate: Boolean,
user: {
type: Object,
default: function() {
return new ksObjectsPb.KillSwitchAuthorizedUser()
},
},
},
emits: [
'update:modelValue',
'userAdded',
'userUpdated',
],
data() {
return {
accessLevels,
userM: this.user.cloneMessage(), // User mutable
};
},
watch: {
user(newUser, oldUser) {
this.$data.userM = this.user.cloneMessage();
}
},
computed: {
accessLevel: {
get() {
return this.$data.userM.getAccessLevel().toString();
},
set(level) {
this.$data.userM.setAccessLevel(parseInt(level));
},
},
googleUid: {
get() {
return this.$data.userM.getGoogleUid();
},
set(uid) {
this.$data.userM.setGoogleUid(uid);
},
},
email: {
get() {
return this.$data.userM.getEmail();
},
set(email) {
this.$data.userM.setEmail(email);
},
},
},
methods: {
onSubmit() {
if (this.isUpdate)
this.doUpdate();
else
this.doAdd();
},
doUpdate() {
let request = new ksPb.UpdateAuthorizedUserRequest();
request.setUserId(this.userM.getId());
request.setUser(this.userM);
this.$store.state.client.updateAuthorizedUser(
request, {authorization: this.$store.state.jwtToken})
.then(res => {
this.$emit('userUpdated');
})
.catch(err => console.error(err));
},
doAdd() {
let request = new ksPb.AddAuthorizedUserRequest();
request.setUser(this.userM);
this.$store.state.client.addAuthorizedUser(
request, {authorization: this.$store.state.jwtToken})
.then(res => {
this.$emit('userAdded');
this.$data.userM = this.user.cloneMessage();
})
.catch(err => console.error(err));
},
onCancel() {
this.$data.userM = this.user.cloneMessage();
},
},
};
</script>
<template>
<mcw-dialog
v-model="modelValue"
@update:modelValue="$emit('update:modelValue', $event)"
escape-key-action="close"
scrim-click-action="close"
:auto-stack-buttons="true">
<mcw-dialog-title>{{ isUpdate ? 'Update user ' + userM.getId() : 'Add new user' }}</mcw-dialog-title>
<mcw-dialog-content>
<div>
<p><mcw-select v-model="accessLevel" label="Access level" required>
<mcw-list-item v-for="(al, i) in accessLevels" :data-value="i" role="option">
{{ al }}
</mcw-list-item>
</mcw-select></p>
<p><mcw-textfield v-model="googleUid" label="Google UID" /></p>
<p><mcw-textfield v-model="email" type="email" label="E-mail address" /></p>
</div>
</mcw-dialog-content>
<mcw-dialog-footer>
<mcw-dialog-button @click="onCancel" action="dismiss">Cancel</mcw-dialog-button>
<mcw-dialog-button @click="onSubmit" action="accept">{{ isUpdate ? 'Update' : 'Add' }}</mcw-dialog-button>
</mcw-dialog-footer>
</mcw-dialog>
</template>