Skip to content

Commit d31322f

Browse files
committed
fixes
1 parent 389e600 commit d31322f

9 files changed

Lines changed: 36 additions & 21 deletions

File tree

OpenFlow/src/DatabaseConnection.ts

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ export class DatabaseConnection {
9696
await this.db.dropCollection(collectionname);
9797
}
9898

99-
async CleanACL<T extends Base>(item: T): Promise<T> {
99+
async CleanACL<T extends Base>(item: T, user: TokenUser): Promise<T> {
100100
for (let i = item._acl.length - 1; i >= 0; i--) {
101101
{
102102
const ace = item._acl[i];
@@ -114,6 +114,19 @@ export class DatabaseConnection {
114114
Base.addRight(item, WellknownIds.admins, "admins", [Rights.full_control], false);
115115
this.ensureResource(item);
116116
}
117+
var addself: boolean = true;
118+
item._acl.forEach(ace => {
119+
if (ace._id == user._id) addself = false;
120+
if (addself) {
121+
user.roles.forEach(role => {
122+
if (ace._id == role._id) addself = false;
123+
});
124+
}
125+
})
126+
if (addself) {
127+
Base.addRight(item, user._id, user.name, [Rights.full_control], false);
128+
this.ensureResource(item);
129+
}
117130
return item;
118131
}
119132
async Cleanmembers<T extends Role>(item: T, original: T): Promise<T> {
@@ -658,7 +671,7 @@ export class DatabaseConnection {
658671
item._version = await this.SaveDiff(collectionname, null, item);
659672
}
660673

661-
item = await this.CleanACL(item);
674+
item = await this.CleanACL(item, user);
662675
if (item._type === "role" && collectionname === "users") {
663676
item = await this.Cleanmembers(item as any, null);
664677
}
@@ -686,25 +699,25 @@ export class DatabaseConnection {
686699
Base.addRight(item, item._id, item.name, [Rights.read, Rights.update, Rights.invoke]);
687700
const users: Role = await DBHelper.FindRoleByNameOrId("users", jwt);
688701
users.AddMember(item);
689-
item = await this.CleanACL(item);
702+
item = await this.CleanACL(item, user);
690703
await DBHelper.Save(users, Crypt.rootToken());
691-
const user: TokenUser = item as any;
704+
const user2: TokenUser = item as any;
692705
if (Config.auto_create_personal_nodered_group) {
693-
let name = user.username;
706+
let name = user2.username;
694707
name = name.split("@").join("").split(".").join("");
695708
name = name.toLowerCase();
696709

697710
const noderedadmins = await DBHelper.EnsureRole(jwt, name + "noderedadmins", null);
698-
Base.addRight(noderedadmins, user._id, user.username, [Rights.full_control]);
699-
Base.removeRight(noderedadmins, user._id, [Rights.delete]);
711+
Base.addRight(noderedadmins, user2._id, user2.username, [Rights.full_control]);
712+
Base.removeRight(noderedadmins, user2._id, [Rights.delete]);
700713
noderedadmins.AddMember(item);
701714
await DBHelper.Save(noderedadmins, Crypt.rootToken());
702715
}
703716

704717
}
705718
if (collectionname === "users" && item._type === "role") {
706719
Base.addRight(item, item._id, item.name, [Rights.read]);
707-
item = await this.CleanACL(item);
720+
item = await this.CleanACL(item, user);
708721
await this.db.collection(collectionname).replaceOne({ _id: item._id }, item);
709722
}
710723
DatabaseConnection.traversejsondecode(item);
@@ -911,9 +924,9 @@ export class DatabaseConnection {
911924
try {
912925
if (itemReplace) {
913926
if (q.collectionname != "fs.files") {
914-
q.item = await this.CleanACL(q.item);
927+
q.item = await this.CleanACL(q.item, user);
915928
} else {
916-
(q.item as any).metadata = await this.CleanACL((q.item as any).metadata);
929+
(q.item as any).metadata = await this.CleanACL((q.item as any).metadata, user);
917930
}
918931
if (q.item._type === "role" && q.collectionname === "users") {
919932
q.item = await this.Cleanmembers(q.item as any, original);

OpenFlow/src/Messages/Message.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,8 @@ export class Message {
372372
}
373373
msg.result = msg.result.filter(x => x.name != "fs.chunks");
374374
msg.result = msg.result.filter(x => x.name != "fs.files");
375+
msg.result = msg.result.filter(x => x.name != "uploads.files");
376+
msg.result = msg.result.filter(x => x.name != "uploads.chunks");
375377
const result = [];
376378
// filter out collections that are empty, or we don't have access too
377379
for (let i = 0; i < msg.result.length; i++) {

OpenFlowNodeRED/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openflow-nodered",
3-
"version": "1.1.72",
3+
"version": "1.1.73",
44
"description": "Simple wrapper around NodeRed, RabbitMQ and MongoDB to support a more scaleable NodeRed implementation.\r Also the \"backend\" for [OpenRPA](https://github.com/skadefro/OpenRPA)",
55
"main": "index.js",
66
"scripts": {

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.1.72
1+
1.1.73

docker-compose-toolbox.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ services:
4545
- "traefik.http.routers.web.rule=Host(`toolbox.openrpa.dk`)"
4646
- "traefik.http.routers.web.entrypoints=web"
4747
- "traefik.frontend.passHostHeader=true"
48-
image: "cloudhack/openflow:1.1.72"
48+
image: "cloudhack/openflow:1.1.73"
4949
container_name: "web"
5050
environment:
5151
- update_acl_based_on_groups=true
@@ -82,7 +82,7 @@ services:
8282
- "traefik.http.routers.nodered.rule=Host(`nodered1.toolbox.openrpa.dk`)"
8383
- "traefik.http.routers.nodered.entrypoints=web"
8484
- "traefik.http.services.nodered.loadbalancer.server.port=1880"
85-
image: "cloudhack/openflownodered:1.1.72"
85+
image: "cloudhack/openflownodered:1.1.73"
8686
container_name: "nodered"
8787
environment:
8888
# - nodered_id=1

docker-compose-traefik-letsencrypt.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ services:
6969
- "traefik.http.routers.web.entrypoints=web,websecure"
7070
- "traefik.frontend.passHostHeader=true"
7171
- "traefik.http.routers.web.tls.certresolver=myresolver"
72-
image: "cloudhack/openflow:1.1.72"
72+
image: "cloudhack/openflow:1.1.73"
7373
container_name: "web"
7474
environment:
7575
- update_acl_based_on_groups=true
@@ -107,7 +107,7 @@ services:
107107
- "traefik.http.routers.nodered.entrypoints=web,websecure"
108108
- "traefik.http.services.nodered.loadbalancer.server.port=1880"
109109
- "traefik.http.routers.nodered.tls.certresolver=myresolver"
110-
image: "cloudhack/openflownodered:1.1.72"
110+
image: "cloudhack/openflownodered:1.1.73"
111111
container_name: "nodered"
112112
environment:
113113
# - nodered_id=1

docker-compose-traefik.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ services:
4545
- "traefik.http.routers.web.rule=Host(`localhost.openrpa.dk`)"
4646
- "traefik.http.routers.web.entrypoints=web"
4747
- "traefik.frontend.passHostHeader=true"
48-
image: "cloudhack/openflow:1.1.72"
48+
image: "cloudhack/openflow:1.1.73"
4949
container_name: "web"
5050
environment:
5151
- update_acl_based_on_groups=true
@@ -82,7 +82,7 @@ services:
8282
- "traefik.http.routers.nodered.rule=Host(`nodered1.localhost.openrpa.dk`)"
8383
- "traefik.http.routers.nodered.entrypoints=web"
8484
- "traefik.http.services.nodered.loadbalancer.server.port=1880"
85-
image: "cloudhack/openflownodered:1.1.72"
85+
image: "cloudhack/openflownodered:1.1.73"
8686
container_name: "nodered"
8787
environment:
8888
# - nodered_id=1

docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ services:
1818
- "5672:5672"
1919
- "15672:15672"
2020
web:
21-
image: "cloudhack/openflow:1.1.72"
21+
image: "cloudhack/openflow:1.1.73"
2222
environment:
2323
- update_acl_based_on_groups=true
2424
- multi_tenant=false
@@ -52,7 +52,7 @@ services:
5252
- "80:80"
5353
- "5858:5858"
5454
nodered:
55-
image: "cloudhack/openflownodered:1.1.72"
55+
image: "cloudhack/openflownodered:1.1.73"
5656
environment:
5757
# - nodered_id=1
5858
- nodered_sa=nodered1

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openiap",
3-
"version": "1.1.72",
3+
"version": "1.1.73",
44
"description": "Simple wrapper around NodeRed, RabbitMQ and MongoDB to support a more scaleable NodeRed implementation.\r Also the \"backend\" for [OpenRPA](https://github.com/skadefro/OpenRPA)",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)