@codiac.io/codiac-cli 1.2.264 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/apis/codiac-api/common/api-client-base.d.ts +21 -7
- package/dist/apis/codiac-api/common/api-client-base.js +8 -6
- package/dist/apis/codiac-api/common/api-client-base.js.map +1 -1
- package/dist/apis/codiac-api/gen/client.d.ts +268 -198
- package/dist/apis/codiac-api/gen/client.js +2464 -970
- package/dist/apis/codiac-api/gen/client.js.map +1 -1
- package/dist/apis/codiac-api/gen/contracts.d.ts +171 -33
- package/dist/apis/codiac-api/gen/contracts.js +72 -76
- package/dist/apis/codiac-api/gen/contracts.js.map +1 -1
- package/dist/apis/codiac-relay/gen/client.d.ts +2 -2
- package/dist/apis/codiac-relay/gen/client.js.map +1 -1
- package/dist/cli-common/command-base.d.ts +10 -0
- package/dist/cli-common/command-base.js +21 -0
- package/dist/cli-common/command-base.js.map +1 -1
- package/dist/command-base-enterprise.d.ts +11 -11
- package/dist/command-base-enterprise.js +83 -60
- package/dist/command-base-enterprise.js.map +1 -1
- package/dist/command-base-exec-tenant.d.ts +21 -0
- package/dist/command-base-exec-tenant.js +72 -0
- package/dist/command-base-exec-tenant.js.map +1 -0
- package/dist/command-base-tenantless.d.ts +0 -5
- package/dist/command-base-tenantless.js +0 -11
- package/dist/command-base-tenantless.js.map +1 -1
- package/dist/commands/asset/deploy.js +1 -0
- package/dist/commands/asset/deploy.js.map +1 -1
- package/dist/commands/auth/cabinet/allow.d.ts +49 -0
- package/dist/commands/auth/cabinet/allow.js +155 -0
- package/dist/commands/auth/cabinet/allow.js.map +1 -0
- package/dist/commands/auth/cabinet/allowed.d.ts +44 -0
- package/dist/commands/auth/cabinet/allowed.js +187 -0
- package/dist/commands/auth/cabinet/allowed.js.map +1 -0
- package/dist/commands/auth/enterprise/allow/onEnvironments.d.ts +41 -0
- package/dist/commands/auth/enterprise/allow/onEnvironments.js +146 -0
- package/dist/commands/auth/enterprise/allow/onEnvironments.js.map +1 -0
- package/dist/commands/auth/enterprise/allow.d.ts +43 -0
- package/dist/commands/auth/enterprise/allow.js +140 -0
- package/dist/commands/auth/enterprise/allow.js.map +1 -0
- package/dist/commands/auth/enterprise/allowed.d.ts +40 -0
- package/dist/commands/auth/enterprise/allowed.js +171 -0
- package/dist/commands/auth/enterprise/allowed.js.map +1 -0
- package/dist/commands/auth/environment/allow/onCabinets.d.ts +43 -0
- package/dist/commands/auth/environment/allow/onCabinets.js +156 -0
- package/dist/commands/auth/environment/allow/onCabinets.js.map +1 -0
- package/dist/commands/auth/environment/allow.d.ts +46 -0
- package/dist/commands/auth/environment/allow.js +148 -0
- package/dist/commands/auth/environment/allow.js.map +1 -0
- package/dist/commands/auth/environment/allowed.d.ts +42 -0
- package/dist/commands/auth/environment/allowed.js +182 -0
- package/dist/commands/auth/environment/allowed.js.map +1 -0
- package/dist/commands/auth/register.d.ts +32 -0
- package/dist/commands/auth/register.js +170 -0
- package/dist/commands/auth/register.js.map +1 -0
- package/dist/commands/auth/role/allowed.d.ts +33 -0
- package/dist/commands/auth/role/allowed.js +135 -0
- package/dist/commands/auth/role/allowed.js.map +1 -0
- package/dist/commands/auth/role/assign.d.ts +26 -0
- package/dist/commands/auth/role/assign.js +92 -0
- package/dist/commands/auth/role/assign.js.map +1 -0
- package/dist/commands/auth/role/create.d.ts +24 -0
- package/dist/commands/auth/role/create.js +90 -0
- package/dist/commands/auth/role/create.js.map +1 -0
- package/dist/commands/auth/role/delete.d.ts +28 -0
- package/dist/commands/auth/role/delete.js +119 -0
- package/dist/commands/auth/role/delete.js.map +1 -0
- package/dist/commands/auth/role/list.d.ts +26 -0
- package/dist/commands/auth/role/list.js +108 -0
- package/dist/commands/auth/role/list.js.map +1 -0
- package/dist/commands/auth/role/unassign.d.ts +26 -0
- package/dist/commands/auth/role/unassign.js +92 -0
- package/dist/commands/auth/role/unassign.js.map +1 -0
- package/dist/commands/auth/user/invite.d.ts +24 -0
- package/dist/commands/auth/user/invite.js +105 -0
- package/dist/commands/auth/user/invite.js.map +1 -0
- package/dist/commands/auth/user/list.d.ts +26 -0
- package/dist/commands/auth/user/list.js +118 -0
- package/dist/commands/auth/user/list.js.map +1 -0
- package/dist/commands/cabinet/create.d.ts +1 -1
- package/dist/commands/cabinet/create.js +28 -20
- package/dist/commands/cabinet/create.js.map +1 -1
- package/dist/commands/cabinet/list.d.ts +1 -0
- package/dist/commands/cabinet/list.js +9 -1
- package/dist/commands/cabinet/list.js.map +1 -1
- package/dist/commands/cabinet/obliterate.js +39 -34
- package/dist/commands/cabinet/obliterate.js.map +1 -1
- package/dist/commands/config/deploy.js +5 -2
- package/dist/commands/config/deploy.js.map +1 -1
- package/dist/commands/enterprise/create.js +1 -1
- package/dist/commands/enterprise/create.js.map +1 -1
- package/dist/commands/environment/create.d.ts +1 -0
- package/dist/commands/environment/create.js +4 -2
- package/dist/commands/environment/create.js.map +1 -1
- package/dist/commands/secretStore/list.js +2 -2
- package/dist/commands/secretStore/list.js.map +1 -1
- package/dist/commands/tenant/create.d.ts +0 -2
- package/dist/commands/tenant/create.js +0 -33
- package/dist/commands/tenant/create.js.map +1 -1
- package/dist/commands/tenant/switch.d.ts +0 -2
- package/dist/commands/tenant/switch.js +0 -33
- package/dist/commands/tenant/switch.js.map +1 -1
- package/dist/commands/whoami.d.ts +3 -1
- package/dist/commands/whoami.js +8 -2
- package/dist/commands/whoami.js.map +1 -1
- package/dist/ops/data/cli-context-repo.js +2 -2
- package/dist/ops/data/cli-context-repo.js.map +1 -1
- package/dist/relay/relay-container.js +1 -1
- package/dist/uilogic/rootmap-ui-utils.js +38 -8
- package/dist/uilogic/rootmap-ui-utils.js.map +1 -1
- package/dist/uilogic/tenant-contextualizer.js +8 -2
- package/dist/uilogic/tenant-contextualizer.js.map +1 -1
- package/dist/user-context-loader.d.ts +1 -1
- package/dist/user-context-loader.js +3 -2
- package/dist/user-context-loader.js.map +1 -1
- package/oclif.manifest.json +1597 -93
- package/package.json +4 -4
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrivilegeAbbrevsEnum = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const _ = require("lodash");
|
|
7
|
+
const config_ui_utils_1 = require("../../../uilogic/config-ui-utils");
|
|
8
|
+
const contracts_1 = require("../../../apis/codiac-api/contracts");
|
|
9
|
+
const command_base_exec_1 = require("../../../command-base-exec");
|
|
10
|
+
var PrivilegeAbbrevsEnum;
|
|
11
|
+
(function (PrivilegeAbbrevsEnum) {
|
|
12
|
+
PrivilegeAbbrevsEnum["modify"] = "modify";
|
|
13
|
+
PrivilegeAbbrevsEnum["read"] = "read";
|
|
14
|
+
PrivilegeAbbrevsEnum["none"] = "none";
|
|
15
|
+
})(PrivilegeAbbrevsEnum = exports.PrivilegeAbbrevsEnum || (exports.PrivilegeAbbrevsEnum = {}));
|
|
16
|
+
class AuthCabinetAllow extends command_base_exec_1.CommandBaseExec {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.adminOnly = true;
|
|
20
|
+
}
|
|
21
|
+
captureArgs(enterpriseCode) {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
const { args, flags } = yield this.parse(AuthCabinetAllow);
|
|
25
|
+
let partial = {
|
|
26
|
+
enterprise: enterpriseCode
|
|
27
|
+
};
|
|
28
|
+
if (flags.enterprise)
|
|
29
|
+
partial.enterprise = flags.enterprise;
|
|
30
|
+
if (flags.environment)
|
|
31
|
+
partial.environment = flags.environment;
|
|
32
|
+
if (flags.cabinet)
|
|
33
|
+
partial.cabinet = flags.cabinet;
|
|
34
|
+
if (flags.role)
|
|
35
|
+
partial.role = flags.role;
|
|
36
|
+
if (flags.privilege) {
|
|
37
|
+
partial.privilege = PrivilegeAbbrevsEnum[flags.privilege];
|
|
38
|
+
switch (flags.privilege) {
|
|
39
|
+
case PrivilegeAbbrevsEnum.modify:
|
|
40
|
+
partial.privileges = [contracts_1.Privilege.Create, contracts_1.Privilege.Read, contracts_1.Privilege.Update, contracts_1.Privilege.Delete];
|
|
41
|
+
break;
|
|
42
|
+
case PrivilegeAbbrevsEnum.read:
|
|
43
|
+
partial.privileges = [contracts_1.Privilege.Read];
|
|
44
|
+
break;
|
|
45
|
+
case PrivilegeAbbrevsEnum.none:
|
|
46
|
+
default:
|
|
47
|
+
partial.privileges = [];
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// ---------------------------------------------------------------
|
|
52
|
+
// TODO: move everything from here down into the base class
|
|
53
|
+
// ---------------------------------------------------------------
|
|
54
|
+
const interactionMode = (this.pipedInput) ? config_ui_utils_1.InteractionModes.silent : (_b = (_a = undefined !== null && undefined !== void 0 ? undefined : (flags.echo ? config_ui_utils_1.InteractionModes.echo : undefined)) !== null && _a !== void 0 ? _a : (flags["to-script"] ? config_ui_utils_1.InteractionModes.toscript : undefined)) !== null && _b !== void 0 ? _b : (flags.silent ? config_ui_utils_1.InteractionModes.silent : undefined);
|
|
55
|
+
const takeDefaults = flags['take-defaults'];
|
|
56
|
+
return [partial, interactionMode, takeDefaults];
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// /** Throws on invalid */
|
|
60
|
+
// private validate(partial: Partial<IAuthRoleDef>): void {
|
|
61
|
+
// if (partial.name == undefined || _.isEmpty(partial.name)) throw new Error("Missing name");
|
|
62
|
+
// let rxName = /^[a-zA-Z][a-zA-Z0-9-]{2,50}$/;
|
|
63
|
+
// if (!rxName.test(partial.name)) throw new Error("Invalid name: must be 3- to 50-character string of alphanumerics and hyphens, starting with a letter.");
|
|
64
|
+
// }
|
|
65
|
+
buildCandidate_silently(partial, rootMap) {
|
|
66
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
if (partial.enterprise == undefined || _.isEmpty(partial.enterprise))
|
|
68
|
+
throw new Error("Must specify enterprise.");
|
|
69
|
+
if (partial.environment == undefined || _.isEmpty(partial.environment))
|
|
70
|
+
throw new Error("Must specify environment.");
|
|
71
|
+
if (partial.cabinet == undefined || _.isEmpty(partial.cabinet))
|
|
72
|
+
throw new Error("Must specify cabinet.");
|
|
73
|
+
if (partial.role == undefined || _.isEmpty(partial.role))
|
|
74
|
+
throw new Error("Must specify role.");
|
|
75
|
+
if (partial.privilege == undefined || _.isEmpty(partial.privilege))
|
|
76
|
+
throw new Error("Must specify privilege.");
|
|
77
|
+
if (partial.privileges == undefined)
|
|
78
|
+
throw new Error("Must specify privileges.");
|
|
79
|
+
let candidate = {
|
|
80
|
+
/* cmd arg */ enterprise: partial.enterprise,
|
|
81
|
+
/* cmd arg */ environment: partial.environment,
|
|
82
|
+
/* cmd arg */ cabinet: partial.cabinet,
|
|
83
|
+
/* cmd arg */ privilege: partial.privilege,
|
|
84
|
+
role: partial.role,
|
|
85
|
+
/* api syntax */ privileges: partial.privileges,
|
|
86
|
+
/* api syntax */ entityType: "Cabinet",
|
|
87
|
+
/* api syntax */ entityKey: { enterpriseCode: partial.enterprise, environment: partial.environment, name: partial.cabinet }
|
|
88
|
+
};
|
|
89
|
+
return candidate;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
buildCandidate_interactively(partial, rootMap, takeDefaults) {
|
|
93
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
94
|
+
// TODO:
|
|
95
|
+
// 1) select an enterprise (if > 1)
|
|
96
|
+
// 2) select a role (render already assigned w rwx or read/modify)
|
|
97
|
+
// 3) multi-select privileges (w existing pre-selected)
|
|
98
|
+
return yield this.buildCandidate_silently(partial, rootMap);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
buildCommandString(candidate, cmd) {
|
|
102
|
+
cmd.push("--enterprise", candidate.enterprise);
|
|
103
|
+
cmd.push("--environment", candidate.environment);
|
|
104
|
+
cmd.push("--cabinet", candidate.environment);
|
|
105
|
+
cmd.push("--role", candidate.role);
|
|
106
|
+
cmd.push("--privilege", candidate.privilege);
|
|
107
|
+
cmd.push("--silent");
|
|
108
|
+
return cmd;
|
|
109
|
+
}
|
|
110
|
+
executeTask(candidate) {
|
|
111
|
+
var _a, _b;
|
|
112
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
113
|
+
// throw new Error("Auth.setEntityPermission not yet implemented on api");
|
|
114
|
+
const req = {
|
|
115
|
+
entityType: candidate.entityType,
|
|
116
|
+
entityKey: candidate.entityKey,
|
|
117
|
+
role: candidate.role,
|
|
118
|
+
privileges: candidate.privileges,
|
|
119
|
+
comprehensive: true
|
|
120
|
+
};
|
|
121
|
+
let result = yield this._codiacApi.Auth.SetEntityPermission(req);
|
|
122
|
+
if (result.error)
|
|
123
|
+
throw result.error;
|
|
124
|
+
if (result.success) {
|
|
125
|
+
this._ui.userMessage(this._styler.colorGood("Success! ").concat((_a = result.message) !== null && _a !== void 0 ? _a : "Assigned permissions."));
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this._ui.userMessage((_b = result.message) !== null && _b !== void 0 ? _b : "Failed to assign permissions (no details given, see log for details)");
|
|
129
|
+
}
|
|
130
|
+
return;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
exports.default = AuthCabinetAllow;
|
|
135
|
+
AuthCabinetAllow.description = 'Sets permissions for a security Role on the given cabinet entity. (NOT additive: this command overwrites any existing permissions set for this role on the entity).';
|
|
136
|
+
AuthCabinetAllow.aliases = ["auth:cab:allow"];
|
|
137
|
+
AuthCabinetAllow.examples = [
|
|
138
|
+
'<%= config.bin %> <%= command.id %> --enteprise main --environment dev --cabinet myspike --role developer --privilege modify',
|
|
139
|
+
'<%= config.bin %> <%= command.id %> -e prod -c green -r developer -p none',
|
|
140
|
+
'<%= config.bin %> <%= command.id %> -e qa -c shasta -r productmanager -p read'
|
|
141
|
+
];
|
|
142
|
+
AuthCabinetAllow.flags = {
|
|
143
|
+
enterprise: core_1.Flags.string({ required: false, description: 'Name of the enterprise in which the cabinet resides. (Required only if more than one exists).' }),
|
|
144
|
+
environment: core_1.Flags.string({ char: 'e', required: false, description: 'Name of the environment that contains the cabinet. Required in silent mode.' }),
|
|
145
|
+
cabinet: core_1.Flags.string({ char: 'c', required: false, description: 'Name of the cabinet being protected. Required in silent mode.' }),
|
|
146
|
+
role: core_1.Flags.string({ char: 'r', required: false, description: 'Name of the Role being assigned. Required in silent mode.' }),
|
|
147
|
+
privilege: core_1.Flags.string({ char: 'p', required: true, options: Object.keys(PrivilegeAbbrevsEnum), description: 'The permission to assign to the Role. ("modify" infers permission to create, read, update, and delete. "none" removes any permissions set for the role)' }),
|
|
148
|
+
// TODO: Move these into the base class
|
|
149
|
+
silent: core_1.Flags.boolean({ exclusive: ["echo", "to-script"], description: 'Non-Interactive mode; executes without any user interaction and fails on any missing or invalid arguments.' }),
|
|
150
|
+
echo: core_1.Flags.boolean({ exclusive: ["to-script", "silent"], description: 'Echo interaction mode; renders the equivalent non-interactive cli command for future use before final execution.' }),
|
|
151
|
+
"to-script": core_1.Flags.boolean({ exclusive: ["echo", "silent"], description: 'Toscript interaction mode; renders the equivalent non-interactive cli command WITHOUT any execution.' }),
|
|
152
|
+
"take-defaults": core_1.Flags.boolean({ exclusive: ["silent"], description: "Setting this to true prevents prompting for confirmation on parameters that were passed in or were automatically set to default values (Irrelevant in --silent mode). This behavior does NOT apply to scenarios that the command needs to override invalid user input; such cases will always prompt for confirmation. eg: when no argument was provided for file or type, and only one exists, the system will render the autoselected file unless this flag is set." })
|
|
153
|
+
};
|
|
154
|
+
AuthCabinetAllow.args = {};
|
|
155
|
+
//# sourceMappingURL=allow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allow.js","sourceRoot":"","sources":["../../../../src/commands/auth/cabinet/allow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { AtLeast } from "@codiac.io/codiac-common/contracts";
|
|
2
|
+
import { InteractionModes } from '../../../uilogic/config-ui-utils';
|
|
3
|
+
import { RootMap } from '../../../apis/codiac-api/contracts';
|
|
4
|
+
import { CommandBaseExec } from '../../../command-base-exec';
|
|
5
|
+
export declare enum PrivilegeAbbrevsEnum {
|
|
6
|
+
"modify" = "modify",
|
|
7
|
+
"read" = "read",
|
|
8
|
+
"none" = "none"
|
|
9
|
+
}
|
|
10
|
+
export interface IRootMapHolder {
|
|
11
|
+
rootMap: RootMap;
|
|
12
|
+
}
|
|
13
|
+
export type IPermission = {
|
|
14
|
+
enterprise: string;
|
|
15
|
+
environment: string;
|
|
16
|
+
cabinet: string;
|
|
17
|
+
role?: string;
|
|
18
|
+
privilege?: PrivilegeAbbrevsEnum;
|
|
19
|
+
} & IRootMapHolder;
|
|
20
|
+
export default class AuthCabinetAllowed extends CommandBaseExec<IPermission> {
|
|
21
|
+
static description: string;
|
|
22
|
+
static aliases: string[];
|
|
23
|
+
static examples: string[];
|
|
24
|
+
static flags: {
|
|
25
|
+
enterprise: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
26
|
+
environment: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
27
|
+
cabinet: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
28
|
+
silent: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
29
|
+
echo: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
30
|
+
"to-script": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
31
|
+
"take-defaults": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
32
|
+
};
|
|
33
|
+
static args: {};
|
|
34
|
+
protected adminOnly: boolean;
|
|
35
|
+
captureArgs(enterpriseCode: string): Promise<[AtLeast<IPermission, "enterprise">, InteractionModes | undefined, boolean]>;
|
|
36
|
+
buildCandidate_silently(partial: AtLeast<IPermission, "enterprise">, rootMap: RootMap): Promise<IPermission | undefined>;
|
|
37
|
+
buildCandidate_interactively(partial: AtLeast<IPermission, "enterprise">, rootMap: RootMap, takeDefaults: boolean): Promise<IPermission | undefined>;
|
|
38
|
+
buildCommandString(candidate: IPermission, cmd: string[]): string[];
|
|
39
|
+
executeTask(candidate: IPermission): Promise<void>;
|
|
40
|
+
private permsFrom;
|
|
41
|
+
/** constructs a "rwd" string from the given set of privileges. */
|
|
42
|
+
private toRwd;
|
|
43
|
+
private buildPermissionTree;
|
|
44
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrivilegeAbbrevsEnum = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const _ = require("lodash");
|
|
7
|
+
const render = require("../../../uilogic/render-methods");
|
|
8
|
+
const config_ui_utils_1 = require("../../../uilogic/config-ui-utils");
|
|
9
|
+
const contracts_1 = require("../../../apis/codiac-api/contracts");
|
|
10
|
+
const command_base_exec_1 = require("../../../command-base-exec");
|
|
11
|
+
var PrivilegeAbbrevsEnum;
|
|
12
|
+
(function (PrivilegeAbbrevsEnum) {
|
|
13
|
+
PrivilegeAbbrevsEnum["modify"] = "modify";
|
|
14
|
+
PrivilegeAbbrevsEnum["read"] = "read";
|
|
15
|
+
PrivilegeAbbrevsEnum["none"] = "none";
|
|
16
|
+
})(PrivilegeAbbrevsEnum = exports.PrivilegeAbbrevsEnum || (exports.PrivilegeAbbrevsEnum = {}));
|
|
17
|
+
class AuthCabinetAllowed extends command_base_exec_1.CommandBaseExec {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.adminOnly = true;
|
|
21
|
+
}
|
|
22
|
+
captureArgs(enterpriseCode) {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const { args, flags } = yield this.parse(AuthCabinetAllowed);
|
|
26
|
+
let partial = {
|
|
27
|
+
enterprise: enterpriseCode
|
|
28
|
+
};
|
|
29
|
+
if (flags.enterprise)
|
|
30
|
+
partial.enterprise = flags.enterprise;
|
|
31
|
+
if (flags.environment)
|
|
32
|
+
partial.environment = flags.environment;
|
|
33
|
+
if (flags.cabinet)
|
|
34
|
+
partial.cabinet = flags.cabinet;
|
|
35
|
+
if (flags.role)
|
|
36
|
+
partial.role = flags.role;
|
|
37
|
+
if (flags.privilege) {
|
|
38
|
+
partial.privilege = PrivilegeAbbrevsEnum[flags.privilege];
|
|
39
|
+
// switch (flags.privilege) {
|
|
40
|
+
// case PrivilegeAbbrevsEnum.modify:
|
|
41
|
+
// partial.privileges = [Privilege.Create, Privilege.Read, Privilege.Update, Privilege.Delete];
|
|
42
|
+
// break;
|
|
43
|
+
// case PrivilegeAbbrevsEnum.read:
|
|
44
|
+
// partial.privileges = [Privilege.Read];
|
|
45
|
+
// break;
|
|
46
|
+
// case PrivilegeAbbrevsEnum.none:
|
|
47
|
+
// default:
|
|
48
|
+
// partial.privileges = [];
|
|
49
|
+
// break;
|
|
50
|
+
// }
|
|
51
|
+
}
|
|
52
|
+
// ---------------------------------------------------------------
|
|
53
|
+
// TODO: move everything from here down into the base class
|
|
54
|
+
// ---------------------------------------------------------------
|
|
55
|
+
const interactionMode = (this.pipedInput) ? config_ui_utils_1.InteractionModes.silent : (_b = (_a = undefined !== null && undefined !== void 0 ? undefined : (flags.echo ? config_ui_utils_1.InteractionModes.echo : undefined)) !== null && _a !== void 0 ? _a : (flags["to-script"] ? config_ui_utils_1.InteractionModes.toscript : undefined)) !== null && _b !== void 0 ? _b : (flags.silent ? config_ui_utils_1.InteractionModes.silent : undefined);
|
|
56
|
+
const takeDefaults = flags['take-defaults'];
|
|
57
|
+
return [partial, interactionMode, takeDefaults];
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// /** Throws on invalid */
|
|
61
|
+
// private validate(partial: Partial<IAuthRoleDef>): void {
|
|
62
|
+
// if (partial.name == undefined || _.isEmpty(partial.name)) throw new Error("Missing name");
|
|
63
|
+
// let rxName = /^[a-zA-Z][a-zA-Z0-9-]{2,50}$/;
|
|
64
|
+
// if (!rxName.test(partial.name)) throw new Error("Invalid name: must be 3- to 50-character string of alphanumerics and hyphens, starting with a letter.");
|
|
65
|
+
// }
|
|
66
|
+
buildCandidate_silently(partial, rootMap) {
|
|
67
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
if (partial.enterprise == undefined || _.isEmpty(partial.enterprise))
|
|
69
|
+
throw new Error("Must specify enterprise.");
|
|
70
|
+
if (partial.environment == undefined || _.isEmpty(partial.environment))
|
|
71
|
+
throw new Error("Must specify environment.");
|
|
72
|
+
if (partial.cabinet == undefined || _.isEmpty(partial.cabinet))
|
|
73
|
+
throw new Error("Must specify cabinet.");
|
|
74
|
+
// if (partial.role == undefined || _.isEmpty(partial.role)) throw new Error("Must specify role.");
|
|
75
|
+
// if (partial.privilege == undefined || _.isEmpty(partial.privilege)) throw new Error("Must specify privilege.");
|
|
76
|
+
// if (partial.privileges == undefined) throw new Error("Must specify privileges.");
|
|
77
|
+
let candidate = {
|
|
78
|
+
enterprise: partial.enterprise,
|
|
79
|
+
environment: partial.environment,
|
|
80
|
+
cabinet: partial.cabinet,
|
|
81
|
+
rootMap: rootMap
|
|
82
|
+
};
|
|
83
|
+
if (partial.privilege)
|
|
84
|
+
candidate.privilege = partial.privilege;
|
|
85
|
+
if (partial.role)
|
|
86
|
+
candidate.role = partial.role;
|
|
87
|
+
return candidate;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
buildCandidate_interactively(partial, rootMap, takeDefaults) {
|
|
91
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
// TODO:
|
|
93
|
+
// 1) select an enterprise (if > 1)
|
|
94
|
+
// 2) select a role (render already assigned w rwx or read/modify)
|
|
95
|
+
// 3) multi-select privileges (w existing pre-selected)
|
|
96
|
+
return yield this.buildCandidate_silently(partial, rootMap);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
buildCommandString(candidate, cmd) {
|
|
100
|
+
cmd.push("--enterprise", candidate.enterprise);
|
|
101
|
+
cmd.push("--environment", candidate.environment);
|
|
102
|
+
cmd.push("--cabinet", candidate.cabinet);
|
|
103
|
+
if (candidate.role)
|
|
104
|
+
cmd.push("--role", candidate.role);
|
|
105
|
+
if (candidate.privilege)
|
|
106
|
+
cmd.push("--privilege", candidate.privilege);
|
|
107
|
+
cmd.push("--silent");
|
|
108
|
+
return cmd;
|
|
109
|
+
}
|
|
110
|
+
executeTask(candidate) {
|
|
111
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
let ent = candidate.rootMap.enterprises.find(e => e.name == candidate.enterprise);
|
|
113
|
+
if (!ent)
|
|
114
|
+
throw new Error("Enterprise not found.");
|
|
115
|
+
let env = ent.environments.find(e => e.name == candidate.environment);
|
|
116
|
+
if (!env)
|
|
117
|
+
throw new Error("Environment not found.");
|
|
118
|
+
let cab = env.cabinets.find(c => c.name == candidate.cabinet);
|
|
119
|
+
if (!cab)
|
|
120
|
+
throw new Error("Cabinet not found.");
|
|
121
|
+
// Perms on the entity
|
|
122
|
+
let perms = this.permsFrom(cab);
|
|
123
|
+
let cabTree = this.buildPermissionTree(this._styler.hilite(cab.name), perms);
|
|
124
|
+
let envTree = [{ text: env.name, children: cabTree }];
|
|
125
|
+
let entTree = [{ text: ent.name.concat(" enterprise:"), children: envTree }];
|
|
126
|
+
let output = render.renderStringTree(entTree);
|
|
127
|
+
this._ui.userMessage(output);
|
|
128
|
+
return;
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
permsFrom(entity) {
|
|
132
|
+
var _a, _b, _c;
|
|
133
|
+
let perms = {};
|
|
134
|
+
(_a = entity.readableBy) === null || _a === void 0 ? void 0 : _a.forEach(r => { if (perms[r] == undefined)
|
|
135
|
+
perms[r] = []; perms[r].push(contracts_1.Privilege.Read); });
|
|
136
|
+
(_b = entity.writeableBy) === null || _b === void 0 ? void 0 : _b.forEach(r => { if (perms[r] == undefined)
|
|
137
|
+
perms[r] = []; perms[r].push(contracts_1.Privilege.Update); });
|
|
138
|
+
(_c = entity.deleteableBy) === null || _c === void 0 ? void 0 : _c.forEach(r => { if (perms[r] == undefined)
|
|
139
|
+
perms[r] = []; perms[r].push(contracts_1.Privilege.Delete); });
|
|
140
|
+
return perms;
|
|
141
|
+
}
|
|
142
|
+
/** constructs a "rwd" string from the given set of privileges. */
|
|
143
|
+
toRwd(privs) {
|
|
144
|
+
let rwd = "";
|
|
145
|
+
if (privs.includes(contracts_1.Privilege.Read))
|
|
146
|
+
rwd = rwd.concat("r");
|
|
147
|
+
if (privs.includes(contracts_1.Privilege.Update))
|
|
148
|
+
rwd = rwd.concat("w");
|
|
149
|
+
if (privs.includes(contracts_1.Privilege.Delete))
|
|
150
|
+
rwd = rwd.concat("d");
|
|
151
|
+
return rwd;
|
|
152
|
+
}
|
|
153
|
+
buildPermissionTree(title, perms) {
|
|
154
|
+
let output = [];
|
|
155
|
+
let root = { text: title, children: [] };
|
|
156
|
+
if (_.isEmpty(perms)) {
|
|
157
|
+
root.children.push({ text: "(admin only)" });
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
for (let role in perms) {
|
|
161
|
+
root.children.push({ text: "(".concat(this._styler.hilite(this.toRwd(perms[role])), ") ", role) });
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return [root];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.default = AuthCabinetAllowed;
|
|
168
|
+
AuthCabinetAllowed.description = 'Shows permissions for each security role on the given cabinet entity.';
|
|
169
|
+
AuthCabinetAllowed.aliases = ["auth:cab:allowed"];
|
|
170
|
+
AuthCabinetAllowed.examples = [
|
|
171
|
+
'<%= config.bin %> <%= command.id %> -e dev -c spike2',
|
|
172
|
+
'<%= config.bin %> <%= command.id %> --enterprise modeling -e qa -c sprint5'
|
|
173
|
+
];
|
|
174
|
+
AuthCabinetAllowed.flags = {
|
|
175
|
+
enterprise: core_1.Flags.string({ required: false, description: 'Name of the Enterprise containing the cabinet. (Required only if more than one exists).' }),
|
|
176
|
+
environment: core_1.Flags.string({ char: 'e', required: false, description: 'Name of the Environment containing the cabinet. Required in silent mode.' }),
|
|
177
|
+
cabinet: core_1.Flags.string({ char: 'c', required: false, description: 'Name of the cabinet to view. Required in silent mode.' }),
|
|
178
|
+
// role: Flags.string({ char: 'r', required: false, description: 'Name of the Role being assigned. Required in silent mode.' }),
|
|
179
|
+
// privilege: Flags.string({ char: 'p', required: true, options: Object.keys(PrivilegeAbbrevsEnum), description: 'The permission to assign to the Role. ("modify" infers permission to create, read, update, and delete. "none" removes any permissions set for the role)' }),
|
|
180
|
+
// TODO: Move these into the base class
|
|
181
|
+
silent: core_1.Flags.boolean({ exclusive: ["echo", "to-script"], description: 'Non-Interactive mode; executes without any user interaction and fails on any missing or invalid arguments.' }),
|
|
182
|
+
echo: core_1.Flags.boolean({ exclusive: ["to-script", "silent"], description: 'Echo interaction mode; renders the equivalent non-interactive cli command for future use before final execution.' }),
|
|
183
|
+
"to-script": core_1.Flags.boolean({ exclusive: ["echo", "silent"], description: 'Toscript interaction mode; renders the equivalent non-interactive cli command WITHOUT any execution.' }),
|
|
184
|
+
"take-defaults": core_1.Flags.boolean({ exclusive: ["silent"], description: "Setting this to true prevents prompting for confirmation on parameters that were passed in or were automatically set to default values (Irrelevant in --silent mode). This behavior does NOT apply to scenarios that the command needs to override invalid user input; such cases will always prompt for confirmation. eg: when no argument was provided for file or type, and only one exists, the system will render the autoselected file unless this flag is set." })
|
|
185
|
+
};
|
|
186
|
+
AuthCabinetAllowed.args = {};
|
|
187
|
+
//# sourceMappingURL=allowed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allowed.js","sourceRoot":"","sources":["../../../../src/commands/auth/cabinet/allowed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { AtLeast } from "@codiac.io/codiac-common/contracts";
|
|
2
|
+
import { InteractionModes } from '../../../../uilogic/config-ui-utils';
|
|
3
|
+
import { Privilege, RootMap } from '../../../../apis/codiac-api/contracts';
|
|
4
|
+
import { CommandBaseExec } from '../../../../command-base-exec';
|
|
5
|
+
export declare enum PrivilegeAbbrevsEnum {
|
|
6
|
+
"modify" = "modify",
|
|
7
|
+
"read" = "read",
|
|
8
|
+
"none" = "none"
|
|
9
|
+
}
|
|
10
|
+
export interface IPermissionAssignment {
|
|
11
|
+
entityType: string;
|
|
12
|
+
entityKey: string;
|
|
13
|
+
role: string;
|
|
14
|
+
privileges: Privilege[];
|
|
15
|
+
}
|
|
16
|
+
export type IPermission = {
|
|
17
|
+
enterprise: string;
|
|
18
|
+
role: string;
|
|
19
|
+
privilege: PrivilegeAbbrevsEnum;
|
|
20
|
+
} & IPermissionAssignment;
|
|
21
|
+
export default class AuthEnterpriseAllowOnEnvironments extends CommandBaseExec<IPermission> {
|
|
22
|
+
static description: string;
|
|
23
|
+
static aliases: string[];
|
|
24
|
+
static examples: string[];
|
|
25
|
+
static flags: {
|
|
26
|
+
enterprise: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
27
|
+
role: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
28
|
+
privilege: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces/parser").CustomOptions>;
|
|
29
|
+
silent: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
30
|
+
echo: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
31
|
+
"to-script": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
32
|
+
"take-defaults": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
33
|
+
};
|
|
34
|
+
static args: {};
|
|
35
|
+
protected adminOnly: boolean;
|
|
36
|
+
captureArgs(enterpriseCode: string): Promise<[AtLeast<IPermission, "enterprise">, InteractionModes | undefined, boolean]>;
|
|
37
|
+
buildCandidate_silently(partial: AtLeast<IPermission, "enterprise">, rootMap: RootMap): Promise<IPermission | undefined>;
|
|
38
|
+
buildCandidate_interactively(partial: AtLeast<IPermission, "enterprise">, rootMap: RootMap, takeDefaults: boolean): Promise<IPermission | undefined>;
|
|
39
|
+
buildCommandString(candidate: IPermission, cmd: string[]): string[];
|
|
40
|
+
executeTask(candidate: IPermission): Promise<void>;
|
|
41
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrivilegeAbbrevsEnum = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const core_1 = require("@oclif/core");
|
|
6
|
+
const _ = require("lodash");
|
|
7
|
+
const config_ui_utils_1 = require("../../../../uilogic/config-ui-utils");
|
|
8
|
+
const contracts_1 = require("../../../../apis/codiac-api/contracts");
|
|
9
|
+
const command_base_exec_1 = require("../../../../command-base-exec");
|
|
10
|
+
var PrivilegeAbbrevsEnum;
|
|
11
|
+
(function (PrivilegeAbbrevsEnum) {
|
|
12
|
+
PrivilegeAbbrevsEnum["modify"] = "modify";
|
|
13
|
+
PrivilegeAbbrevsEnum["read"] = "read";
|
|
14
|
+
PrivilegeAbbrevsEnum["none"] = "none";
|
|
15
|
+
})(PrivilegeAbbrevsEnum = exports.PrivilegeAbbrevsEnum || (exports.PrivilegeAbbrevsEnum = {}));
|
|
16
|
+
class AuthEnterpriseAllowOnEnvironments extends command_base_exec_1.CommandBaseExec {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.adminOnly = true;
|
|
20
|
+
}
|
|
21
|
+
captureArgs(enterpriseCode) {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
const { args, flags } = yield this.parse(AuthEnterpriseAllowOnEnvironments);
|
|
25
|
+
let partial = {
|
|
26
|
+
enterprise: enterpriseCode
|
|
27
|
+
};
|
|
28
|
+
if (flags.enterprise)
|
|
29
|
+
partial.enterprise = flags.enterprise;
|
|
30
|
+
if (flags.role)
|
|
31
|
+
partial.role = flags.role;
|
|
32
|
+
if (flags.privilege) {
|
|
33
|
+
partial.privilege = PrivilegeAbbrevsEnum[flags.privilege];
|
|
34
|
+
switch (flags.privilege) {
|
|
35
|
+
case PrivilegeAbbrevsEnum.modify:
|
|
36
|
+
partial.privileges = [contracts_1.Privilege.Create, contracts_1.Privilege.Read, contracts_1.Privilege.Update, contracts_1.Privilege.Delete];
|
|
37
|
+
break;
|
|
38
|
+
case PrivilegeAbbrevsEnum.read:
|
|
39
|
+
partial.privileges = [contracts_1.Privilege.Read];
|
|
40
|
+
break;
|
|
41
|
+
case PrivilegeAbbrevsEnum.none:
|
|
42
|
+
default:
|
|
43
|
+
partial.privileges = [];
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// ---------------------------------------------------------------
|
|
48
|
+
// TODO: move everything from here down into the base class
|
|
49
|
+
// ---------------------------------------------------------------
|
|
50
|
+
const interactionMode = (this.pipedInput) ? config_ui_utils_1.InteractionModes.silent : (_b = (_a = undefined !== null && undefined !== void 0 ? undefined : (flags.echo ? config_ui_utils_1.InteractionModes.echo : undefined)) !== null && _a !== void 0 ? _a : (flags["to-script"] ? config_ui_utils_1.InteractionModes.toscript : undefined)) !== null && _b !== void 0 ? _b : (flags.silent ? config_ui_utils_1.InteractionModes.silent : undefined);
|
|
51
|
+
const takeDefaults = flags['take-defaults'];
|
|
52
|
+
return [partial, interactionMode, takeDefaults];
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
// /** Throws on invalid */
|
|
56
|
+
// private validate(partial: Partial<IAuthRoleDef>): void {
|
|
57
|
+
// if (partial.name == undefined || _.isEmpty(partial.name)) throw new Error("Missing name");
|
|
58
|
+
// let rxName = /^[a-zA-Z][a-zA-Z0-9-]{2,50}$/;
|
|
59
|
+
// if (!rxName.test(partial.name)) throw new Error("Invalid name: must be 3- to 50-character string of alphanumerics and hyphens, starting with a letter.");
|
|
60
|
+
// }
|
|
61
|
+
buildCandidate_silently(partial, rootMap) {
|
|
62
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
if (partial.enterprise == undefined || _.isEmpty(partial.enterprise))
|
|
64
|
+
throw new Error("Must specify enterprise.");
|
|
65
|
+
if (partial.role == undefined || _.isEmpty(partial.role))
|
|
66
|
+
throw new Error("Must specify role.");
|
|
67
|
+
if (partial.privilege == undefined || _.isEmpty(partial.privilege))
|
|
68
|
+
throw new Error("Must specify privilege.");
|
|
69
|
+
if (partial.privileges == undefined)
|
|
70
|
+
throw new Error("Must specify privileges.");
|
|
71
|
+
let ent = rootMap.enterprises.find(e => e.name === partial.enterprise);
|
|
72
|
+
if (ent == undefined)
|
|
73
|
+
throw new Error("Enterprise not found");
|
|
74
|
+
let candidate = {
|
|
75
|
+
/* api syntax */ entityType: "Enterprise",
|
|
76
|
+
/* api syntax */ entityKey: ent.id,
|
|
77
|
+
/* cmd arg */ enterprise: partial.enterprise,
|
|
78
|
+
/* cmd arg */ privilege: partial.privilege,
|
|
79
|
+
role: partial.role,
|
|
80
|
+
/* api syntax */ privileges: partial.privileges
|
|
81
|
+
};
|
|
82
|
+
return candidate;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
buildCandidate_interactively(partial, rootMap, takeDefaults) {
|
|
86
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
// TODO:
|
|
88
|
+
// 1) select an enterprise (if > 1)
|
|
89
|
+
// 2) select a role (render already assigned w rwx or read/modify)
|
|
90
|
+
// 3) multi-select privileges (w existing pre-selected)
|
|
91
|
+
return yield this.buildCandidate_silently(partial, rootMap);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
buildCommandString(candidate, cmd) {
|
|
95
|
+
cmd.push("--enterprise", candidate.enterprise);
|
|
96
|
+
cmd.push("--role", candidate.role);
|
|
97
|
+
cmd.push("--privilege", candidate.privilege);
|
|
98
|
+
cmd.push("--silent");
|
|
99
|
+
return cmd;
|
|
100
|
+
}
|
|
101
|
+
executeTask(candidate) {
|
|
102
|
+
var _a, _b;
|
|
103
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
// MarkStartHere("regen api client and use the auth.setDefaultChildAcl endpoint");
|
|
105
|
+
// throw new Error("Auth.setDefaultChildPermission not yet implemented on api");
|
|
106
|
+
const req = {
|
|
107
|
+
parentType: "Enterprise",
|
|
108
|
+
parentKey: candidate.entityKey,
|
|
109
|
+
dotPath: "defaultEnvironmentAcl",
|
|
110
|
+
childType: "Environment",
|
|
111
|
+
role: candidate.role,
|
|
112
|
+
privileges: candidate.privileges
|
|
113
|
+
};
|
|
114
|
+
let result = yield this._codiacApi.Auth.SetDefaultChildPermission(req);
|
|
115
|
+
if (result.error)
|
|
116
|
+
throw result.error;
|
|
117
|
+
if (result.success) {
|
|
118
|
+
this._ui.userMessage(this._styler.colorGood("Success! ").concat((_a = result.message) !== null && _a !== void 0 ? _a : "Assigned permissions."));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
this._ui.userMessage((_b = result.message) !== null && _b !== void 0 ? _b : "Failed to assign permissions (no details given, see log for details)");
|
|
122
|
+
}
|
|
123
|
+
return;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.default = AuthEnterpriseAllowOnEnvironments;
|
|
128
|
+
AuthEnterpriseAllowOnEnvironments.description = 'Sets permissions for a security Role to be applied to any new environments created within the given enterprise. Only modifies default permissions on FUTURE for new environments; DOES NOT modify permissions on any existing environments. (NOT additive: this command overwrites any existing new-environment permissions set for this role).';
|
|
129
|
+
AuthEnterpriseAllowOnEnvironments.aliases = ["auth:ent:allow:onenvs"];
|
|
130
|
+
AuthEnterpriseAllowOnEnvironments.examples = [
|
|
131
|
+
'<%= config.bin %> <%= command.id %> --enterprise main --role developer --privilege modify',
|
|
132
|
+
'<%= config.bin %> <%= command.id %> -r developer -p none',
|
|
133
|
+
'<%= config.bin %> <%= command.id %> --enterprise dyno -r productmanager -p read'
|
|
134
|
+
];
|
|
135
|
+
AuthEnterpriseAllowOnEnvironments.flags = {
|
|
136
|
+
enterprise: core_1.Flags.string({ required: false, description: 'Name of the Enterprise containing the environemnt. (Required only if more than one exists).' }),
|
|
137
|
+
role: core_1.Flags.string({ char: 'r', required: false, description: 'Name of the Role being assigned. Required in silent mode.' }),
|
|
138
|
+
privilege: core_1.Flags.string({ char: 'p', required: true, options: Object.keys(PrivilegeAbbrevsEnum), description: 'The permission to assign to the Role. ("modify" infers permission to create, read, update, and delete. "none" removes any permissions set for the role)' }),
|
|
139
|
+
// TODO: Move these into the base class
|
|
140
|
+
silent: core_1.Flags.boolean({ exclusive: ["echo", "to-script"], description: 'Non-Interactive mode; executes without any user interaction and fails on any missing or invalid arguments.' }),
|
|
141
|
+
echo: core_1.Flags.boolean({ exclusive: ["to-script", "silent"], description: 'Echo interaction mode; renders the equivalent non-interactive cli command for future use before final execution.' }),
|
|
142
|
+
"to-script": core_1.Flags.boolean({ exclusive: ["echo", "silent"], description: 'Toscript interaction mode; renders the equivalent non-interactive cli command WITHOUT any execution.' }),
|
|
143
|
+
"take-defaults": core_1.Flags.boolean({ exclusive: ["silent"], description: "Setting this to true prevents prompting for confirmation on parameters that were passed in or were automatically set to default values (Irrelevant in --silent mode). This behavior does NOT apply to scenarios that the command needs to override invalid user input; such cases will always prompt for confirmation. eg: when no argument was provided for file or type, and only one exists, the system will render the autoselected file unless this flag is set." })
|
|
144
|
+
};
|
|
145
|
+
AuthEnterpriseAllowOnEnvironments.args = {};
|
|
146
|
+
//# sourceMappingURL=onEnvironments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onEnvironments.js","sourceRoot":"","sources":["../../../../../src/commands/auth/enterprise/allow/onEnvironments.ts"],"names":[],"mappings":"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"}
|