@iexec/dataprotector
Version:
This product enables users to confidentially store data–such as mail address, documents, personal information ...
73 lines • 2.49 kB
JavaScript
import { WorkflowError } from '../../utils/errors.js';
import { addressOrEnsSchema, throwIfMissing, validateOnStatusUpdateCallback, } from '../../utils/validators.js';
import { getGrantedAccess } from './getGrantedAccess.js';
import { revokeOneAccess } from './revokeOneAccess.js';
export const revokeAllAccess = async ({ iexec = throwIfMissing(), protectedData, authorizedApp, authorizedUser, onStatusUpdate = () => { }, }) => {
const vProtectedData = addressOrEnsSchema()
.required()
.label('protectedData')
.validateSync(protectedData);
const vAuthorizedApp = addressOrEnsSchema()
.label('authorizedApp')
.validateSync(authorizedApp);
const vAuthorizedUser = addressOrEnsSchema()
.label('authorizedUser')
.validateSync(authorizedUser);
const vOnStatusUpdate = validateOnStatusUpdateCallback(onStatusUpdate);
const allAccessRevoked = [];
vOnStatusUpdate({
title: 'RETRIEVE_ALL_GRANTED_ACCESS',
isDone: false,
});
const { grantedAccess } = await getGrantedAccess({
iexec,
protectedData: vProtectedData,
authorizedApp: vAuthorizedApp,
authorizedUser: vAuthorizedUser,
pageSize: 1000,
}).catch((e) => {
throw new WorkflowError({
message: 'Failed to retrieve granted access',
errorCause: e,
});
});
vOnStatusUpdate({
title: 'RETRIEVE_ALL_GRANTED_ACCESS',
isDone: true,
payload: {
grantedAccessCount: String(grantedAccess.length),
},
});
for (const access of grantedAccess) {
try {
vOnStatusUpdate({
title: 'REVOKE_ONE_ACCESS',
isDone: false,
payload: {
access,
},
});
const { txHash } = await revokeOneAccess({
iexec,
...access,
});
allAccessRevoked.push({ access, txHash });
vOnStatusUpdate({
title: 'REVOKE_ONE_ACCESS',
isDone: true,
payload: {
access,
txHash,
},
});
}
catch (e) {
throw new WorkflowError({
message: 'Failed to revoke an access',
errorCause: e,
});
}
}
return allAccessRevoked;
};
//# sourceMappingURL=revokeAllAccess.js.map