Merge pull request #27 from shocknet/bug/wizard-token

Bug/wizard token
This commit is contained in:
CapDog 2020-02-16 11:24:09 -05:00 committed by GitHub
commit 641b747ad4
2 changed files with 39 additions and 910 deletions

View file

@ -8,7 +8,9 @@ const jsonfile = require('jsonfile')
const path = require('path')
const logger = require('winston')
const FS = require('../../utils/fs')
const secretsFilePath = path.resolve(__dirname, 'secrets.json')
const rootFolder = process.resourcesPath || __dirname
const secretsFilePath = path.resolve(rootFolder, 'secrets.json')
class Auth {
verifySecretsFile = async () => {
@ -37,6 +39,7 @@ class Auth {
const { exists, parsable } = await this.verifySecretsFile()
if (exists && parsable) {
logger.info('Secrets file exists!')
return true
}
@ -53,44 +56,47 @@ class Auth {
readSecrets = () =>
new Promise((resolve, reject) => {
this.initSecretsFile().then(() => {
jsonfile.readFile(secretsFilePath, (err, allSecrets) => {
if (err) {
logger.info('readSecrets err', err)
reject('Problem reading secrets file')
} else {
resolve(allSecrets)
}
this.initSecretsFile()
.then(() => {
jsonfile.readFile(secretsFilePath, (err, allSecrets) => {
if (err) {
logger.error('readSecrets err', err)
reject('Problem reading secrets file')
} else {
resolve(allSecrets)
}
})
})
})
.catch(reject)
})
writeSecrets(key, value) {
return this.initSecretsFile()
.then(() => this.readSecrets())
.then(allSecrets => {
return new Promise((resolve, reject) => {
allSecrets[key] = value
jsonfile.writeFile(
secretsFilePath,
allSecrets,
{ spaces: 2, EOL: '\r\n' },
err => {
if (err) {
logger.info('writeSecrets err', err)
reject(err)
} else {
resolve(true)
}
}
)
})
})
async writeSecrets(key, value) {
await this.initSecretsFile()
const allSecrets = await this.readSecrets()
return new Promise((resolve, reject) => {
allSecrets[key] = value
logger.info('Writing new secret:', secretsFilePath)
jsonfile.writeFile(
secretsFilePath,
allSecrets,
{ spaces: 2, EOL: '\r\n' },
err => {
if (err) {
logger.error('writeSecrets err', err)
reject(err)
} else {
logger.info('New secret saved!')
resolve(true)
}
}
)
})
}
async generateToken() {
const timestamp = Date.now()
const secret = uuidv1()
logger.info('Generating new secret...')
const token = jwt.sign(
{
data: { timestamp }
@ -98,6 +104,7 @@ class Auth {
secret,
{ expiresIn: '500h' }
)
logger.info('Saving secret...')
await this.writeSecrets(timestamp, secret)
return token
}

880
yarn.lock

File diff suppressed because it is too large Load diff