kinde-cli
Version:
Kinde cli for managing your business integration, users, roles and permissions etc
250 lines (249 loc) • 10.4 kB
JavaScript
;
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;