78 lines
1.7 KiB
JavaScript
78 lines
1.7 KiB
JavaScript
|
var cdb = require('cartodb.js-v3');
|
||
|
var BaseDialog = require('./views/base_dialog/view');
|
||
|
|
||
|
/**
|
||
|
* When user wants to delete their own account
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
module.exports = BaseDialog.extend({
|
||
|
events: BaseDialog.extendEvents({
|
||
|
'click .js-ok': '_onClickDelete',
|
||
|
'submit .js-form': 'close'
|
||
|
}),
|
||
|
|
||
|
className: 'Dialog is-opening',
|
||
|
|
||
|
initialize: function () {
|
||
|
if (!this.options['onError']) throw new Error('onError is required');
|
||
|
|
||
|
this.elder('initialize');
|
||
|
|
||
|
this.template = cdb.templates.getTemplate('common/views/delete_account_static');
|
||
|
this._initModels();
|
||
|
},
|
||
|
|
||
|
_initModels: function () {
|
||
|
this._userModel = this.options.user;
|
||
|
this._client = this.options.client;
|
||
|
this._isLoading = false;
|
||
|
},
|
||
|
|
||
|
render_content: function () {
|
||
|
return this.template({
|
||
|
passwordNeeded: !!this._userModel.get('needs_password_confirmation'),
|
||
|
isLoading: this._isLoading
|
||
|
});
|
||
|
},
|
||
|
|
||
|
_onClickDelete: function (event) {
|
||
|
this.killEvent(event);
|
||
|
this._isLoading = true;
|
||
|
|
||
|
var deletionPasswordConfirmation = this.$('#deletion_password_confirmation').val();
|
||
|
|
||
|
var params = {
|
||
|
deletion_password_confirmation: deletionPasswordConfirmation
|
||
|
};
|
||
|
|
||
|
this.render();
|
||
|
|
||
|
var self = this;
|
||
|
this._client.deleteUser(params, function (errors, response, data) {
|
||
|
self._isLoading = false;
|
||
|
self.render();
|
||
|
|
||
|
if (errors) {
|
||
|
self._onError(data, errors);
|
||
|
} else {
|
||
|
self._onSuccess(data);
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
_setHref: function (href) {
|
||
|
window.location.href = href;
|
||
|
},
|
||
|
|
||
|
_onSuccess: function (data) {
|
||
|
this._setHref(data.logout_url);
|
||
|
this.close();
|
||
|
},
|
||
|
|
||
|
_onError: function (data, errors) {
|
||
|
this.options.onError(data, errors);
|
||
|
this.close();
|
||
|
}
|
||
|
});
|