kinde-cli
Version:
Kinde cli for managing your business integration, users, roles and permissions etc
240 lines (239 loc) • 10.1 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 prompts_1 = require("@clack/prompts");
const picocolors_1 = __importDefault(require("picocolors"));
const utils_1 = require("../utils");
const error_1 = require("../utils/error");
const command = {
ID: {
identifier: "Id",
desc: "Permission's id",
attr: "required",
},
KEY: {
identifier: "Key",
desc: "Identifier to use in code eg blog:admin",
attr: "optional",
},
NAME: {
identifier: "Name",
desc: "Permission's name eg blog:admin",
attr: "optional",
},
DESCRIPTION: {
identifier: "Description",
desc: "Permission's description eg for managing blogs",
attr: "optional",
},
BODY: {
identifier: "Body",
desc: "Permission's details",
attr: "optional",
},
};
class Permission {
constructor(program) {
this.program = program;
this.handlePermission();
}
handlePermission() {
let program = this.program;
program
.command("permission")
.description(picocolors_1.default.blue("Manage User Permissions. For more information, refer to: https://kinde.com/docs/user-management/user-permissions/"))
// .option(
// "-c, --create <name>",
// "create permission",
// this.__createPermissionPrompts
// )
// .option(
// "-u, --update",
// "update permission",
// this.__updatePermissionPrompts
// )
// .option("-d, --delete", "delete permission")
.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 Permission",
value: "create",
},
{
label: "Update Permission",
value: "update",
},
{
label: "Delete Permission",
value: "delete",
},
],
}));
if (prompt === "create") {
let createPermissionData = yield this.__createPermissionPrompts();
let response = yield (0, axios_1.axiosRequest)({
path: `${context.normalDomain}/api/v1/permissions`,
method: "POST",
data: createPermissionData,
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: `Bearer ${context.token.access_token}`,
},
});
return (0, error_1.prettifyAxios)(response);
}
if (prompt === "update") {
let updatePermission = yield this.__updatePermissionPrompts();
let response = yield (0, axios_1.axiosRequest)({
path: `${context.normalDomain}/api/v1/permissions/${updatePermission.permissionId}`,
method: "PATCH",
data: (0, utils_1.omit)("permissionId", updatePermission),
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: `Bearer ${context.token.access_token}`,
},
});
return (0, error_1.prettifyAxios)(response);
}
if (prompt === "delete") {
let deletePermission = yield this.__deletePermissionPrompts();
let response = yield (0, axios_1.axiosRequest)({
path: `${context.normalDomain}/api/v1/permissions/${deletePermission.permissionId}`,
method: "DELETE",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: `Bearer ${context.token.access_token}`,
},
});
return (0, error_1.prettifyAxios)(response);
}
})));
}
__createPermissionPrompts() {
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,
}),
}, utils_1.onCancelCallback);
return values;
});
}
__updatePermissionPrompts() {
return __awaiter(this, void 0, void 0, function* () {
let values = yield (0, prompts_1.group)({
permissionId: () => (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,
}),
}, utils_1.onCancelCallback);
return values;
});
}
__deletePermissionPrompts() {
return __awaiter(this, void 0, void 0, function* () {
let values = yield (0, prompts_1.group)({
permissionId: () => (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 = Permission;