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

880
yarn.lock

File diff suppressed because it is too large Load diff