/* global Backbone, Handlebars, OC, _ */ (function(OC, Handlebars, $, _) { 'use strict'; OC.Settings = OC.Settings || {}; OC.Settings.TwoFactorBackupCodes = OC.Settings.TwoFactorBackupCodes || {}; var TEMPLATE = '
' + '{{#unless enabled}}' + '' + '{{else}}' + '

' + '{{#unless codes}}' + t('twofactor_backupcodes', 'Backup codes have been generated. {{used}} of {{total}} codes have been used.') + '{{else}}' + t('twofactor_backupcodes', 'These are your backup codes. Please save and/or print them as you will not be able to read the codes again later') + '

' + '' + t('twofactor_backupcodes', 'Save backup codes') + '' + '' + '{{/unless}}' + '

' + '

' + '' + '

' + '

' + t('twofactor_backupcodes', 'If you regenerate backup codes, you automatically invalidate old codes.') + '

' + '{{/unless}}' + '"; }, ''); }, /** * Load codes from the server * * @returns {undefined} */ _load: function() { this._loading = true; var url = OC.generateUrl('/apps/twofactor_backupcodes/settings/state'); var loading = $.ajax(url, { method: 'GET' }); $.when(loading).done(function(data) { this._enabled = data.enabled; this._total = data.total; this._used = data.used; }.bind(this)); $.when(loading).always(function() { this._loading = false; this.render(); }.bind(this)); }, /** * Event handler to generate the codes * * @returns {undefined} */ _onGenerateBackupCodes: function() { if (OC.PasswordConfirmation.requiresPasswordConfirmation()) { OC.PasswordConfirmation.requirePasswordConfirmation(_.bind(this._onGenerateBackupCodes, this)); return; } // Hide old codes this._enabled = false; this.render(); $('#generate-backup-codes').addClass('icon-loading-small'); var url = OC.generateUrl('/apps/twofactor_backupcodes/settings/create'); $.ajax(url, { method: 'POST' }).done(function(data) { this._enabled = data.state.enabled; this._total = data.state.total; this._used = data.state.used; this._codes = data.codes; this.render(); }.bind(this)).fail(function() { OC.Notification.showTemporary(t('twofactor_backupcodes', 'An error occurred while generating your backup codes')); $('#generate-backup-codes').removeClass('icon-loading-small'); }); }, /** * Event handler to print the codes * * @returns {undefined} */ _onPrintBackupCodes: function() { var data = this._getPrintData(); var newTab = window.open('', t('twofactor_backupcodes', 'Nextcloud backup codes')); newTab.document.write('

' + t('twofactor_backupcodes', 'Nextcloud backup codes') + '

'); newTab.document.write(data); newTab.print(); newTab.close(); } }); OC.Settings.TwoFactorBackupCodes.View = View; })(OC, Handlebars, $, _);