All files / lib/Service ShareService.js

25.92% Statements 7/27
60% Branches 6/10
14.28% Functions 1/7
25.92% Lines 7/27

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55  3x 3x   3x 3x 3x 3x                                                                                           3x  
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ShareService = void 0;
const Credential_1 = __importDefault(require("../Model/Credential"));
const SharingACL_1 = require("../Model/SharingACL");
class ShareService {
    static async getCredentialsSharedWithUs(vault, server, getCachedIfPossible = false) {
        let sharedItemsResponse = await server.getJson('/sharing/vault/' + vault.guid + '/get', (response) => {
            server.logger.onError(response.message);
        }, getCachedIfPossible);
        const credentials = [];
        if (sharedItemsResponse) {
            for (const sharedItem of sharedItemsResponse) {
                try {
                    const sharedCredential = Credential_1.default.fromData(sharedItem.credential_data, vault, server);
                    sharedCredential.encryptedSharedCredentialEncryptionKey = sharedItem.shared_key;
                    // transfer acl data from sharedItem into the new Credential object
                    delete sharedItem.credential_data;
                    const permissionsSharingAcl = new SharingACL_1.SharingACL(sharedItem.permissions);
                    const newAcl = sharedItem;
                    newAcl.permissions = permissionsSharingAcl;
                    sharedCredential.acl = newAcl;
                    credentials.push(sharedCredential);
                }
                catch (e) {
                    server.logger.anyError(e);
                    server.logger.onError('Failed to decrypt shared credential: ' + sharedItem.credential_data.label);
                }
            }
        }
        return credentials;
    }
    /**
     * Response array entries of ICredentialShareRequest does not contain the credential_data field.
     *
     * @param vault
     * @param server
     */
    static getACLsForCredentialsSharedWithUs(vault, server) {
        return server.getJson('/sharing/vault/' + vault.guid + '/acl', (response) => {
            server.logger.onError(response.message);
        });
    }
    static updateSharedKeyForCredentialSharedWithUsByGuid(encryptedSharedKey, credentialGUID, server) {
        return server.postJson('/sharing/credential/' + credentialGUID + '/acl/shared_key', {
            shared_key: encryptedSharedKey
        }, () => {
        }, 'PATCH');
    }
}
exports.ShareService = ShareService;