forked from Qortal/qortal-ui
AlphaX-Projects
3 years ago
committed by
GitHub
5 changed files with 106 additions and 5 deletions
@ -0,0 +1,76 @@
|
||||
import * as api from 'qortal-ui-crypto' |
||||
|
||||
'use strict' |
||||
|
||||
export const checkApiKey = async (nodeConfig) => { |
||||
|
||||
let selectedNode = nodeConfig.knownNodes[nodeConfig.node]; |
||||
if (selectedNode.enableManagement === false) { |
||||
console.log("Skipping API key check because enableManagement is false"); |
||||
return; |
||||
} |
||||
|
||||
let apiKey = selectedNode.apiKey; |
||||
|
||||
// Attempt to generate an API key
|
||||
const generateUrl = "/admin/apikey/generate"; |
||||
let generateRes = await api.request(generateUrl, { |
||||
method: "POST" |
||||
}); |
||||
|
||||
if (generateRes != null && generateRes.error == null && generateRes.length >= 8) { |
||||
console.log("Generated API key"); |
||||
apiKey = generateRes; |
||||
} |
||||
else { |
||||
console.log("Unable to generate API key"); |
||||
} |
||||
|
||||
// Now test the API key
|
||||
let testResult = await testApiKey(apiKey); |
||||
if (testResult === true) { |
||||
console.log("API key test passed"); |
||||
} |
||||
else { |
||||
console.log("API key test failed"); |
||||
|
||||
let apiKeyValid = false; |
||||
|
||||
while (apiKeyValid === false) { |
||||
|
||||
let apiKeyPrompt = prompt("Please enter the API key for this node.\n\nIt can be found in a file called 'apikey.txt' in the directory where the core is installed.\n\nAlternatively, click Cancel to use the core with reduced functionality.", ""); |
||||
if (apiKeyPrompt === null) { |
||||
// Cancel was pushed - so give up
|
||||
return; |
||||
} |
||||
|
||||
let testResult = await testApiKey(apiKeyPrompt); |
||||
if (testResult === true) { |
||||
console.log("API key prompt test passed"); |
||||
apiKeyValid = true; |
||||
apiKey = apiKeyPrompt; |
||||
break; |
||||
} |
||||
else { |
||||
console.log("API key prompt test failed. Re-prompting..."); |
||||
} |
||||
|
||||
} |
||||
} |
||||
|
||||
// Store API key
|
||||
selectedNode.apiKey = apiKey; |
||||
nodeConfig.knownNodes[nodeConfig.node] = selectedNode; |
||||
localStorage.setItem('myQortalNodes', JSON.stringify(nodeConfig.knownNodes)); |
||||
} |
||||
|
||||
export const testApiKey = async (apiKey) => { |
||||
const testUrl = "/admin/apikey/test?apiKey=" + apiKey; |
||||
let testRes = await api.request(testUrl, { |
||||
method: "GET" |
||||
}); |
||||
if (testRes === true) { |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
Loading…
Reference in new issue