UNPKG

kinde-cli

Version:

Kinde cli for managing your business integration, users, roles and permissions etc

250 lines (249 loc) 10.4 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const axios_1 = require("../lib/axios"); const context_1 = __importDefault(require("../lib/context")); const error_1 = require("../utils/error"); const prompts_1 = require("@clack/prompts"); const picocolors_1 = __importDefault(require("picocolors")); const utils_1 = require("../utils"); const command = { ID: { identifier: "Id", desc: "Role's id", attr: "required", }, KEY: { identifier: "Key", desc: "Identifier to use in code eg blog:admin", attr: "optional", }, NAME: { identifier: "Name", desc: "Role's name eg blog:admin", attr: "optional", }, DESCRIPTION: { identifier: "Description", desc: "Role's description eg for managing blogs", attr: "optional", }, BODY: { identifier: "Body", desc: "Role's details", attr: "optional", }, IS_DEFAULT_ROLE: { identifier: "Is Default Role", desc: "Set role as default for new users", attr: "optional", }, }; class Role { constructor(program) { this.program = program; this.handleRole(); } handleRole() { let program = this.program; program .command("role") .description(picocolors_1.default.blue("Manage User Roles. For more information, refer to: https://kinde.com/docs/user-management/user-roles/")) .action((0, utils_1.errorHandler)("Auth", (str, options) => __awaiter(this, void 0, void 0, function* () { let context = context_1.default.getData(); let prompt = (yield (0, prompts_1.select)({ message: "Proceed with appropriate action", options: [ { label: "Create Role", value: "create", }, { label: "Update Role", value: "update", }, { label: "Delete Role", value: "delete", }, ], })); if (prompt === "create") { let createRoleData = yield this.__createRolePrompts(); let response = yield (0, axios_1.axiosRequest)({ path: `${context.normalDomain}/api/v1/roles`, method: "POST", data: createRoleData, headers: { Accept: "application/json", "Content-Type": "application/json", Authorization: `Bearer ${context.token.access_token}`, }, }); return (0, error_1.prettifyAxios)(response); } if (prompt === "update") { let updateRoleData = yield this.__updateRolePrompts(); let response = yield (0, axios_1.axiosRequest)({ path: `${context.normalDomain}/api/v1/roles/${updateRoleData.roleId}`, method: "PATCH", data: (0, utils_1.omit)("roleId", updateRoleData), headers: { Accept: "application/json", "Content-Type": "application/json", Authorization: `Bearer ${context.token.access_token}`, }, }); return (0, error_1.prettifyAxios)(response); } if (prompt === "delete") { let deleteRoleData = yield this.__deleteRolePrompts(); let response = yield (0, axios_1.axiosRequest)({ path: `${context.normalDomain}/api/v1/roles/${deleteRoleData.roleId}`, method: "DELETE", headers: { Accept: "application/json", "Content-Type": "application/json", Authorization: `Bearer ${context.token.access_token}`, }, }); return (0, error_1.prettifyAxios)(response); } }))); } __createRolePrompts() { return __awaiter(this, void 0, void 0, function* () { let values = yield (0, prompts_1.group)({ key: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.KEY.identifier, desc: command.KEY.desc, attr: command.KEY.attr, }), defaultValue: undefined, }), name: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.NAME.identifier, desc: command.NAME.desc, attr: command.NAME.attr, }), defaultValue: undefined, }), description: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.DESCRIPTION.identifier, desc: command.DESCRIPTION.desc, attr: command.DESCRIPTION.attr, }), defaultValue: undefined, }), body: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.BODY.identifier, desc: command.BODY.desc, attr: command.BODY.attr, }), defaultValue: undefined, }), is_default_role: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.IS_DEFAULT_ROLE.identifier, desc: command.IS_DEFAULT_ROLE.desc, attr: command.IS_DEFAULT_ROLE.attr, }), defaultValue: undefined, }), }, utils_1.onCancelCallback); return values; }); } __updateRolePrompts() { return __awaiter(this, void 0, void 0, function* () { let values = yield (0, prompts_1.group)({ roleId: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.ID.identifier, desc: command.ID.desc, attr: command.ID.attr, }), validate(value) { if (!value) return "Id is required"; }, }), key: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.KEY.identifier, desc: command.KEY.desc, attr: command.KEY.attr, }), defaultValue: undefined, }), name: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.NAME.identifier, desc: command.NAME.desc, attr: command.NAME.attr, }), defaultValue: undefined, }), description: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.DESCRIPTION.identifier, desc: command.DESCRIPTION.desc, attr: command.DESCRIPTION.attr, }), defaultValue: undefined, }), body: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.BODY.identifier, desc: command.BODY.desc, attr: command.BODY.attr, }), defaultValue: undefined, }), is_default_role: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.IS_DEFAULT_ROLE.identifier, desc: command.IS_DEFAULT_ROLE.desc, attr: command.IS_DEFAULT_ROLE.attr, }), defaultValue: undefined, }), }, utils_1.onCancelCallback); return values; }); } __deleteRolePrompts() { return __awaiter(this, void 0, void 0, function* () { let values = yield (0, prompts_1.group)({ roleId: () => (0, prompts_1.text)({ message: (0, utils_1.generateMessage)({ identifier: command.ID.identifier, desc: command.ID.desc, attr: command.ID.attr, }), validate(value) { if (!value) return "Id is required"; }, }), }, utils_1.onCancelCallback); return values; }); } } exports.default = Role;