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

48 lines
1.8 KiB
JavaScript
Raw Normal View History

const angApp = (await import('../init.js')).default;
2020-05-09 15:07:42 +00:00
2021-02-13 02:52:49 +00:00
angApp.factory('CredentialsService', () => {
2020-05-12 15:06:16 +00:00
let credentialsService = {}
credentialsService.getCredentials = () => {
2020-05-09 15:07:42 +00:00
let credentials = {}
credentials.login = api.electronSettings.getSync('login')
2020-05-09 15:07:42 +00:00
let promise = new Promise((resolve, reject) => {
if (credentials.login) {
credentials.connectionManager = api.electronSettings.getSync('connectionManager')
2020-05-09 15:07:42 +00:00
credentials.xmppService = credentials.login.split('@').pop()
2022-01-05 19:44:36 +00:00
let password = api.keytar.getPassword(credentials.xmppService, credentials.login)
2020-05-09 15:07:42 +00:00
password.then((result) => {
credentials.password = result
resolve(credentials)
})
} else {
2020-05-09 15:07:42 +00:00
reject(Error('No login stored'))
}
})
return promise
}
credentialsService.addCredentials = (connectionManager, login, password) => {
2020-05-09 15:07:42 +00:00
let xmppService = login.split('@').pop()
api.electronSettings.setSync('connectionManager', connectionManager)
api.electronSettings.setSync('login', login)
2022-01-05 19:44:36 +00:00
return api.keytar.setPassword(xmppService, login, password)
2020-05-09 15:07:42 +00:00
}
2020-05-12 15:06:16 +00:00
credentialsService.removeCredentials = (login) => {
2020-05-09 15:07:42 +00:00
let xmppService = login.split('@').pop()
2022-01-05 19:44:36 +00:00
let passwordDelete = api.keytar.deletePassword(xmppService, login)
2020-05-09 15:07:42 +00:00
let promise = new Promise((resolve, reject) => {
passwordDelete.then((result) => {
api.electronSettings.unsetSync('login')
api.electronSettings.unsetSync('connectionManager')
2020-05-09 15:07:42 +00:00
resolve()
}, (error) => {
reject(error)
})
})
return promise
}
2020-05-12 15:06:16 +00:00
return credentialsService
2020-05-09 15:07:42 +00:00
})