@lomray/microservice-users
Version:
Users microservice based on NodeJS & inverted json.
64 lines (60 loc) • 2.37 kB
JavaScript
;
var tslib = require('tslib');
var microserviceHelpers = require('@lomray/microservice-helpers');
var classTransformer = require('class-transformer');
var classValidator = require('class-validator');
var classValidatorJsonschema = require('class-validator-jsonschema');
var typeorm = require('typeorm');
var idProvider = require('../../constants/id-provider.js');
var user = require('../../entities/user.js');
var factory = require('../../services/identity-provider/factory.js');
class IdentityProviderAttachInput {
constructor() {
this.params = {};
}
}
tslib.__decorate([
classValidator.IsString(),
classValidator.IsNotEmpty(),
tslib.__metadata("design:type", String)
], IdentityProviderAttachInput.prototype, "userId", void 0);
tslib.__decorate([
classValidator.IsEnum(idProvider),
tslib.__metadata("design:type", String)
], IdentityProviderAttachInput.prototype, "provider", void 0);
tslib.__decorate([
classValidatorJsonschema.JSONSchema({
description: 'User identity provider token or code. E.g: auth.getToken()',
}),
classValidator.IsString(),
classValidator.IsNotEmpty(),
tslib.__metadata("design:type", String)
], IdentityProviderAttachInput.prototype, "token", void 0);
tslib.__decorate([
classValidator.IsObject(),
microserviceHelpers.IsUndefinable(),
tslib.__metadata("design:type", Object)
], IdentityProviderAttachInput.prototype, "params", void 0);
class IdentityProviderAttachOutput {
}
tslib.__decorate([
microserviceHelpers.IsMeta(),
classTransformer.Type(() => user),
tslib.__metadata("design:type", user)
], IdentityProviderAttachOutput.prototype, "user", void 0);
/**
* Attach new identity provider to existing user
*/
const attach = microserviceHelpers.Endpoint.custom(() => ({
input: IdentityProviderAttachInput,
output: IdentityProviderAttachOutput,
description: 'Attach new identity provider to existing user',
}), ({ userId, provider, token, params }) => tslib.__awaiter(void 0, void 0, void 0, function* () {
const service = factory.create(provider, token, typeorm.getManager());
return {
user: yield service.attachProvider(userId, params),
};
}));
exports.IdentityProviderAttachInput = IdentityProviderAttachInput;
exports.IdentityProviderAttachOutput = IdentityProviderAttachOutput;
exports.attach = attach;