@objectstack/plugin-security 6.5.1 → 6.6.0

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/dist/index.d.mts CHANGED
@@ -1017,6 +1017,88 @@ declare const securityObjects: ((Omit<{
1017
1017
  readonly displayNameField: "label";
1018
1018
  readonly titleFormat: "{label}";
1019
1019
  readonly compactLayout: ["label", "name", "active", "is_default"];
1020
+ readonly actions: [{
1021
+ readonly name: "activate_role";
1022
+ readonly label: "Activate Role";
1023
+ readonly icon: "circle-check";
1024
+ readonly variant: "secondary";
1025
+ readonly mode: "custom";
1026
+ readonly locations: ["list_item", "record_header"];
1027
+ readonly type: "api";
1028
+ readonly method: "PATCH";
1029
+ readonly target: "/api/v1/data/sys_role/{id}";
1030
+ readonly bodyExtra: {
1031
+ readonly active: true;
1032
+ };
1033
+ readonly successMessage: "Role activated";
1034
+ readonly refreshAfter: true;
1035
+ }, {
1036
+ readonly name: "deactivate_role";
1037
+ readonly label: "Deactivate Role";
1038
+ readonly icon: "circle-off";
1039
+ readonly variant: "danger";
1040
+ readonly mode: "custom";
1041
+ readonly locations: ["list_item", "record_header"];
1042
+ readonly type: "api";
1043
+ readonly method: "PATCH";
1044
+ readonly target: "/api/v1/data/sys_role/{id}";
1045
+ readonly bodyExtra: {
1046
+ readonly active: false;
1047
+ };
1048
+ readonly confirmText: "Deactivate this role? Users with the role keep their assignment but the role stops granting permissions until re-activated.";
1049
+ readonly successMessage: "Role deactivated";
1050
+ readonly refreshAfter: true;
1051
+ }, {
1052
+ readonly name: "set_default_role";
1053
+ readonly label: "Set as Default";
1054
+ readonly icon: "star";
1055
+ readonly variant: "secondary";
1056
+ readonly mode: "custom";
1057
+ readonly locations: ["list_item", "record_header"];
1058
+ readonly type: "api";
1059
+ readonly method: "PATCH";
1060
+ readonly target: "/api/v1/data/sys_role/{id}";
1061
+ readonly bodyExtra: {
1062
+ readonly is_default: true;
1063
+ };
1064
+ readonly confirmText: "Make this the default role for new users? Existing users are unaffected.";
1065
+ readonly successMessage: "Default role updated";
1066
+ readonly refreshAfter: true;
1067
+ }, {
1068
+ readonly name: "clone_role";
1069
+ readonly label: "Clone Role";
1070
+ readonly icon: "copy";
1071
+ readonly variant: "secondary";
1072
+ readonly mode: "custom";
1073
+ readonly locations: ["list_item", "record_header"];
1074
+ readonly type: "api";
1075
+ readonly method: "POST";
1076
+ readonly target: "/api/v1/data/sys_role";
1077
+ readonly bodyExtra: {
1078
+ readonly is_default: false;
1079
+ readonly active: true;
1080
+ };
1081
+ readonly successMessage: "Role cloned";
1082
+ readonly refreshAfter: true;
1083
+ readonly params: [{
1084
+ readonly name: "label";
1085
+ readonly label: "New Display Name";
1086
+ readonly type: "text";
1087
+ readonly required: true;
1088
+ }, {
1089
+ readonly name: "name";
1090
+ readonly label: "New API Name";
1091
+ readonly type: "text";
1092
+ readonly required: true;
1093
+ readonly helpText: "Unique snake_case machine name";
1094
+ }, {
1095
+ readonly field: "description";
1096
+ readonly defaultFromRow: true;
1097
+ }, {
1098
+ readonly field: "permissions";
1099
+ readonly defaultFromRow: true;
1100
+ }];
1101
+ }];
1020
1102
  readonly listViews: {
1021
1103
  readonly active: {
1022
1104
  readonly type: "grid";
@@ -3370,6 +3452,74 @@ declare const securityObjects: ((Omit<{
3370
3452
  readonly displayNameField: "label";
3371
3453
  readonly titleFormat: "{label}";
3372
3454
  readonly compactLayout: ["label", "name", "active"];
3455
+ readonly actions: [{
3456
+ readonly name: "activate_permission_set";
3457
+ readonly label: "Activate";
3458
+ readonly icon: "circle-check";
3459
+ readonly variant: "secondary";
3460
+ readonly mode: "custom";
3461
+ readonly locations: ["list_item", "record_header"];
3462
+ readonly type: "api";
3463
+ readonly method: "PATCH";
3464
+ readonly target: "/api/v1/data/sys_permission_set/{id}";
3465
+ readonly bodyExtra: {
3466
+ readonly active: true;
3467
+ };
3468
+ readonly successMessage: "Permission set activated";
3469
+ readonly refreshAfter: true;
3470
+ }, {
3471
+ readonly name: "deactivate_permission_set";
3472
+ readonly label: "Deactivate";
3473
+ readonly icon: "circle-off";
3474
+ readonly variant: "danger";
3475
+ readonly mode: "custom";
3476
+ readonly locations: ["list_item", "record_header"];
3477
+ readonly type: "api";
3478
+ readonly method: "PATCH";
3479
+ readonly target: "/api/v1/data/sys_permission_set/{id}";
3480
+ readonly bodyExtra: {
3481
+ readonly active: false;
3482
+ };
3483
+ readonly confirmText: "Deactivate this permission set? Existing assignments stay in place but stop granting access until re-activated.";
3484
+ readonly successMessage: "Permission set deactivated";
3485
+ readonly refreshAfter: true;
3486
+ }, {
3487
+ readonly name: "clone_permission_set";
3488
+ readonly label: "Clone";
3489
+ readonly icon: "copy";
3490
+ readonly variant: "secondary";
3491
+ readonly mode: "custom";
3492
+ readonly locations: ["list_item", "record_header"];
3493
+ readonly type: "api";
3494
+ readonly method: "POST";
3495
+ readonly target: "/api/v1/data/sys_permission_set";
3496
+ readonly bodyExtra: {
3497
+ readonly active: true;
3498
+ };
3499
+ readonly successMessage: "Permission set cloned";
3500
+ readonly refreshAfter: true;
3501
+ readonly params: [{
3502
+ readonly name: "label";
3503
+ readonly label: "New Display Name";
3504
+ readonly type: "text";
3505
+ readonly required: true;
3506
+ }, {
3507
+ readonly name: "name";
3508
+ readonly label: "New API Name";
3509
+ readonly type: "text";
3510
+ readonly required: true;
3511
+ readonly helpText: "Unique snake_case machine name";
3512
+ }, {
3513
+ readonly field: "description";
3514
+ readonly defaultFromRow: true;
3515
+ }, {
3516
+ readonly field: "object_permissions";
3517
+ readonly defaultFromRow: true;
3518
+ }, {
3519
+ readonly field: "field_permissions";
3520
+ readonly defaultFromRow: true;
3521
+ }];
3522
+ }];
3373
3523
  readonly listViews: {
3374
3524
  readonly active: {
3375
3525
  readonly type: "grid";
package/dist/index.d.ts CHANGED
@@ -1017,6 +1017,88 @@ declare const securityObjects: ((Omit<{
1017
1017
  readonly displayNameField: "label";
1018
1018
  readonly titleFormat: "{label}";
1019
1019
  readonly compactLayout: ["label", "name", "active", "is_default"];
1020
+ readonly actions: [{
1021
+ readonly name: "activate_role";
1022
+ readonly label: "Activate Role";
1023
+ readonly icon: "circle-check";
1024
+ readonly variant: "secondary";
1025
+ readonly mode: "custom";
1026
+ readonly locations: ["list_item", "record_header"];
1027
+ readonly type: "api";
1028
+ readonly method: "PATCH";
1029
+ readonly target: "/api/v1/data/sys_role/{id}";
1030
+ readonly bodyExtra: {
1031
+ readonly active: true;
1032
+ };
1033
+ readonly successMessage: "Role activated";
1034
+ readonly refreshAfter: true;
1035
+ }, {
1036
+ readonly name: "deactivate_role";
1037
+ readonly label: "Deactivate Role";
1038
+ readonly icon: "circle-off";
1039
+ readonly variant: "danger";
1040
+ readonly mode: "custom";
1041
+ readonly locations: ["list_item", "record_header"];
1042
+ readonly type: "api";
1043
+ readonly method: "PATCH";
1044
+ readonly target: "/api/v1/data/sys_role/{id}";
1045
+ readonly bodyExtra: {
1046
+ readonly active: false;
1047
+ };
1048
+ readonly confirmText: "Deactivate this role? Users with the role keep their assignment but the role stops granting permissions until re-activated.";
1049
+ readonly successMessage: "Role deactivated";
1050
+ readonly refreshAfter: true;
1051
+ }, {
1052
+ readonly name: "set_default_role";
1053
+ readonly label: "Set as Default";
1054
+ readonly icon: "star";
1055
+ readonly variant: "secondary";
1056
+ readonly mode: "custom";
1057
+ readonly locations: ["list_item", "record_header"];
1058
+ readonly type: "api";
1059
+ readonly method: "PATCH";
1060
+ readonly target: "/api/v1/data/sys_role/{id}";
1061
+ readonly bodyExtra: {
1062
+ readonly is_default: true;
1063
+ };
1064
+ readonly confirmText: "Make this the default role for new users? Existing users are unaffected.";
1065
+ readonly successMessage: "Default role updated";
1066
+ readonly refreshAfter: true;
1067
+ }, {
1068
+ readonly name: "clone_role";
1069
+ readonly label: "Clone Role";
1070
+ readonly icon: "copy";
1071
+ readonly variant: "secondary";
1072
+ readonly mode: "custom";
1073
+ readonly locations: ["list_item", "record_header"];
1074
+ readonly type: "api";
1075
+ readonly method: "POST";
1076
+ readonly target: "/api/v1/data/sys_role";
1077
+ readonly bodyExtra: {
1078
+ readonly is_default: false;
1079
+ readonly active: true;
1080
+ };
1081
+ readonly successMessage: "Role cloned";
1082
+ readonly refreshAfter: true;
1083
+ readonly params: [{
1084
+ readonly name: "label";
1085
+ readonly label: "New Display Name";
1086
+ readonly type: "text";
1087
+ readonly required: true;
1088
+ }, {
1089
+ readonly name: "name";
1090
+ readonly label: "New API Name";
1091
+ readonly type: "text";
1092
+ readonly required: true;
1093
+ readonly helpText: "Unique snake_case machine name";
1094
+ }, {
1095
+ readonly field: "description";
1096
+ readonly defaultFromRow: true;
1097
+ }, {
1098
+ readonly field: "permissions";
1099
+ readonly defaultFromRow: true;
1100
+ }];
1101
+ }];
1020
1102
  readonly listViews: {
1021
1103
  readonly active: {
1022
1104
  readonly type: "grid";
@@ -3370,6 +3452,74 @@ declare const securityObjects: ((Omit<{
3370
3452
  readonly displayNameField: "label";
3371
3453
  readonly titleFormat: "{label}";
3372
3454
  readonly compactLayout: ["label", "name", "active"];
3455
+ readonly actions: [{
3456
+ readonly name: "activate_permission_set";
3457
+ readonly label: "Activate";
3458
+ readonly icon: "circle-check";
3459
+ readonly variant: "secondary";
3460
+ readonly mode: "custom";
3461
+ readonly locations: ["list_item", "record_header"];
3462
+ readonly type: "api";
3463
+ readonly method: "PATCH";
3464
+ readonly target: "/api/v1/data/sys_permission_set/{id}";
3465
+ readonly bodyExtra: {
3466
+ readonly active: true;
3467
+ };
3468
+ readonly successMessage: "Permission set activated";
3469
+ readonly refreshAfter: true;
3470
+ }, {
3471
+ readonly name: "deactivate_permission_set";
3472
+ readonly label: "Deactivate";
3473
+ readonly icon: "circle-off";
3474
+ readonly variant: "danger";
3475
+ readonly mode: "custom";
3476
+ readonly locations: ["list_item", "record_header"];
3477
+ readonly type: "api";
3478
+ readonly method: "PATCH";
3479
+ readonly target: "/api/v1/data/sys_permission_set/{id}";
3480
+ readonly bodyExtra: {
3481
+ readonly active: false;
3482
+ };
3483
+ readonly confirmText: "Deactivate this permission set? Existing assignments stay in place but stop granting access until re-activated.";
3484
+ readonly successMessage: "Permission set deactivated";
3485
+ readonly refreshAfter: true;
3486
+ }, {
3487
+ readonly name: "clone_permission_set";
3488
+ readonly label: "Clone";
3489
+ readonly icon: "copy";
3490
+ readonly variant: "secondary";
3491
+ readonly mode: "custom";
3492
+ readonly locations: ["list_item", "record_header"];
3493
+ readonly type: "api";
3494
+ readonly method: "POST";
3495
+ readonly target: "/api/v1/data/sys_permission_set";
3496
+ readonly bodyExtra: {
3497
+ readonly active: true;
3498
+ };
3499
+ readonly successMessage: "Permission set cloned";
3500
+ readonly refreshAfter: true;
3501
+ readonly params: [{
3502
+ readonly name: "label";
3503
+ readonly label: "New Display Name";
3504
+ readonly type: "text";
3505
+ readonly required: true;
3506
+ }, {
3507
+ readonly name: "name";
3508
+ readonly label: "New API Name";
3509
+ readonly type: "text";
3510
+ readonly required: true;
3511
+ readonly helpText: "Unique snake_case machine name";
3512
+ }, {
3513
+ readonly field: "description";
3514
+ readonly defaultFromRow: true;
3515
+ }, {
3516
+ readonly field: "object_permissions";
3517
+ readonly defaultFromRow: true;
3518
+ }, {
3519
+ readonly field: "field_permissions";
3520
+ readonly defaultFromRow: true;
3521
+ }];
3522
+ }];
3373
3523
  readonly listViews: {
3374
3524
  readonly active: {
3375
3525
  readonly type: "grid";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/plugin-security",
3
- "version": "6.5.1",
3
+ "version": "6.6.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Security Plugin for ObjectStack — RBAC, RLS, and Field-Level Security Runtime",
6
6
  "main": "dist/index.js",
@@ -13,9 +13,9 @@
13
13
  }
14
14
  },
15
15
  "dependencies": {
16
- "@objectstack/core": "6.5.1",
17
- "@objectstack/platform-objects": "6.5.1",
18
- "@objectstack/spec": "6.5.1"
16
+ "@objectstack/core": "6.6.0",
17
+ "@objectstack/platform-objects": "6.6.0",
18
+ "@objectstack/spec": "6.6.0"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@types/node": "^25.9.1",