Newer
Older

Bastien DUMONT
committed
// @ts-check
const { log, errors } = require('cozy-konnector-libs')
const { getAccountRev, getAccountSecret } = require('./helpers/account')
const { getBoConsent, deleteBoConsent } = require('./requests/bo')
const { terminateContract } = require('./core/contractTermination')
const { getAccount } = require('./requests/cozy')
const moment = require('moment')
require('moment-timezone')
moment.locale('fr') // set the language
moment.tz.setDefault('Europe/Paris') // set the timezone
const { isLocal } = require('./helpers/env')
const ACCOUNT_ID = isLocal() ? 'default_account_id' : 'enedis-sge-grandlyon'
async function onDeleteAccount() {
log('info', 'Deleting account ...')
log('info', 'Getting secrets ...')

Bastien DUMONT
committed
const accountRev = getAccountRev()
if (accountRev) {
log('info', 'Account rev exist')
const accountData = await getAccount(ACCOUNT_ID)
// Parse local info for deletion test
if (isLocal()) {
const fields = JSON.parse(
process.env.COZY_FIELDS ? process.env.COZY_FIELDS : '{}'
)
process.env.COZY_FIELDS = JSON.stringify({
...fields,
...accountData.auth,
})
}
const secrets = getAccountSecret()

Bastien DUMONT
committed
const userConsent = await getBoConsent(
secrets.boBaseUrl,
secrets.boToken,
accountData.data.consentId
)
if (userConsent.ID && userConsent.pointID) {
log('log', `Consent ${userConsent.ID} found for user`)
if (userConsent.serviceID) {
await deleteBoConsent(
secrets.boBaseUrl,
secrets.boToken,
userConsent.ID
)
await terminateContract(
secrets.wso2BaseUrl,
secrets.apiToken,

Bastien DUMONT
committed
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
secrets.sgeLogin,
secrets.contractId,
userConsent.pointID,
userConsent.serviceID
)
} else {
log('error', `No service id retrieved from BO`)
throw errors.VENDOR_DOWN
}
}
log('info', 'Deleting account succeed')
} else {
log(
'error',
'No account revision was found, something went wrong during the deletion of said account'
)
throw errors.VENDOR_DOWN
}
}
onDeleteAccount().then(
() => {
log('info', `onDeleteAccount: Successfully delete consent and account.`)
},
err => {
log(
'error',
`onDeleteAccount: An error occured during script: ${err.message}`
)
throw errors.VENDOR_DOWN
}
)
module.exports = { onDeleteAccount }