converse-desktop/app/services/credentials-service.js

55 lines
1.7 KiB
JavaScript
Raw Normal View History

2020-05-09 15:07:42 +00:00
let angApp = require(__dirname+'/../init')
2020-05-11 18:26:51 +00:00
angApp.factory('CredentialsServise', () => {
2020-05-09 15:07:42 +00:00
const keytar = require('keytar')
const settings = require('electron-settings')
2020-05-12 15:06:16 +00:00
let credentialsService = {}
2020-05-09 15:07:42 +00:00
2020-05-12 15:06:16 +00:00
credentialsService.getCredentials = () => {
2020-05-09 15:07:42 +00:00
let credentials = {}
credentials.login = settings.get('login')
let promise = new Promise((resolve, reject) => {
if (credentials.login) {
credentials.bosh = settings.get('bosh')
credentials.xmppService = credentials.login.split('@').pop()
let password = keytar.getPassword(credentials.xmppService, credentials.login)
password.then((result) => {
credentials.password = result
resolve(credentials)
})
}
else {
reject(Error('No login stored'))
}
})
return promise
}
2020-05-12 15:06:16 +00:00
credentialsService.addCredentials = (bosh, login, password) => {
2020-05-09 15:07:42 +00:00
let xmppService = login.split('@').pop()
settings.set('bosh', bosh)
settings.set('login', login)
keytar.setPassword(xmppService, login, password)
}
2020-05-12 15:06:16 +00:00
credentialsService.removeCredentials = (login) => {
2020-05-09 15:07:42 +00:00
let xmppService = login.split('@').pop()
passwordDelete = keytar.deletePassword(xmppService, login)
let promise = new Promise((resolve, reject) => {
passwordDelete.then((result) => {
settings.delete('login')
settings.delete('bosh')
resolve()
}, (error) => {
reject(error)
})
})
return promise
}
2020-05-12 15:06:16 +00:00
return credentialsService
2020-05-09 15:07:42 +00:00
})