Skip to content
6 changes: 5 additions & 1 deletion acs-auth/dump-schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,8 @@ oneOf:
- type: "null"
- type: object
propertyNames: { format: uuid }
additionalProperties: { type: boolean }
additionalProperties:
oneOf:
- type: boolean
- type: string
enum: ["both"]
2 changes: 1 addition & 1 deletion acs-auth/lib/dump-schema.js

Large diffs are not rendered by default.

12 changes: 10 additions & 2 deletions acs-auth/lib/loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,16 @@ export class Loader {
.map(([p, t]) => [p, t ?? { [Special.Wildcard]: false }])
.flatMap(([permission, targs]) =>
Object.entries(targs)
.flatMap(([target, plural]) =>
({ principal, permission, target, plural }))));
.flatMap(([target, plural]) => {
if (plural === "both"){
return [
{ principal, permission, target, plural: true },
{ principal, permission, target, plural: false }
];
}
return { principal, permission, target, plural };
})
));
const permitted = {
acl: await data.check_targ(req.auth, Perm.WriteACL, true),
id: await data.check_targ(req.auth, Perm.WriteACL, true),
Expand Down
164 changes: 164 additions & 0 deletions acs-service-setup/dumps/data-access.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@

service: !u UUIDs.Service.ConfigDB
version: 2
objects:

!u UUIDs.Class.Service:
!u DataAccess.Service.DataAccess:
name: "Data Access service"

!u Auth.Class.ServiceRole:
!u DataAccess.Requirement.ServiceRole:
name: "Data Access service role"
subclassOf:
- !u Auth.Class.CentralService

!u ConfigDB.Class.R3Class:
!u DataAccess.Group.DatasetGroup:
name: "Dataset group"
!u DataAccess.Group.DatasetRoleGroup:
name: "Dataset role"
subclassOf:
- !u DataAccess.Group.DatasetGroup
!u DataAccess.Group.StructuralDatasetType:
name: "Structural dataset type"
subclassOf:
- !u DataAccess.Group.DatasetGroup
!u DataAccess.Group.FunctionalDatasetGroup:
name: "Functional dataset group"
subclassOf:
- !u DataAccess.Group.DatasetGroup

!u DataAccess.Group.DatasetGroup:
!u DataAccess.Class.Dataset:
name: "Dataset"

!u DataAccess.Group.StructuralDatasetType:
!u DataAccess.Class.Sparkplug:
name: "Sparkplug dataset"
subclassOf:
- !u DataAccess.Class.Dataset
!u DataAccess.Class.Session:
name: "Session dataset"
subclassOf:
- !u DataAccess.Class.Dataset
!u DataAccess.Class.Union:
name: "Union dataset"
subclassOf:
- !u DataAccess.Class.Dataset


!u DataAccess.Group.FunctionalDatasetGroup:
!u DataAccess.Class.Published:
name: "Published dataset"
subclassOf:
- !u DataAccess.Class.Dataset
!u DataAccess.Class.Partial:
name: "Partial dataset"
subclassOf:
- !u DataAccess.Class.Dataset
!u DataAccess.Class.MESDataset:
name: "MES dataset"
subclassOf:
- !u DataAccess.Class.Dataset
!u DataAccess.Class.Equipment:
name: "MES equipment"
subclassOf:
- !u DataAccess.Class.MESDataset
!u DataAccess.Class.WorkOrder:
name: "MES work order"
subclassOf:
- !u DataAccess.Class.MESDataset
!u DataAccess.Class.Product:
name: "MES product"
subclassOf:
- !u DataAccess.Class.MESDataset
!u DataAccess.Class.Operation:
name: "MES operation"
subclassOf:
- !u DataAccess.Class.MESDataset

!u ConfigDB.Class.R1Class:
!u DataAccess.Class.Measurement:
name: "Measurement"
!u DataAccess.Class.MES:
name: "MES"

!u DataAccess.App.DatasetDefinition:
name: "Dataset definition"
subclassOf:
- !u UUIDs.Class.App
!u DataAccess.App.DatasetMetadata:
name: "Dataset metadata"
subclassOf:
- !u UUIDs.Class.App

!u DataAccess.App.DatasetDefinition:
!u DataAccess.App.SparkplugSrc:
name: "Sparkplug source"
!u DataAccess.App.UnionComponents:
name: "Union components"
!u DataAccess.App.SessionLimits:
name: "Session limits"

!u DataAccess.App.DatasetMetadata:
!u DataAccess.App.MESIdentifiers:
name: "MES identifiers"

!u UUIDs.Class.Special:
!u DataAccess.Special.InvalidDataset:
name: "Structurally invalid dataset"

# Permissions
!u Auth.Class.ServicePerms:
!u DataAccess.Perm.All:
name: "Data Access permission"
subclassOf:
- !u Auth.Class.Permission

!u DataAccess.Perm.All:
!u DataAccess.Perm.CreateDataset:
name: "Create dataset"
!u DataAccess.Perm.IncludeInUnion:
name: "Include in union"
!u DataAccess.Perm.ReadDataset:
name: "Read dataset"
!u DataAccess.Perm.UseForSession:
name: "Use for session"
!u DataAccess.Perm.EditDataset:
name: "Edit dataset"
!u DataAccess.Perm.UseSparkplug:
name: "Use Sparkplug data"


---
service: !u UUIDs.Service.Authentication
version: 2
grants:
!u DataAccess.Requirement.ServiceRole:
!u UUIDs.Permission.Directory.AdvertiseService:
!u DataAccess.Service.DataAccess: false
!u UUIDs.Permission.Auth.ReadACL:
!u DataAccess.Perm.All: true
!u UUIDs.Permission.ConfigDB.ReadConfig:
!u DataAccess.App.DatasetDefinition: true
!u DataAccess.App.DatasetMetadata: true
!u UUIDs.Permission.ConfigDB.WriteConfig:
!u DataAccess.App.DatasetDefinition: true
!u ConfigDB.Perm.CreateObject:
!u DataAccess.Group.StructuralDatasetType: true
!u ConfigDB.Perm.ReadMembers:
!u DataAccess.App.DatasetDefinition: false
!u DataAccess.App.DatasetMetadata: false
!u DataAccess.Group.StructuralDatasetType: "both"
!u DataAccess.Group.FunctionalDatasetGroup: "both"
!u ConfigDB.Perm.WriteMembers:
!u DataAccess.Group.StructuralDatasetType: true
!u ConfigDB.Perm.WriteMemberships:
!u DataAccess.Class.Dataset: true
!u ConfigDB.Perm.WriteSubclasses:
!u DataAccess.Class.Dataset: true
!u ConfigDB.Perm.WriteSuperclasses:
!u DataAccess.Class.Dataset: true


57 changes: 57 additions & 0 deletions acs-service-setup/lib/uuids.js
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,62 @@ export const Git = {
},
};

export const DataAccess = {
App: {
DatasetDefinition: "eae2d4ae-164d-4dc6-b646-7e0320057bd9",
DatasetMetadata: "e3b9fd2c-9de1-470b-9675-739e2a55b77f",
SparkplugSrc: "f5d550c4-2831-11f1-b0b0-83fda3035799",
UnionComponents: "1c4ca454-de38-44d9-92fb-aa5218bfa257",
SessionLimits: "8754c000-3778-4ae6-b2b8-bbcd959bb775",
MESIdentifiers: "af178f0c-3b1e-44f2-9724-5cf06e8fd056",
},

Class: {
Measurement: "cce0ac4e-b5ba-4837-b45d-c74df55aa2d7",
Dataset: "c31d3cbd-01cd-4833-8014-c4512aef1e5c",
Sparkplug: "8d25845e-2831-11f1-ad53-3be499ddf442",
Session: "2f555be8-e7fc-4fb0-b62f-809cefd8a141",
Union: "c57a42a9-348c-4972-a05b-9082c20f2afc",
Published: "414d2d10-6be8-4c27-8e9f-c716ef5432b9",
Partial: "6c583d11-9a88-4bc1-b77c-81b01e9c9827",
MESDataset: "586205bf-81c6-4091-9d2c-f3c0465ebdc4",
Equipment: "4c93ddc1-e610-4efe-91e3-a355f9ba1a09",
WorkOrder: "b416e44c-c57e-4486-9431-64c425f1b2c6",
Product: "4a089748-b26b-4f12-8f1a-164bfba97809",
Operation: "bd0354eb-b8f7-4bd9-8407-0588e545603c",
MES: "2c691583-89fe-4421-bf2c-64e34e663711"
},

Group: {
DatasetGroup: "17e37253-8626-4031-b217-28c6a03e91c1",
DatasetRoleGroup: "56c52f70-0649-4962-8526-9ec9d1c85ca4",
StructuralDatasetType: "70ff7bea-bb2d-48c2-88fd-4f7a79b1aa3c",
FunctionalDatasetGroup: "86e5b048-e956-4820-939e-3abf3eda4e03",
},

Service: {
DataAccess: "06cee697-29d3-4972-9479-bc392e24946e"
},

Special: {
InvalidDataset: "696396a0-2831-11f1-9b12-33d63b8c5115",
},

Requirement: {
ServiceRole: "dd18050c-a9ab-4287-8af2-e983f20e89c8"
},

Perm: {
All: "1e3cb5aa-a3f7-4bb6-9ef1-c3bc08427f60",
CreateDataset: "2d666b41-7a0d-4845-ad59-3113f25b469a",
IncludeInUnion: "94d51085-af83-4796-8059-fcd578e3f572",
ReadDataset: "ec48462e-37eb-4f56-8efa-83d813e85559",
UseForSession: "c089b9a9-06cd-4211-94fc-9ad52a759987",
EditDataset: "af06b9e5-456a-43e4-b636-5b17de28fc7f",
UseSparkplug: "788b049c-2831-11f1-99fd-2b0bf86d6f77",
}
}

export const UNS = {
Group: {
Sparkplug: "e414d355-b991-429b-8f5d-97e823ff71f5",
Expand All @@ -434,3 +490,4 @@ export const UNS = {
ReadEntireUNS: "ffa40b36-3a61-4545-832a-2d1e8b860d63",
},
};

1 change: 1 addition & 0 deletions lib/js-service-client/lib/uuids.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ export const Service = {
Clusters: "2706aa43-a826-441e-9cec-cd3d4ce623c2",
Manager: "619eecab-742d-4824-8b97-bcae472e5c04",
Files: 'a2a6efc5-9793-4486-9fd9-7caf9e3b5451',
DataAccess: "06cee697-29d3-4972-9479-bc392e24946e"
};

/* This list is not meant to be exhaustive, but these are commonly used
Expand Down
Loading