osb/spark/resources/assets/js/settings/api/tokens.js
2017-11-03 16:26:07 +11:00

104 lines
2.5 KiB
JavaScript
Vendored

module.exports = {
props: ['tokens', 'availableAbilities'],
/**
* The component's data.
*/
data() {
return {
updatingToken: null,
deletingToken: null,
updateTokenForm: new SparkForm({
name: '',
abilities: []
}),
deleteTokenForm: new SparkForm({})
}
},
methods: {
/**
* Show the edit token modal.
*/
editToken(token) {
this.updatingToken = token;
this.initializeUpdateFormWith(token);
$('#modal-update-token').modal('show');
},
/**
* Initialize the edit form with the given token.
*/
initializeUpdateFormWith(token) {
this.updateTokenForm.name = token.name;
this.updateTokenForm.abilities = token.metadata.abilities;
},
/**
* Update the token being edited.
*/
updateToken() {
Spark.put(`/settings/api/token/${this.updatingToken.id}`, this.updateTokenForm)
.then(response => {
this.$parent.$emit('updateTokens');
$('#modal-update-token').modal('hide');
})
},
/**
* Toggle the ability on the current token being edited.
*/
toggleAbility(ability) {
if (this.abilityIsAssigned(ability)) {
this.updateTokenForm.abilities = _.reject(
this.updateTokenForm.abilities, a => a == ability
);
} else {
this.updateTokenForm.abilities.push(ability);
}
},
/**
* Determine if the ability has been assigned to the token being edited.
*/
abilityIsAssigned(ability) {
return _.contains(this.updateTokenForm.abilities, ability);
},
/**
* Get user confirmation that the token should be deleted.
*/
approveTokenDelete(token) {
this.deletingToken = token;
$('#modal-delete-token').modal('show');
},
/**
* Delete the specified token.
*/
deleteToken() {
Spark.delete(`/settings/api/token/${this.deletingToken.id}`, this.deleteTokenForm)
.then(() => {
this.$parent.$emit('updateTokens');
$('#modal-delete-token').modal('hide');
});
}
}
};