UNPKG

mongodb-dynamic-api

Version:

Auto generated CRUD API for MongoDB using NestJS

172 lines 8.63 kB
"use strict"; 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); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AuthControllerMixin = void 0; const common_1 = require("@nestjs/common"); const swagger_1 = require("@nestjs/swagger"); const builders_1 = require("../../../builders"); const decorators_1 = require("../../../decorators"); const helpers_1 = require("../../../helpers"); const mixins_1 = require("../../../mixins"); const change_password_dto_1 = require("../dtos/change-password.dto"); const reset_password_dto_1 = require("../dtos/reset-password.dto"); const guards_1 = require("../guards"); const auth_policies_guard_mixin_1 = require("./auth-policies-guard.mixin"); function AuthControllerMixin(userEntity, loginField, passwordField, additionalRequestFields = [], { additionalFields: additionalRegisterFields, protected: registerProtected, abilityPredicate: registerAbilityPredicate, } = {}, resetPasswordOptions = {}, updateAccountOptions = {}) { var _a; if (!loginField || !passwordField) { throw new Error('Login and password fields are required'); } class AuthBodyPasswordFieldDto extends (0, swagger_1.PickType)(userEntity, [passwordField]) { } _a = passwordField; __decorate([ (0, swagger_1.ApiProperty)(), __metadata("design:type", String) ], AuthBodyPasswordFieldDto.prototype, _a, void 0); class AuthLoginDto extends (0, swagger_1.IntersectionType)((0, swagger_1.PickType)(userEntity, [loginField]), AuthBodyPasswordFieldDto) { } const additionalMandatoryFields = []; const additionalOptionalFields = []; if (!additionalRegisterFields) { additionalRegisterFields = []; } additionalRegisterFields.forEach((field) => { if (typeof field === 'string') { additionalOptionalFields.push(field); return; } const { required, name } = field; if (required) { additionalMandatoryFields.push(name); } else { additionalOptionalFields.push(name); } }); class AuthRegisterDto extends (0, swagger_1.IntersectionType)((0, swagger_1.PickType)(userEntity, [loginField, ...additionalMandatoryFields]), additionalOptionalFields?.length ? (0, swagger_1.IntersectionType)(AuthBodyPasswordFieldDto, (0, swagger_1.PartialType)((0, swagger_1.PickType)(userEntity, additionalOptionalFields))) : AuthBodyPasswordFieldDto) { } class AuthUpdateAccountDto extends (0, mixins_1.EntityBodyMixin)(userEntity, true, [ loginField, passwordField, ...updateAccountOptions.additionalFieldsToExclude ?? [], ]) { } class AuthPresenter { } __decorate([ (0, swagger_1.ApiProperty)(), __metadata("design:type", String) ], AuthPresenter.prototype, "accessToken", void 0); class AuthUserPresenter extends (0, swagger_1.PickType)(userEntity, ['id', loginField, ...additionalRequestFields]) { } class AuthRegisterPoliciesGuard extends (0, auth_policies_guard_mixin_1.AuthPoliciesGuardMixin)(userEntity, registerAbilityPredicate) { } const authRegisterDecorators = new builders_1.AuthDecoratorsBuilder(registerProtected, AuthRegisterPoliciesGuard); class AuthUpdateAccountPoliciesGuard extends (0, auth_policies_guard_mixin_1.AuthPoliciesGuardMixin)(userEntity, updateAccountOptions.abilityPredicate) { } const authUpdateAccountDecorators = new builders_1.AuthDecoratorsBuilder(true, AuthUpdateAccountPoliciesGuard); class BaseAuthController { constructor(service) { this.service = service; } getAccount(req) { return this.service.getAccount(req.user); } updateAccount(req, body) { return this.service.updateAccount(req.user, body); } login(req, _) { return this.service.login(req.user); } register(body) { return this.service.register(body); } resetPassword({ email }) { return this.service.resetPassword(email); } changePassword({ resetPasswordToken, newPassword }) { return this.service.changePassword(resetPasswordToken, newPassword); } } __decorate([ (0, swagger_1.ApiBearerAuth)(), (0, common_1.UseGuards)(guards_1.JwtAuthGuard), (0, common_1.HttpCode)(common_1.HttpStatus.OK), (0, swagger_1.ApiOkResponse)({ type: AuthUserPresenter }), (0, common_1.Get)('account'), __param(0, (0, common_1.Request)()), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0) ], BaseAuthController.prototype, "getAccount", null); __decorate([ (0, helpers_1.RouteDecoratorsHelper)(authUpdateAccountDecorators), (0, common_1.HttpCode)(common_1.HttpStatus.OK), (0, swagger_1.ApiOkResponse)({ type: AuthUserPresenter }), (0, common_1.Patch)('account'), __param(0, (0, common_1.Request)()), __param(1, (0, common_1.Body)()), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, AuthUpdateAccountDto]), __metadata("design:returntype", void 0) ], BaseAuthController.prototype, "updateAccount", null); __decorate([ (0, decorators_1.Public)(), (0, common_1.UseGuards)(guards_1.LocalAuthGuard), (0, common_1.HttpCode)(common_1.HttpStatus.OK), (0, swagger_1.ApiOkResponse)({ type: AuthPresenter }), (0, common_1.Post)('login'), __param(0, (0, common_1.Request)()), __param(1, (0, common_1.Body)()), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, AuthLoginDto]), __metadata("design:returntype", void 0) ], BaseAuthController.prototype, "login", null); __decorate([ (0, helpers_1.RouteDecoratorsHelper)(authRegisterDecorators), (0, common_1.HttpCode)(common_1.HttpStatus.CREATED), (0, swagger_1.ApiCreatedResponse)({ type: AuthPresenter }), (0, common_1.Post)('register'), __param(0, (0, common_1.Body)()), __metadata("design:type", Function), __metadata("design:paramtypes", [AuthRegisterDto]), __metadata("design:returntype", void 0) ], BaseAuthController.prototype, "register", null); __decorate([ (0, decorators_1.ApiEndpointVisibility)(!!resetPasswordOptions, (0, decorators_1.Public)()), (0, common_1.UseGuards)(new guards_1.ResetPasswordGuard(!!resetPasswordOptions.emailField)), (0, common_1.HttpCode)(common_1.HttpStatus.NO_CONTENT), (0, common_1.Post)('reset-password'), __param(0, (0, common_1.Body)()), __metadata("design:type", Function), __metadata("design:paramtypes", [reset_password_dto_1.ResetPasswordDto]), __metadata("design:returntype", void 0) ], BaseAuthController.prototype, "resetPassword", null); __decorate([ (0, decorators_1.ApiEndpointVisibility)(!!resetPasswordOptions, (0, decorators_1.Public)()), (0, common_1.UseGuards)(new guards_1.ResetPasswordGuard(!!resetPasswordOptions.emailField)), (0, common_1.HttpCode)(common_1.HttpStatus.NO_CONTENT), (0, common_1.Patch)('change-password'), __param(0, (0, common_1.Body)()), __metadata("design:type", Function), __metadata("design:paramtypes", [change_password_dto_1.ChangePasswordDto]), __metadata("design:returntype", void 0) ], BaseAuthController.prototype, "changePassword", null); return BaseAuthController; } exports.AuthControllerMixin = AuthControllerMixin; //# sourceMappingURL=auth-controller.mixin.js.map