n8n
Version:
n8n Workflow Automation Tool
80 lines • 4.46 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.InstanceCredentialBroker = void 0;
const backend_common_1 = require("@n8n/backend-common");
const db_1 = require("@n8n/db");
const di_1 = require("@n8n/di");
const unprocessable_error_1 = require("../errors/response-errors/unprocessable.error");
const credentials_service_1 = require("./credentials.service");
const instance_credential_use_registry_1 = require("./instance-credential-use.registry");
let InstanceCredentialBroker = class InstanceCredentialBroker {
constructor(logger, useRegistry, assignmentRepository, credentialsService) {
this.logger = logger;
this.useRegistry = useRegistry;
this.assignmentRepository = assignmentRepository;
this.credentialsService = credentialsService;
}
registerUse(credentialUse) {
this.useRegistry.register(credentialUse);
}
async listForUse(credentialUse) {
const registeredUse = this.useRegistry.get(credentialUse.id);
return await this.assignmentRepository.findAvailableCredentials(registeredUse.credentialTypes);
}
async assignForUse(credentialUse, credentialId, ctx) {
const registeredUse = this.useRegistry.get(credentialUse.id);
const credentialUseId = registeredUse.id;
const credential = await this.assignmentRepository.assignCredential(credentialUseId, credentialId, registeredUse.credentialTypes, ctx);
if (!credential)
throw this.invalidCredentialError(credentialUseId, credentialId);
this.logger.debug('Assigned instance credential', { credentialUseId, credentialId });
return { id: credential.id, name: credential.name, type: credential.type };
}
async clearForUse(credentialUse, ctx) {
this.useRegistry.get(credentialUse.id);
await this.assignmentRepository.clearCredential(credentialUse.id, ctx);
}
async getAssignedCredentialId(credentialUse, ctx) {
this.useRegistry.get(credentialUse.id);
return await this.assignmentRepository.findAssignedCredentialId(credentialUse.id, ctx);
}
async resolveForUse(credentialUse, ctx) {
const registeredUse = this.useRegistry.get(credentialUse.id);
const credentialUseId = registeredUse.id;
const assignment = await this.assignmentRepository.findAssignedCredential(credentialUseId, registeredUse.credentialTypes, ctx);
if (!assignment)
return null;
const { credentialId, credential } = assignment;
if (!credential)
throw this.invalidCredentialError(credentialUseId, credentialId);
const resolved = {
id: credential.id,
name: credential.name,
type: credential.type,
data: await this.credentialsService.decrypt(credential, true),
};
this.logger.debug('Resolved instance credential', {
credentialUseId,
credentialId: credential.id,
});
return resolved;
}
invalidCredentialError(credentialUseId, credentialId) {
return new unprocessable_error_1.UnprocessableRequestError(`Credential "${credentialId}" is not valid for instance credential use "${credentialUseId}"`);
}
};
exports.InstanceCredentialBroker = InstanceCredentialBroker;
exports.InstanceCredentialBroker = InstanceCredentialBroker = __decorate([
(0, di_1.Service)(),
__metadata("design:paramtypes", [backend_common_1.Logger, instance_credential_use_registry_1.InstanceCredentialUseRegistry, db_1.InstanceCredentialAssignmentRepository, credentials_service_1.CredentialsService])
], InstanceCredentialBroker);
//# sourceMappingURL=instance-credential-broker.js.map