Files
factorio-scenario-ExpCluster/exp_groups/index.ts
2024-11-19 21:51:13 +00:00

85 lines
2.2 KiB
TypeScript

import * as lib from "@clusterio/lib";
import * as Messages from "./messages";
lib.definePermission({
name: "exp_groups.create_delete_groups",
title: "Create and delete permission groups",
description: "Create and delete permission groups.",
});
lib.definePermission({
name: "exp_groups.reorder_groups",
title: "Reorder permission groups",
description: "Reorder groups and link them to user roles.",
});
lib.definePermission({
name: "exp_groups.modify_permissions",
title: "Modify permission groups",
description: "Modify game permissions for groups.",
});
lib.definePermission({
name: "exp_groups.assign_players",
title: "Change player group",
description: "Change the permission group of a player",
});
lib.definePermission({
name: "exp_groups.list",
title: "View permission groups",
description: "View permission groups.",
});
lib.definePermission({
name: "exp_groups.list.subscribe",
title: "Subscribe to permission group updates",
description: "Subscribe to permission group updates.",
});
declare module "@clusterio/lib" {
export interface ControllerConfigFields {
"exp_groups.allow_role_inconsistency": boolean;
}
export interface InstanceConfigFields {
"exp_groups.sync_permission_groups": boolean;
}
}
export const plugin: lib.PluginDeclaration = {
name: "exp_groups",
title: "exp_groups",
description: "Create, modify, and link factorio permission groups to clusterio user roles.",
controllerEntrypoint: "./dist/node/controller",
controllerConfigFields: {
"exp_groups.allow_role_inconsistency": {
title: "Allow User Role Inconsistency",
description: "When true, users can be assgined to any group regardless of their roles",
type: "boolean",
initialValue: false,
},
},
instanceEntrypoint: "./dist/node/instance",
instanceConfigFields: {
"exp_groups.sync_permission_groups": {
title: "Sync Permission Groups",
description: "When true, the instance cannot deviate from the global group settings and will be hidden from the sellection dropdown.",
type: "boolean",
initialValue: true,
},
},
messages: [
Messages.PermissionGroupEditEvent,
Messages.PermissionStringsUpdate,
Messages.PermissionGroupUpdate,
],
webEntrypoint: "./web",
routes: [
"/exp_groups",
],
};