]>
git.proxmox.com Git - proxmox-backup.git/blob - www/window/AddTfaRecovery.js
1 Ext
.define('PBS.window.AddTfaRecovery', {
2 extend
: 'Proxmox.window.Edit',
3 alias
: 'widget.pbsAddTfaRecovery',
4 mixins
: ['Proxmox.Mixin.CBind'],
6 onlineHelp
: 'user_mgmt',
9 subject
: gettext('TFA recovery keys'),
15 url
: '/api2/extjs/access/tfa',
16 submitUrl: function(url
, values
) {
17 let userid
= values
.userid
;
19 return `${url}/${userid}`;
22 apiCallDone: function(success
, response
) {
27 let values
= response
.result
.data
.recovery
.join("\n");
28 Ext
.create('PBS.window.TfaRecoveryShow', {
41 xclass
: 'Ext.app.ViewController',
42 hasEntry
: async
function(userid
) {
44 let view
= me
.getView();
47 await PBS
.Async
.api2({
48 url
: `${view.url}/${userid}/recovery`,
57 init: function(view
) {
58 this.onUseridChange(null, Proxmox
.UserName
);
61 onUseridChange
: async
function(field
, userid
) {
66 let has_entry
= await me
.hasEntry(userid
);
67 me
.getViewModel().set('has_entry', has_entry
);
73 xtype
: 'pmxDisplayEditField',
76 editable
: (get) => !get('fixedUser'),
78 fieldLabel
: gettext('User'),
80 xtype
: 'pbsUserSelector',
82 validator: function(_value
) {
83 return !this.up('window').getViewModel().get('has_entry');
86 renderer
: Ext
.String
.htmlEncode
,
87 value
: Proxmox
.UserName
,
89 change
: 'onUseridChange',
98 xtype
: 'displayfield',
100 hidden
: '{!has_entry}',
104 value
: gettext('User already has recovery keys.'),
108 inputType
: 'password',
109 fieldLabel
: gettext('Password'),
111 reference
: 'password',
115 hidden
: Proxmox
.UserName
=== 'root@pam',
116 disabled
: Proxmox
.UserName
=== 'root@pam',
117 emptyText
: gettext('verify current password'),
122 Ext
.define('PBS.window.TfaRecoveryShow', {
123 extend
: 'Ext.window.Window',
124 alias
: ['widget.pbsTfaRecoveryShow'],
125 mixins
: ['Proxmox.Mixin.CBind'],
130 title
: gettext('Recovery Keys'),
145 inputId
: 'token-secret-value',
150 'fontFamily': 'monospace',
155 xtype
: 'displayfield',
159 value
: gettext('Please record recovery keys - they will only be displayed now'),
166 handler: function(b
) {
167 document
.getElementById('token-secret-value').select();
168 document
.execCommand("copy");
170 text
: gettext('Copy Secret Value'),