From: Dominik Csapak <d.csapak@proxmox.com>
To: pbs-devel@lists.proxmox.com
Subject: [pbs-devel] [PATCH proxmox-backup 3/6] ui: window/AddTfaRecovery: rewrite to a Proxmox.window.Edit
Date: Wed, 13 Jan 2021 12:06:51 +0100 [thread overview]
Message-ID: <20210113110654.17425-4-d.csapak@proxmox.com> (raw)
In-Reply-To: <20210113110654.17425-1-d.csapak@proxmox.com>
we can reuse the edit window from widget toolkit for the most part
this solves some spacing and layout issues and is less code
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
www/window/AddTfaRecovery.js | 116 +++++++++++------------------------
1 file changed, 36 insertions(+), 80 deletions(-)
diff --git a/www/window/AddTfaRecovery.js b/www/window/AddTfaRecovery.js
index 710c243f..a260c0ca 100644
--- a/www/window/AddTfaRecovery.js
+++ b/www/window/AddTfaRecovery.js
@@ -1,23 +1,34 @@
Ext.define('PBS.window.AddTfaRecovery', {
- extend: 'Ext.window.Window',
+ extend: 'Proxmox.window.Edit',
alias: 'widget.pbsAddTfaRecovery',
mixins: ['Proxmox.Mixin.CBind'],
onlineHelp: 'user_mgmt',
-
- modal: true,
- resizable: false,
- title: gettext('Add TFA recovery keys'),
+ isCreate: true,
+ isAdd: true,
+ subject: gettext('TFA recovery keys'),
width: 512,
+ method: 'POST',
fixedUser: false,
- baseurl: '/api2/extjs/access/tfa',
+ url: '/api2/extjs/access/tfa',
+ submitUrl: function(url, values) {
+ let userid = values.userid;
+ delete values.userid;
+ return `${url}/${userid}`;
+ },
+
+ apiCallDone: function(success, response) {
+ if (!success) {
+ return;
+ }
- initComponent: function() {
- let me = this;
- me.callParent();
- Ext.GlobalEvents.fireEvent('proxmoxShowHelp', me.onlineHelp);
+ let values = response.result.data.recovery.join("\n");
+ Ext.create('PBS.window.TfaRecoveryShow', {
+ autoShow: true,
+ values,
+ });
},
viewModel: {
@@ -28,27 +39,13 @@ Ext.define('PBS.window.AddTfaRecovery', {
controller: {
xclass: 'Ext.app.ViewController',
- control: {
- '#': {
- show: function() {
- let me = this;
- let view = me.getView();
-
- if (Proxmox.UserName === 'root@pam') {
- view.lookup('password').setVisible(false);
- view.lookup('password').setDisabled(true);
- }
- },
- },
- },
-
hasEntry: async function(userid) {
let me = this;
let view = me.getView();
try {
await PBS.Async.api2({
- url: `${view.baseurl}/${userid}/recovery`,
+ url: `${view.url}/${userid}/recovery`,
method: 'GET',
});
return true;
@@ -57,11 +54,11 @@ Ext.define('PBS.window.AddTfaRecovery', {
}
},
- init: function() {
+ init: function(view) {
this.onUseridChange(null, Proxmox.UserName);
},
- onUseridChange: async function(_field, userid) {
+ onUseridChange: async function(field, userid) {
let me = this;
me.userid = userid;
@@ -69,43 +66,6 @@ Ext.define('PBS.window.AddTfaRecovery', {
let has_entry = await me.hasEntry(userid);
me.getViewModel().set('has_entry', has_entry);
},
-
- onAdd: async function() {
- let me = this;
- let view = me.getView();
-
- view.mask(gettext('Please wait...'), 'x-mask-loading');
-
- let baseurl = view.baseurl;
-
- let userid = me.userid;
- if (userid === undefined) {
- throw "no userid set";
- }
-
- let params = { type: 'recovery' };
-
- if (Proxmox.UserName !== 'root@pam') {
- params.password = me.lookup('password').getValue();
- }
-
- try {
- let response = await PBS.Async.api2({
- url: `${baseurl}/${userid}`,
- method: 'POST',
- params,
- });
- let values = response.result.data.recovery.join("\n");
- Ext.create('PBS.window.TfaRecoveryShow', {
- autoShow: true,
- values,
- });
- } catch (ex) {
- Ext.Msg.alert(gettext('Error'), ex);
- } finally {
- view.close();
- }
- },
},
items: [
@@ -119,6 +79,9 @@ Ext.define('PBS.window.AddTfaRecovery', {
editConfig: {
xtype: 'pbsUserSelector',
allowBlank: false,
+ validator: function(_value) {
+ return !this.up('window').getViewModel().get('has_entry');
+ },
},
renderer: Ext.String.htmlEncode,
value: Proxmox.UserName,
@@ -126,11 +89,18 @@ Ext.define('PBS.window.AddTfaRecovery', {
change: 'onUseridChange',
},
},
+ {
+ xtype: 'hiddenfield',
+ name: 'type',
+ value: 'recovery',
+ },
{
xtype: 'displayfield',
bind: {
hidden: '{!has_entry}',
},
+ hidden: true,
+ userCls: 'pmx-hint',
value: gettext('User already has recovery keys.'),
},
{
@@ -142,25 +112,11 @@ Ext.define('PBS.window.AddTfaRecovery', {
name: 'password',
allowBlank: false,
validateBlank: true,
- padding: '0 0 5 5',
+ hidden: Proxmox.UserName === 'root@pam',
+ disabled: Proxmox.UserName === 'root@pam',
emptyText: gettext('verify current password'),
},
],
-
- buttons: [
- {
- xtype: 'proxmoxHelpButton',
- },
- '->',
- {
- xtype: 'button',
- text: gettext('Add'),
- handler: 'onAdd',
- bind: {
- disabled: '{has_entry}',
- },
- },
- ],
});
Ext.define('PBS.window.TfaRecoveryShow', {
--
2.20.1
next prev parent reply other threads:[~2021-01-13 11:07 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-13 11:06 [pbs-devel] [PATCH proxmox-backup 0/6] tfa fixups Dominik Csapak
2021-01-13 11:06 ` [pbs-devel] [PATCH proxmox-backup 1/6] ui: LoginView: remove not used viewModel Dominik Csapak
2021-01-13 11:06 ` [pbs-devel] [PATCH proxmox-backup 2/6] ui: config/TfaView: disable Remove button by default Dominik Csapak
2021-01-13 11:06 ` Dominik Csapak [this message]
2021-01-13 11:06 ` [pbs-devel] [PATCH proxmox-backup 4/6] ui: window/AddTfaRecovery: fix style of TfaRecoveryShow window Dominik Csapak
2021-01-13 11:06 ` [pbs-devel] [PATCH proxmox-backup 5/6] ui: window/AddTotp: fix spacing styling of form fields Dominik Csapak
2021-01-13 11:06 ` [pbs-devel] [PATCH proxmox-backup 6/6] ui: window/{AddWebauthn, TfaEdit}: fix spacing/border of the windows Dominik Csapak
2021-01-13 11:12 ` [pbs-devel] [PATCH proxmox-backup 0/6] tfa fixups Dominik Csapak
2021-01-13 16:05 ` [pbs-devel] applied-series: " Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210113110654.17425-4-d.csapak@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox