[{"data":1,"prerenderedAt":40},["ShallowReactive",2],{"integration-node-red-contrib-credentials\u002F":3},{"_id":4,"categories":5,"author":9,"description":12,"npmOwners":13,"npmScope":15,"name":4,"ffCertified":16,"downloads":17,"version":19,"updatedAt":20,"maintainers":21,"homepage":24,"bugs":25,"repository":27,"time":30,"lastUpdated":20,"created":31,"license":36,"githubOwner":37,"githubRepo":4,"examples":38,"readme":39},"node-red-contrib-credentials",[6,7,8],"catalogue_utility","catalogue_security","catalogue",{"name":10,"email":11},"Stephen J. Carnam","steveorevo@gmail.com","Provides a credentials node to store one or more private values; preventing export to flows or version control.",[14],"steveorevo",null,false,{"week":18},8506,"0.2.3","2023-12-14T21:42:09.464Z",[22],{"name":14,"email":23},"steve@steveorevo.com","https:\u002F\u002Fgithub.com\u002FSteveorevo\u002Fnode-red-contrib-credentials#readme",{"url":26},"https:\u002F\u002Fgithub.com\u002FSteveorevo\u002Fnode-red-contrib-credentials\u002Fissues",{"type":28,"url":29},"git","git+https:\u002F\u002Fgithub.com\u002FSteveorevo\u002Fnode-red-contrib-credentials.git",{"modified":20,"created":31,"0.1.0":31,"0.2.0":32,"0.2.1":33,"0.2.2":34,"0.2.3":35},"2017-10-30T05:41:02.206Z","2018-02-05T06:31:19.123Z","2018-09-28T05:15:50.074Z","2022-02-07T07:33:48.060Z","2023-12-14T21:42:09.285Z","MIT","Steveorevo",[],"\u003Ch1 id=\"node-red-contrib-credentials\">\u003Ca class=\"header-anchor\" href=\"#node-red-contrib-credentials\">node-red-contrib-credentials\u003C\u002Fa>\u003C\u002Fh1>\n\u003Cp>Provides a credentials node to store one or more values privately; preventing\ninadvertent export to flows or to version control commits. Node-RED stores\nyour node information in flows.json and any values setup as credentials into\nan encrypted separate flows_cred.json file. Values designated as credentials are\nalso omitted when using the clipboard to keep your information private. Use\nthis node to configure any property values you wish to keep private.\u003C\u002Fp>\n\u003Cp>When sharing your flows, the values are omitted but property definitions are\nretained to help users understand what values need to be filled out. A runtime\nwarning is issued for any un-configured values.\u003C\u002Fp>\n\u003Ch2 id=\"examples\">\u003Ca class=\"header-anchor\" href=\"#examples\">Examples\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch4 id=\"basic-example\">\u003Ca class=\"header-anchor\" href=\"#basic-example\">Basic Example\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cp>Here we will supply the msg object with two properties; username and password.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FSteveorevo\u002Fnode-red-contrib-credentials\u002Fmaster\u002F\u002Fcredentials\u002Fdemo\u002Fbasic.jpg?raw=true\" alt=\"Node-RED Basic Example\" title=\"Basic use\" \u002F>\u003C\u002Fp>\n\u003Cp>The settings panel for the credentials node enables storing one or more values.\nThe private field has two modes \"string\" and \"hidden\". Both store information\nthe same but \"hidden\" has the added benefit of hiding any observer's view of the\nvalue. After storage, changing the field from \"hidden\" to \"string\" prevents the\nuser interface from revealing the contents. \u003Cem>Note: the value is stored using\nNode-RED's credentials API using the 'text' option; it is decoded in both\nruntime and editor mode. The value can be viewed using the debugger or when\ndoing editor side DOM inspection. The \"hidden\" mode is only used to protect\nvalues from plain view.\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp>Regardless of hidden\u002Fstring mode, the values are stored encrypted outside of\nthe flows.json file.\u003C\u002Fp>\n\u003Ch4 id=\"wordpress-login-example\">\u003Ca class=\"header-anchor\" href=\"#wordpress-login-example\">WordPress Login Example\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cp>The following example shows how we can use the credentials node to supply login\ninformation into a WordPress powered website to check for updates. This flow has\nthe \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsteveorevo\u002Fnode-red-contrib-credentials\">credentials\u003C\u002Fa> node and the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsteveorevo\u002Fnode-red-contrib-nbrowser\">nbrowser\u003C\u002Fa> node installed. Here we see the\ncredentials node configured to store the login information in the msg.username\nand msg.password properties. The nbrowser node then uses the properties to type\nlogin credentials into WordPress' admin web page to access the dashboard.\nLastly, the html node is used to parse out the .update-count span element from\nthe web page before sending it to the debug window.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FSteveorevo\u002Fnode-red-contrib-credentials\u002Fmaster\u002F\u002Fcredentials\u002Fdemo\u002Fwp.jpg?raw=true\" alt=\"Node-RED WordPress Login\" title=\"Check for WordPress updates\" \u002F>\u003C\u002Fp>\n\u003Cp>The exported flow appears below. Opening the credentials node will show the\nusername and password fields with blank (omitted) values that need to be supplied\nby the user. Simply change the URL in the injector and supply your credentials\nto your own WordPress site to run the flow.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[\n    {\n        \"id\": \"cf934781.dbe858\",\n        \"type\": \"inject\",\n        \"z\": \"bd6efcab.b2b6b\",\n        \"name\": \"http:\u002F\u002Fdomain.tld\u002Fwp-admin\u002F\",\n        \"topic\": \"\",\n        \"payload\": \"http:\u002F\u002Fdomain.tld\u002Fwp-admin\u002F\",\n        \"payloadType\": \"str\",\n        \"repeat\": \"\",\n        \"crontab\": \"\",\n        \"once\": false,\n        \"x\": 160,\n        \"y\": 40,\n        \"wires\": [\n            [\n                \"73df4bbf.8e1da4\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"73df4bbf.8e1da4\",\n        \"type\": \"credentials\",\n        \"z\": \"bd6efcab.b2b6b\",\n        \"name\": \"\",\n        \"props\": [\n            {\n                \"value\": \"username\",\n                \"type\": \"msg\"\n            },\n            {\n                \"value\": \"password\",\n                \"type\": \"msg\"\n            }\n        ],\n        \"x\": 150,\n        \"y\": 140,\n        \"wires\": [\n            [\n                \"77b7ae1a.0469c\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"77b7ae1a.0469c\",\n        \"type\": \"nbrowser\",\n        \"z\": \"bd6efcab.b2b6b\",\n        \"name\": \"\",\n        \"methods\": [\n            {\n                \"name\": \"gotoURL\",\n                \"func\": \"goto\",\n                \"params\": [\n                    {\n                        \"type\": \"msg\",\n                        \"value\": \"payload\",\n                        \"typeDefault\": \"str\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"type\",\n                \"func\": \"type\",\n                \"params\": [\n                    {\n                        \"type\": \"str\",\n                        \"value\": \"#user_login\",\n                        \"typeDefault\": \"str\"\n                    },\n                    {\n                        \"type\": \"msg\",\n                        \"value\": \"username\",\n                        \"typeDefault\": \"str\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"type\",\n                \"func\": \"type\",\n                \"params\": [\n                    {\n                        \"type\": \"str\",\n                        \"value\": \"#user_pass\",\n                        \"typeDefault\": \"str\"\n                    },\n                    {\n                        \"type\": \"msg\",\n                        \"value\": \"password\",\n                        \"typeDefault\": \"str\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"click\",\n                \"func\": \"click\",\n                \"params\": [\n                    {\n                        \"type\": \"str\",\n                        \"value\": \"#wp-submit\",\n                        \"typeDefault\": \"str\"\n                    }\n                ]\n            },\n            {\n                \"name\": \"wait\",\n                \"func\": \"wait\",\n                \"params\": [\n                    {\n                        \"type\": \"str\",\n                        \"value\": \"#welcome-panel\",\n                        \"typeDefault\": \"str\"\n                    }\n                ]\n            }\n        ],\n        \"prop\": \"nbrowser\",\n        \"propout\": \"payload\",\n        \"object\": \"msg\",\n        \"objectout\": \"msg\",\n        \"close\": false,\n        \"show\": true,\n        \"outputs\": 1,\n        \"x\": 240,\n        \"y\": 200,\n        \"wires\": [\n            [\n                \"933a7cc7.46675\"\n            ]\n        ]\n    },\n    {\n        \"id\": \"2aa478c9.2dbe98\",\n        \"type\": \"debug\",\n        \"z\": \"bd6efcab.b2b6b\",\n        \"name\": \"\",\n        \"active\": true,\n        \"console\": \"false\",\n        \"complete\": \"false\",\n        \"x\": 410,\n        \"y\": 100,\n        \"wires\": []\n    },\n    {\n        \"id\": \"933a7cc7.46675\",\n        \"type\": \"html\",\n        \"z\": \"bd6efcab.b2b6b\",\n        \"name\": \"\",\n        \"tag\": \".update-count\",\n        \"ret\": \"html\",\n        \"as\": \"single\",\n        \"x\": 340,\n        \"y\": 260,\n        \"wires\": [\n            [\n                \"2aa478c9.2dbe98\"\n            ]\n        ]\n    }\n]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"installation\">\u003Ca class=\"header-anchor\" href=\"#installation\">Installation\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Run the following command in your Node-RED user directory (typically ~\u002F.node-red):\u003C\u002Fp>\n\u003Cpre>\u003Ccode>npm install node-red-contrib-credentials\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The credentials node will appear in the palette under the storage group.\u003C\u002Fp>\n",1784738654152]