PHP8
[Pman.BAdmin] / Pman.Dialog.BAdminStaff.bjs
index 39eac46..56bfa06 100644 (file)
  "name" : "Pman.Dialog.BAdminStaff",
  "parent" : "",
  "title" : "",
- "path" : "/home/edward/gitlive/Pman.BAdmin/Pman.Dialog.BAdminStaff.bjs",
+ "path" : "/home/alan/gitlive/Pman.BAdmin/Pman.Dialog.BAdminStaff.bjs",
  "permname" : "",
  "modOrder" : "001",
  "strings" : {
   "ce8ae9da5b7cd6c3df2929543a9af92d" : "Email",
-  "566a352f95c879ff26e50bad767a28dc" : "Group Membership",
-  "4910043d0b2c8c864a0e8672716fee94" : "Is a Member",
-  "a60cdd3642fbe81545a3b93fe2b19dd6" : "Two-Factor Authentication",
-  "28974c2c793e780427dfb571b26443e6" : "Group Name",
   "bcc254b55c4a1babdf1dcb82c207506b" : "Phone",
-  "a6b81fd617c4f1b94f83049793cac3cd" : "Show QR Code",
   "a0f852ef8bfccd86a0e7217d7959e3e8" : "Add / Edit User",
-  "3ec365dd533ddb7ef3d1c111186ce872" : "Details",
   "0bfe42db3eb05bf39f03812166391939" : "Use Secure Passwords",
   "ea4788705e6873b424c65e91c2846b19" : "Cancel",
-  "73b00356c62eb391f571b6468be7c372" : "Generate QR Code",
   "6f958ddaf50fd5ade7858ef1d1a63e51" : "Type again to confirm",
-  "49ee3087348e8d44e1feda1917443987" : "Name",
   "bbbabdbe1b262f75d99d62880b953be1" : "Role",
-  "1960f813085537c64f981132e34181ca" : "Delete QR Code",
+  "49ee3087348e8d44e1feda1917443987" : "Name",
   "c9cc8cce247e49bae79f15173ce97354" : "Save",
   "828e70f83623b262e14187c039df99c0" : "Enable Two-Factor Authentication",
   "acf45fd8829f809b29c601a3a193804f" : "Set / Change Password",
   "01028205a11cf95a503c4c1d005989da" : "Generate One"
  },
+ "named_strings" : {
+  "email_placeholder" : "ce8ae9da5b7cd6c3df2929543a9af92d",
+  "secure_passwords_boxLabel" : "0bfe42db3eb05bf39f03812166391939",
+  "name_placeholder" : "49ee3087348e8d44e1feda1917443987",
+  "role_fieldLabel" : "bbbabdbe1b262f75d99d62880b953be1",
+  "name_fieldLabel" : "49ee3087348e8d44e1feda1917443987",
+  "role_placeholder" : "bbbabdbe1b262f75d99d62880b953be1",
+  "phone_fieldLabel" : "bcc254b55c4a1babdf1dcb82c207506b",
+  "_enable_oath_key_boxLabel" : "828e70f83623b262e14187c039df99c0",
+  "email_fieldLabel" : "ce8ae9da5b7cd6c3df2929543a9af92d",
+  "passwd2_placeholder" : "6f958ddaf50fd5ade7858ef1d1a63e51"
+ },
  "items" : [
   {
    "listeners" : {
-    "beforeshow" : "function (_self)\n{\n    //_console.log(_this.detail_tab);\n}",
-    "show" : "function (_self)\n{\n    //_this.dialog.items[0].getRegion('center').showPanel(0); \n\n    //setting first adminstrator in open system\n    \n    if(typeof(_this.data.role) != 'undefined' && _this.data.role == 'Administrators') {\n        \n        Roo.select('.add-user-dialog .modal-title').first().dom.innerHTML = \"Create Adminstrator\";\n        \n        _this.form.findField('role').inputEl().dom.disabled = true;\n    }\n    _this.layout.showPanel('DetailPanel');\n}",
-    "render" : "function (_self)\n{\n    this.bodyEl.setHeight(600);\n}"
+    "render" : "function (_self)\n{\n    _this.dialog = this;\n}"
    },
    "String cls" : "add-user-dialog",
+   "string fit_content" : true,
    "xtype" : "Modal",
-   "Boolean fitwindow" : false,
-   "int maxWidth" : 650,
    "$ xns" : "Roo.bootstrap",
    "String title" : "Add / Edit User",
    "items" : [
     {
      "listeners" : {
-      "render" : "function (_self)\n{\n    _this.layout = _self;\n}"
+      "actioncomplete" : "function (_self, action)\n{\n    if(action.type == 'setdata'){\n        \n       // _this.layout.showPanel('DetailPanel');\n        \n        _this.dialog.setTitle(_this.data.id *1 > 0 ? \"Edit User: \" + _this.data.name : 'Add User');\n        _this.form.findField('role').setDisabled(false);\n        \n        /*\n        * Use for init -- Call from Pman.Login.js\n        */\n        if(\n            typeof(_this.data.role) != 'undefined' &&\n            _this.data.role == 'Administrators'\n        ) {\n            _this.dialog.setTitle(\"Create Adminstrator\");\n            _this.form.findField('role').setDisabled(true);\n        }\n        \n        _this.form.findField('passwd1').el.select('input',true).first().dom.type=\"password\";\n        _this.form.findField('passwd2').show();\n        _this.passwordbox.collapse();\n        \n        _this.form.findField('secure_passwords').setValue(1);\n        \n        if(_this.data.id * 1 > 0) {\n            this.doAction('load',{ method: 'GET', params: { '_id' : _this.data.id }});\n        }\n        \n        \n        \n        this.clearInvalid();\n        \n        _this.dialog.resize();\n        \n        return;\n    }\n   \n    if (action.type == 'load') {\n        \n        _this.data = action.result.data;\n        \n        // oath handling...\n        \n        _this.form.findField('_enable_oath_key').setChecked(false,false);\n        \n        if(_this.data.length_oath_key != '0') {\n            _this.form.findField('_enable_oath_key').setChecked(true,false);\n        }\n        \n        return;\n    }\n    \n    if (action.type == 'submit') { // only submitted here if we are \n    \n        _this.dialog.hide();\n       \n        if (_this.callback) {\n            _this.callback.call(this, action.result.data);\n        }\n        \n        return;\n    }\n}",
+      "render" : "function (_self)\n{\n    _this.form = this;\n}"
      },
-     "xtype" : "Border",
-     "$ xns" : "Roo.bootstrap.layout",
+     "$ url" : "baseURL + '/Roo/core_person' ",
+     "style" : "margin-top: 20px;",
+     "xtype" : "Form",
+     "String labelAlign" : "top",
+     "$ xns" : "Roo.bootstrap",
+     "string errorMask" : true,
      "items" : [
       {
-       "alwaysShowTabs" : true,
-       "String tabPosition" : "top",
-       "xtype" : "Region",
-       "$ xns" : "Roo.bootstrap.layout",
-       "* prop" : "center"
+       "xtype" : "Row",
+       "$ xns" : "Roo.bootstrap",
+       "items" : [
+        {
+         "Number md" : 12,
+         "xtype" : "Column",
+         "$ xns" : "Roo.bootstrap",
+         "items" : [
+          {
+           "Boolean allowBlank" : false,
+           "String name" : "name",
+           "xtype" : "Input",
+           "string placeholder" : "Name",
+           "String labelAlign" : "left",
+           "string fieldLabel" : "Name",
+           "$ xns" : "Roo.bootstrap"
+          }
+         ]
+        }
+       ]
       },
       {
-       "listeners" : {
-        "activate" : "function (_self)\n{\n    /*var url = 'about:blank';\n    \n    if(_this.data.id * 1 > 0){\n        url = baseURL + '/Coba/Report/ApplicationSummary/' + _this.data.id;\n    }\n     \n    _this.app_summary_frame.el.dom.src = url;*/\n    \n}",
-        "render" : "function (_self)\n{\n    _this.detail_tab = _self;\n}"
-       },
-       "id" : "DetailPanel",
-       "Boolean fitContainer" : true,
-       "xtype" : "Content",
-       "Boolean fitToFrame" : true,
-       "$ xns" : "Roo.bootstrap.panel",
-       "String region" : "center",
-       "String title" : "Details",
-       "Boolean autoScroll" : true,
-       "Boolean background" : false,
+       "xtype" : "Row",
+       "$ xns" : "Roo.bootstrap",
+       "items" : [
+        {
+         "Number md" : 12,
+         "xtype" : "Column",
+         "$ xns" : "Roo.bootstrap",
+         "items" : [
+          {
+           "String name" : "role",
+           "xtype" : "Input",
+           "string placeholder" : "Role",
+           "string fieldLabel" : "Role",
+           "String labelAlign" : "left",
+           "$ xns" : "Roo.bootstrap"
+          }
+         ]
+        }
+       ]
+      },
+      {
+       "xtype" : "Row",
+       "$ xns" : "Roo.bootstrap",
+       "items" : [
+        {
+         "Number md" : 12,
+         "xtype" : "Column",
+         "$ xns" : "Roo.bootstrap",
+         "items" : [
+          {
+           "Boolean allowBlank" : false,
+           "String name" : "email",
+           "xtype" : "Input",
+           "vtype" : "email",
+           "string placeholder" : "Email",
+           "String labelAlign" : "left",
+           "string fieldLabel" : "Email",
+           "$ xns" : "Roo.bootstrap"
+          }
+         ]
+        }
+       ]
+      },
+      {
+       "xtype" : "Row",
+       "$ xns" : "Roo.bootstrap",
+       "items" : [
+        {
+         "Number md" : 12,
+         "xtype" : "Column",
+         "$ xns" : "Roo.bootstrap",
+         "items" : [
+          {
+           "String name" : "phone",
+           "xtype" : "Input",
+           "string fieldLabel" : "Phone",
+           "String labelAlign" : "left",
+           "$ xns" : "Roo.bootstrap"
+          }
+         ]
+        }
+       ]
+      },
+      {
+       "xtype" : "Row",
+       "$ xns" : "Roo.bootstrap",
        "items" : [
         {
-         "String cls" : "col-md-12",
-         "xtype" : "Container",
+         "Number md" : 12,
+         "xtype" : "Column",
          "$ xns" : "Roo.bootstrap",
          "items" : [
           {
            "listeners" : {
-            "actioncomplete" : "function (_self, action)\n{\n    if(action.type == 'setdata'){\n        \n        _this.form.findField('passwd1').el.select('input',true).first().dom.type=\"password\";\n        _this.form.findField('passwd2').show();\n        _this.passwordbox.collapse();\n        \n        _this.qrCodeBox.collapse();\n        _this.qrCodeBox.el.hide();\n        _this.form.findField('_enable_oath_key').setValue(1);\n        _this.form.findField('_enable_oath_key').el.show();\n        \n        _this.generate_qrcode_btn.el.hide();\n        _this.delete_qrcode_btn.el.hide();\n        _this.show_qrcode_btn.el.hide();\n        \n        if(_this.data.id * 1 > 0) {\n            this.doAction('load',{ method: 'GET', params: { '_id' : _this.data.id }});\n        }\n        \n        this.clearInvalid();\n        \n        return;\n    }\n   \n    if (action.type == 'load') {\n    \n        _this.data = action.result.data;\n        \n        _this.qrCodeBox.el.show();\n        _this.form.findField('_enable_oath_key').setValue(0);\n        _this.form.findField('_enable_oath_key').el.hide();\n        \n        _this.generate_qrcode_btn.el.show();\n        _this.delete_qrcode_btn.el.hide();\n        _this.show_qrcode_btn.el.hide();\n            \n        _this.qrCodeBox.collapse();\n        \n        if(_this.data.length_oath_key * 1 > 0){\n            _this.delete_qrcode_btn.el.show();\n            _this.show_qrcode_btn.el.show();\n            _this.qrCodeBox.expand();\n        }\n        \n        return;\n    }\n    \n    if (action.type == 'submit') { // only submitted here if we are \n    \n        _this.dialog.hide();\n       \n        if (_this.callback) {\n            _this.callback.call(this, action.result.data);\n        }\n        \n        return;\n        \n    }\n}",
-            "beforeaction" : "function (_self, action)\n{\n\n}",
-            "render" : "function (_self)\n{\n    _this.form = _self;\n    \n    //_this.findField('group_membership').setValue\n    \n    console.log(_this.form.data);\n}"
+            "click" : "function (_self, e)\n{\n    if(!Pman.Login.authUser) {\n        Roo.bootstrap.MessageBox.alert('Error', 'Please login again');\n        return;\n    }\n    \n    e.preventDefault();\n    \n    if(!this.checked) {\n        \n        Pman.Dialog.BAdminStaffTwoFactorQRCode.show({\n            id: _this.data.id,\n            allow_close: false,\n            allow_cancel : true\n        }, function(valid){\n               if(valid) {\n                    _this.dialog.hide({});\n                    return;\n                }\n                \n                _this.form.findField('_enable_oath_key').setChecked(false,false);\n            }\n        );\n        \n        return;\n    }\n    \n    new Pman.Request({\n        url : baseURL + '/Roo/Core_person',\n        method :'GET',\n        params : {\n            oath_key_disable: 1,\n            id: _this.data.id\n        },\n        success : function(res)\n        {\n            switch(res.data) {\n                case 'DONE':\n                    Roo.bootstrap.MessageBox.alert('Success', 'The two factor authentication has been disabled');\n                    break;\n                default:\n                    Roo.log('invalid usage');\n                    break;\n            }\n        },\n        failure : function(res)\n        {\n            Roo.bootstrap.MessageBox.alert('Error', res);\n        }\n    });\n}",
+            "check" : "function (_self, checked)\n{\n    if(checked) {\n        \n        this.setBoxLabel('Untick to disable Two Factor authentication');\n        \n        return;\n    }\n    \n    this.setBoxLabel('Enable Two Factor Authentication');\n}"
            },
-           "$ url" : "baseURL + '/Roo/core_person' ",
-           "xtype" : "Form",
-           "style" : "margin-top: 20px;",
-           "String labelAlign" : "top",
+           "String name" : "_enable_oath_key",
+           "xtype" : "CheckBox",
+           "String boxLabel" : "Enable Two-Factor Authentication",
+           "$ xns" : "Roo.bootstrap"
+          }
+         ]
+        }
+       ]
+      },
+      {
+       "xtype" : "Row",
+       "$ xns" : "Roo.bootstrap",
+       "items" : [
+        {
+         "Number md" : 12,
+         "xtype" : "Column",
+         "$ xns" : "Roo.bootstrap",
+         "items" : [
+          {
+           "listeners" : {
+            "render" : "function (_self)\n{\n    _this.passwordbox = this;\n}"
+           },
+           "String header" : "Set / Change Password",
+           "Boolean expanded" : false,
+           "xtype" : "Container",
+           "String panel" : "primary",
            "$ xns" : "Roo.bootstrap",
-           "string errorMask" : true,
+           "Boolean expandable" : true,
            "items" : [
             {
              "xtype" : "Row",
              "$ xns" : "Roo.bootstrap",
              "items" : [
               {
-               "Number md" : 12,
                "xtype" : "Column",
+               "Number xs" : 8,
                "$ xns" : "Roo.bootstrap",
                "items" : [
                 {
-                 "Boolean allowBlank" : false,
-                 "String name" : "name",
+                 "String name" : "passwd1",
                  "xtype" : "Input",
-                 "string placeholder" : "Name",
-                 "String labelAlign" : "left",
-                 "string fieldLabel" : "Name",
+                 "String inputType" : "password",
                  "$ xns" : "Roo.bootstrap"
                 }
                ]
-              }
-             ]
-            },
-            {
-             "xtype" : "Row",
-             "$ xns" : "Roo.bootstrap",
-             "items" : [
+              },
               {
-               "Number md" : 12,
-               "xtype" : "Column",
-               "$ xns" : "Roo.bootstrap",
-               "items" : [
-                {
-                 "String name" : "role",
-                 "xtype" : "Input",
-                 "string placeholder" : "Role",
-                 "string fieldLabel" : "Role",
-                 "String labelAlign" : "left",
-                 "$ xns" : "Roo.bootstrap"
-                }
-               ]
-              }
-             ]
-            },
-            {
-             "xtype" : "Row",
-             "$ xns" : "Roo.bootstrap",
-             "items" : [
-              {
-               "Number md" : 12,
-               "xtype" : "Column",
-               "$ xns" : "Roo.bootstrap",
-               "items" : [
-                {
-                 "Boolean allowBlank" : false,
-                 "String name" : "email",
-                 "xtype" : "Input",
-                 "vtype" : "email",
-                 "string placeholder" : "Email",
-                 "String labelAlign" : "left",
-                 "string fieldLabel" : "Email",
-                 "$ xns" : "Roo.bootstrap"
-                }
-               ]
-              }
-             ]
-            },
-            {
-             "xtype" : "Row",
-             "$ xns" : "Roo.bootstrap",
-             "items" : [
-              {
-               "Number md" : 12,
-               "xtype" : "Column",
-               "$ xns" : "Roo.bootstrap",
-               "items" : [
-                {
-                 "String name" : "phone",
-                 "xtype" : "Input",
-                 "string fieldLabel" : "Phone",
-                 "String labelAlign" : "left",
-                 "$ xns" : "Roo.bootstrap"
-                }
-               ]
-              }
-             ]
-            },
-            {
-             "xtype" : "Row",
-             "$ xns" : "Roo.bootstrap",
-             "items" : [
-              {
-               "Number md" : 12,
-               "xtype" : "Column",
-               "$ xns" : "Roo.bootstrap",
-               "items" : [
-                {
-                 "listeners" : {
-                  "render" : "function (_self)\n{\n    this.el.setVisibilityMode(Roo.Element.DISPLAY);\n    \n    this.el.hide();\n}"
-                 },
-                 "String name" : "_enable_oath_key",
-                 "Boolean checked" : true,
-                 "xtype" : "CheckBox",
-                 "String boxLabel" : "Enable Two-Factor Authentication",
-                 "$ xns" : "Roo.bootstrap"
-                }
-               ]
-              }
-             ]
-            },
-            {
-             "xtype" : "Row",
-             "$ xns" : "Roo.bootstrap",
-             "items" : [
-              {
-               "Number md" : 12,
                "xtype" : "Column",
+               "Number xs" : 4,
                "$ xns" : "Roo.bootstrap",
                "items" : [
                 {
                  "listeners" : {
-                  "render" : "function (_self)\n{\n    _this.passwordbox = this;\n}"
+                  "click" : "function (_self, e)\n{\n    var pw = Math.random().toString(36).replace('0.', '');\n    _this.form.findField('passwd1').el.select('input',true).first().dom.type=\"input\";\n    _this.form.findField('passwd1').setValue(pw);\n    _this.form.findField('passwd2').hide();\n}"
                  },
-                 "String header" : "Set / Change Password",
-                 "Boolean expanded" : false,
-                 "xtype" : "Container",
-                 "String panel" : "primary",
+                 "xtype" : "Button",
                  "$ xns" : "Roo.bootstrap",
-                 "Boolean expandable" : true,
-                 "items" : [
-                  {
-                   "xtype" : "Row",
-                   "$ xns" : "Roo.bootstrap",
-                   "items" : [
-                    {
-                     "xtype" : "Column",
-                     "Number xs" : 8,
-                     "$ xns" : "Roo.bootstrap",
-                     "items" : [
-                      {
-                       "String name" : "passwd1",
-                       "xtype" : "Input",
-                       "String inputType" : "password",
-                       "$ xns" : "Roo.bootstrap"
-                      }
-                     ]
-                    },
-                    {
-                     "xtype" : "Column",
-                     "Number xs" : 4,
-                     "$ xns" : "Roo.bootstrap",
-                     "items" : [
-                      {
-                       "listeners" : {
-                        "click" : "function (_self, e)\n{\n    var pw = Math.random().toString(36).slice(-12);\n    _this.form.findField('passwd1').el.select('input',true).first().dom.type=\"input\";\n    _this.form.findField('passwd1').setValue(pw);\n    _this.form.findField('passwd2').hide();\n    \n    \n}"
-                       },
-                       "xtype" : "Button",
-                       "$ xns" : "Roo.bootstrap",
-                       "String html" : "Generate One",
-                       "String style" : "width:100%"
-                      }
-                     ]
-                    }
-                   ]
-                  },
-                  {
-                   "String name" : "passwd2",
-                   "xtype" : "Input",
-                   "string placeholder" : "Type again to confirm",
-                   "String inputType" : "password",
-                   "$ xns" : "Roo.bootstrap"
-                  },
-                  {
-                   "String name" : "secure_passwords",
-                   "xtype" : "CheckBox",
-                   "String boxLabel" : "Use Secure Passwords",
-                   "$ xns" : "Roo.bootstrap"
-                  }
-                 ]
+                 "String html" : "Generate One",
+                 "String style" : "width:100%"
                 }
                ]
               }
              ]
             },
             {
-             "xtype" : "Row",
-             "$ xns" : "Roo.bootstrap",
-             "items" : [
-              {
-               "Number md" : 12,
-               "xtype" : "Column",
-               "$ xns" : "Roo.bootstrap",
-               "items" : [
-                {
-                 "listeners" : {
-                  "render" : "function (_self)\n{\n    _this.qrCodeBox = this;\n    \n    this.el.setVisibilityMode(Roo.Element.DISPLAY);\n    \n    this.el.hide();\n}"
-                 },
-                 "String header" : "Two-Factor Authentication",
-                 "Boolean expanded" : false,
-                 "xtype" : "Container",
-                 "String panel" : "primary",
-                 "$ xns" : "Roo.bootstrap",
-                 "Boolean expandable" : true,
-                 "items" : [
-                  {
-                   "xtype" : "Row",
-                   "$ xns" : "Roo.bootstrap",
-                   "items" : [
-                    {
-                     "xtype" : "Column",
-                     "Number xs" : 4,
-                     "$ xns" : "Roo.bootstrap",
-                     "items" : [
-                      {
-                       "listeners" : {
-                        "render" : "function (_self)\n{\n    _this.generate_qrcode_btn = this;\n\n    this.el.setVisibilityMode(Roo.Element.DISPLAY);\n    \n    this.el.hide();\n}",
-                        "click" : "function (_self, e)\n{\n    if(_this.data.id * 1 < 1){\n        Roo.bootstrap.MessageBox.alert('Error', 'Please save the user first');\n        return;\n    }\n    \n    new Pman.Request({\n        url: baseURL + '/Roo/Core_person.php',\n        method : 'POST',\n        mask : 'Loading...',\n        params : {\n            id : _this.data.id,\n            _generate_oath_key : 1\n        }, \n        success : function(res) {\n            _this.delete_qrcode_btn.el.show();\n            _this.show_qrcode_btn.el.show();\n            \n            Pman.Dialog.BAdminStaffTwoFactorQRCode.show({\n                id : _this.data.id\n            });\n            \n            return;\n        }\n    });\n}"
-                       },
-                       "xtype" : "Button",
-                       "$ xns" : "Roo.bootstrap",
-                       "String html" : "Generate QR Code",
-                       "String style" : "width:100%"
-                      }
-                     ]
-                    },
-                    {
-                     "xtype" : "Column",
-                     "Number xs" : 4,
-                     "$ xns" : "Roo.bootstrap",
-                     "items" : [
-                      {
-                       "listeners" : {
-                        "render" : "function (_self)\n{\n    _this.delete_qrcode_btn = this;\n\n    this.el.setVisibilityMode(Roo.Element.DISPLAY);\n    \n    this.el.hide();\n}",
-                        "click" : "function (_self, e)\n{\n    if(_this.data.id * 1 < 1){\n        Roo.bootstrap.MessageBox.alert('Error', 'Please save the user first');\n        return;\n    }\n    \n    new Pman.Request({\n        url: baseURL + '/Roo/Core_person.php',\n        method : 'POST',\n        mask : 'Loading...',\n        params : {\n            id : _this.data.id,\n            oath_key : ''\n        }, \n        success : function(res) {\n            _this.delete_qrcode_btn.el.hide();\n            _this.show_qrcode_btn.el.hide();\n            \n            return;\n        }\n    });\n}"
-                       },
-                       "xtype" : "Button",
-                       "$ xns" : "Roo.bootstrap",
-                       "String html" : "Delete QR Code",
-                       "String style" : "width:100%"
-                      }
-                     ]
-                    },
-                    {
-                     "xtype" : "Column",
-                     "Number xs" : 4,
-                     "$ xns" : "Roo.bootstrap",
-                     "items" : [
-                      {
-                       "listeners" : {
-                        "render" : "function (_self)\n{\n    _this.show_qrcode_btn = this;\n\n    this.el.setVisibilityMode(Roo.Element.DISPLAY);\n    \n    this.el.hide();\n}",
-                        "click" : "function (_self, e)\n{\n    if(_this.data.id * 1 < 1){\n        Roo.bootstrap.MessageBox.alert('Error', 'Please save the user first');\n        return;\n    }\n    \n    Pman.Dialog.BAdminStaffTwoFactorQRCode.show({\n        id : _this.data.id\n    });\n}"
-                       },
-                       "xtype" : "Button",
-                       "$ xns" : "Roo.bootstrap",
-                       "String html" : "Show QR Code",
-                       "String style" : "width:100%"
-                      }
-                     ]
-                    }
-                   ]
-                  }
-                 ]
-                }
-               ]
-              }
-             ]
-            },
-            {
-             "listeners" : {
-              "render" : "function (_self)\n{\n    _this.userID = _self;\n}"
-             },
-             "String name" : "id",
+             "String name" : "passwd2",
              "xtype" : "Input",
-             "String labelAlign" : "left",
-             "String inputType" : "hidden",
+             "string placeholder" : "Type again to confirm",
+             "String inputType" : "password",
              "$ xns" : "Roo.bootstrap"
             },
             {
-             "String name" : "company_id",
-             "xtype" : "Input",
-             "String inputType" : "hidden",
-             "$ xns" : "Roo.bootstrap"
-            },
-            {
-             "String name" : "membership_list",
-             "xtype" : "Input",
-             "String labelAlign" : "left",
-             "String inputType" : "hidden",
+             "String name" : "secure_passwords",
+             "xtype" : "CheckBox",
+             "String boxLabel" : "Use Secure Passwords",
              "$ xns" : "Roo.bootstrap"
             }
            ]
       },
       {
        "listeners" : {
-        "activate" : "function (_self)\n{\n    if(_this.option_grid){\n        _this.option_grid.store.load({});\n    }\n    \n}",
-        "render" : "function (_self)\n{\n    _this.option_panel = this;\n    \n    \n}"
+        "render" : "function (_self)\n{\n    _this.userID = _self;\n}"
        },
-       "fitToFrame" : true,
-       "xtype" : "Grid",
-       "String region" : "center",
-       "$ xns" : "Roo.bootstrap.panel",
-       "fitContainer" : true,
-       "String title" : "Group Membership",
-       "Boolean background" : true,
-       "items" : [
-        {
-         "listeners" : {
-          "render" : "function (_self)\n{\n    _this.option_grid = this;\n    \n    this.store.load({})\n}",
-          "rowclick" : "function (_self, el, rowIndex, e)\n{\n    //var di = this.colModel.getDataIndex(columnIndex);\n    \n    // check if the name is the result name from dataobject core_group_member\n    /*if (di != 'group_membership_user_id') {\n        return;\n    }*/\n    \n    \n    \n    var rec = this.store.getAt(rowIndex);\n\n    rec.set('group_membership_user_id', rec.data.group_membership_user_id * 1 == 0 ? -1 : 0);\n\n    rec.commit();\n    \n    var membership_active_arr = [];\n    // loop throught the new list , rebuild the list of current options\n    \n    // record is the first parameter\n    \n    _this.option_grid.store.each(function(record){\n        var gmuid = record.data.group_membership_user_id;\n        var gid = record.data.id;\n        if(gmuid * 1 != 0){\n            membership_active_arr.push(gid);\n        }\n    });\n    \n    var membership_active_list = \"\";\n    membership_active_list = membership_active_arr.join();\n    \n    _this.form.findField(\"membership_list\").setValue(membership_active_list);\n}"
-         },
-         "Boolean footerShow" : false,
-         "String cls" : "table-fixed",
-         "xtype" : "Table",
-         "$ xns" : "Roo.bootstrap",
-         "cellSelection" : false,
-         "Boolean loadMask" : true,
-         "* prop" : "grid",
-         "boolean condensed" : true,
-         "rowSelection" : true,
-         "items" : [
-          {
-           "listeners" : {
-            "selectionchange" : "function (_self)\n{\n    /*_this.type_edit_btn.hide();\n    \n    if(this.getSelected()){\n        _this.type_edit_btn.show();\n    }*/\n    \n    _this.option_grid.store.load({});\n    \n    \n}"
-           },
-           "Boolean singleSelect" : true,
-           "xtype" : "RowSelectionModel",
-           "$ xns" : "Roo.bootstrap.Table",
-           "* prop" : "sm"
-          },
-          {
-           "listeners" : {
-            "beforeload" : "function (_self, options)\n{ \n    options.params = options.params || {};\n    \n    options.params._with_membership_user = _this.data.id;\n\n    /*if(typeof(_this.data.id) == 'undefined' || _this.data.id * 1 < 1){\n        this.removeAll();\n        return false;\n    }\n    \n    options.params.is_active = 1;\n    options.params.dec_type = 'checklist';\n    \n    options.params._ext_data_id = _this.data.id;\n    \n    options.params._with_others = 1;\n    \n    options.params._show_deleted = _this.documentStatusBtn.pressed ? 1 : 0;*/\n    \n}"
-           },
-           "$ Object sortInfo" : "{ direction : 'ASC', field: 'id' }",
-           "xtype" : "Store",
-           "boolean remoteSort" : true,
-           "$ xns" : "Roo.data",
-           "* prop" : "store",
-           "items" : [
-            {
-             "$ url" : "baseURL + '/Roo/core_group'",
-             "xtype" : "HttpProxy",
-             "$ xns" : "Roo.data",
-             "String method" : "GET",
-             "* prop" : "proxy"
-            },
-            {
-             "xtype" : "JsonReader",
-             "String root" : "data",
-             "$ xns" : "Roo.data",
-             "String id" : "id",
-             "* prop" : "reader"
-            }
-           ]
-          },
-          {
-           "String header" : "Is a Member",
-           "String cursor" : "pointer",
-           "String dataIndex" : "group_membership_user_id",
-           "xtype" : "ColumnModel",
-           "Number xs" : 3,
-           "String align" : "center",
-           "$ xns" : "Roo.grid",
-           "$ renderer" : "function(v) {  \n\n    var state = v > 0 ?  'check-' : '';\n    var cls = v > 0 ? 'text-primary' : '';\n    \n    return '<i class=\\\"far fa-'+ state + 'square-o ' + cls + '\\\" aria-hidden=\\\"true\\\"></i>';\n         \n }",
-           "Boolean sortable" : false,
-           "* prop" : "cm[]"
-          },
-          {
-           "String header" : "Group Name",
-           "cursor" : "pointer",
-           "String dataIndex" : "name",
-           "xtype" : "ColumnModel",
-           "Number xs" : 9,
-           "$ xns" : "Roo.grid",
-           "Boolean sortable" : true,
-           "* prop" : "cm[]"
-          }
-         ]
-        }
-       ]
+       "String name" : "id",
+       "xtype" : "Input",
+       "String labelAlign" : "left",
+       "String inputType" : "hidden",
+       "$ xns" : "Roo.bootstrap"
+      },
+      {
+       "String name" : "company_id",
+       "xtype" : "Input",
+       "String inputType" : "hidden",
+       "$ xns" : "Roo.bootstrap"
       }
      ]
     },