UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.

120 lines 6.09 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PublicSignupController = void 0; const controller_1 = __importDefault(require("../controller")); const permissions_1 = require("../../types/permissions"); const create_request_schema_1 = require("../../openapi/util/create-request-schema"); const create_response_schema_1 = require("../../openapi/util/create-response-schema"); const serialize_dates_1 = require("../../types/serialize-dates"); const public_signup_token_schema_1 = require("../../openapi/spec/public-signup-token-schema"); const public_signup_tokens_schema_1 = require("../../openapi/spec/public-signup-tokens-schema"); const extract_user_1 = require("../../util/extract-user"); class PublicSignupController extends controller_1.default { constructor(config, { publicSignupTokenService, accessService, userService, openApiService, }) { super(config); this.publicSignupTokenService = publicSignupTokenService; this.accessService = accessService; this.userService = userService; this.openApiService = openApiService; this.logger = config.getLogger('public-signup-controller.js'); this.route({ method: 'get', path: '/tokens', handler: this.getAllPublicSignupTokens, permission: permissions_1.ADMIN, middleware: [ openApiService.validPath({ tags: ['Public signup tokens'], summary: 'Retrieve all existing public signup tokens', operationId: 'getAllPublicSignupTokens', responses: { 200: (0, create_response_schema_1.createResponseSchema)('publicSignupTokensSchema'), }, }), ], }); this.route({ method: 'post', path: '/tokens', handler: this.createPublicSignupToken, permission: permissions_1.ADMIN, middleware: [ openApiService.validPath({ tags: ['Public signup tokens'], operationId: 'createPublicSignupToken', summary: 'Create a public signup token', requestBody: (0, create_request_schema_1.createRequestSchema)('publicSignupTokenCreateSchema'), responses: { 201: (0, create_response_schema_1.resourceCreatedResponseSchema)('publicSignupTokenSchema'), }, }), ], }); this.route({ method: 'get', path: '/tokens/:token', handler: this.getPublicSignupToken, permission: permissions_1.ADMIN, middleware: [ openApiService.validPath({ tags: ['Public signup tokens'], summary: 'Retrieve a token', description: "Get information about a specific token. The `:token` part of the URL should be the token's secret.", operationId: 'getPublicSignupToken', responses: { 200: (0, create_response_schema_1.createResponseSchema)('publicSignupTokenSchema'), }, }), ], }); this.route({ method: 'put', path: '/tokens/:token', handler: this.updatePublicSignupToken, permission: permissions_1.ADMIN, middleware: [ openApiService.validPath({ tags: ['Public signup tokens'], operationId: 'updatePublicSignupToken', summary: 'Update a public signup token', requestBody: (0, create_request_schema_1.createRequestSchema)('publicSignupTokenUpdateSchema'), responses: { 200: (0, create_response_schema_1.createResponseSchema)('publicSignupTokenSchema'), }, }), ], }); } async getAllPublicSignupTokens(req, res) { const tokens = await this.publicSignupTokenService.getAllTokens(); this.openApiService.respondWithValidation(200, res, public_signup_tokens_schema_1.publicSignupTokensSchema.$id, { tokens: (0, serialize_dates_1.serializeDates)(tokens) }); } async getPublicSignupToken(req, res) { const { token } = req.params; const result = await this.publicSignupTokenService.get(token); this.openApiService.respondWithValidation(200, res, public_signup_token_schema_1.publicSignupTokenSchema.$id, (0, serialize_dates_1.serializeDates)(result)); } async createPublicSignupToken(req, res) { const username = (0, extract_user_1.extractUsername)(req); const token = await this.publicSignupTokenService.createNewPublicSignupToken(req.body, username); this.openApiService.respondWithValidation(201, res, public_signup_token_schema_1.publicSignupTokenSchema.$id, (0, serialize_dates_1.serializeDates)(token), { location: `tokens/${token.secret}` }); } async updatePublicSignupToken(req, res) { const { token } = req.params; const { expiresAt, enabled } = req.body; if (!expiresAt && enabled === undefined) { this.logger.error(req.body); return res.status(400).send(); } const result = await this.publicSignupTokenService.update(token, { ...(enabled === undefined ? {} : { enabled }), ...(expiresAt ? { expiresAt: new Date(expiresAt) } : {}), }, (0, extract_user_1.extractUsername)(req)); this.openApiService.respondWithValidation(200, res, public_signup_token_schema_1.publicSignupTokenSchema.$id, (0, serialize_dates_1.serializeDates)(result)); } } exports.PublicSignupController = PublicSignupController; //# sourceMappingURL=public-signup.js.map