public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
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





  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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal