-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAcl.cs
41 lines (34 loc) · 1.3 KB
/
Acl.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ABB.Vtrin;
namespace CalcEngineTutorialSetup
{
class Acl
{
static public void CreateAcl(string objectName, string objectRef)
{
var aclCache = Context.Driver.Classes["UIAccessControlListEntry"].Instances;
var aclEntrySet = Context.Driver.Classes["UIAccessControlListEntry"].Instances.GetInstanceSet($"Object LIKE '{objectName}'");
var aclEntry = aclEntrySet.Length > 0 ? aclEntrySet[0]?.BeginUpdate() : null;
if (aclEntry == null)
{
aclEntry = aclCache.Add();
}
aclEntry.SetRawPropertyValue("ObjectRef", objectRef);
aclEntry["GroupOrUserName"] = Context.Group;
aclEntry.SetRawPropertyValue("Allow", cDbPermissions.Read | cDbPermissions.Write | cDbPermissions.Execute);
aclEntry.CommitChanges();
}
static public void RemoveAclEntries(string objectLike)
{
var aclEntries = Context.Driver.Classes["UIAccessControlListEntry"].Instances.GetInstanceSet($"Object LIKE '{objectLike}'");
foreach (var aclEntry in aclEntries)
{
aclEntry.Remove();
}
}
}
}