commit
641b747ad4
2 changed files with 39 additions and 910 deletions
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue