AuthEdit.js 3.75 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
Ext.define('PVE.dc.AuthEdit', {
    extend: 'PVE.window.Edit',
    alias: ['widget.pveDcAuthEdit'],

    initComponent : function() {
        var me = this;

        me.create = !me.realm;

        var url;
        var method;
        var serverlist;

        if (me.create) {
            url = '/api2/extjs/access/domains';
            method = 'POST';
        } else {
            url = '/api2/extjs/access/domains/' + me.realm;
            method = 'PUT';
        }

        var column1 = [
            {
                xtype: me.create ? 'textfield' : 'displayfield',
                name: 'realm',
                fieldLabel: 'Realm',
                value: me.realm,
                emptyText: 'company.net',
                allowBlank: false
            },
            {
                xtype: 'textfield',
                name: 'base_dn',
                fieldLabel: 'Base Domain Name',
                emptyText: 'CN=Users,DC=Company,DC=net',
                allowBlank: false
            },
            {
                xtype: 'textfield',
                name: 'user_attr',
                emptyText: 'uid / sAMAccountName',
                fieldLabel: 'User Attribute Name',
                allowBlank: false
            },
            {
                xtype: 'textfield',
                name: 'comment',
                fieldLabel: 'Comment',
                emptyText: 'Enterprise Directory Server',
                allowBlank: false
            },
            {
                xtype: 'pvecheckbox',
                fieldLabel: 'Default Realm',
                name: 'default',
                uncheckedValue: 0
            }
        ];

        var column2 = [
	    Ext.create('PVE.form.KVComboBox', {
		fieldLabel: 'Server Type',
                name: 'type',
		data: [
		    ['ad', 'Active Directory Server'],
		    ['ldap', 'LDAP/LDAPs Server']
		]
	    }),
            {
                xtype: 'textfield',
                fieldLabel: 'Server Address',
                name: 'servers',
                emptyText: '192.168.2.23,ldap.company.net',
                listeners: {
                    change: function(combo, newValue){
                        serverlist = newValue.split(',');
                    }
                },
                submitValue: false,
                allowBlank: false
            },
            {
                xtype: 'numberfield',
                name: 'port',
                fieldLabel: 'Server Port',
                minValue: 1,
                maxValue: 65535,
                allowBlank: false
            },
            {
                xtype: 'pvecheckbox',
                fieldLabel: 'SSL',
                name: 'secure',
                uncheckedValue: 0
            }
        ];

	var ipanel = Ext.create('PVE.panel.InputPanel', {
	    column1: column1,
	    column2: column2,
	    onGetValues: function(values) {
                var i;
                for (i=0; i<serverlist.length; i++) {
                    var num = i + 1;
                    values['server' + num.toString()] = serverlist[i];
                }
		return values;
	    }
	});

        Ext.applyIf(me, {
            title: me.create ? "Create Auth" : "Edit Auth '" + me.realm + "'",
            url: url,
            method: method,
	    items: [ ipanel ]
        });

        me.callParent();

        if (!me.create) {
            me.load({
                success: function(response, options) {
Dietmar Maurer's avatar
Dietmar Maurer committed
123
		    var data = response.result.data || {};
124 125 126 127 128 129 130 131 132 133 134 135 136 137
                    var count = 1;
                    while (data['server' + count.toString()]) {
			if (data.servers) {
			    data.servers += ',';
			}
                        data.servers += data['server' + count.toString()];
			count++;
                    }
                    me.setValues(data);
                }
            });
        }
    }
});