Skip to content

Commit c6f36b6

Browse files
committed
Add role for personal nodereds
1 parent b8006a3 commit c6f36b6

6 files changed

Lines changed: 51 additions & 35 deletions

File tree

OpenFlow/src/User.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ export class User extends Base {
6363
role = new Role(); role._id = id; role.name = name;
6464
role = await Config.db.InsertOne(role, "users", 0, false, jwt);
6565
role = Role.assign(role);
66+
role.addRight(WellknownIds.admins, "admins", [Rights.full_control]);
67+
role.removeRight(WellknownIds.admins, [Rights.delete]);
68+
role.addRight(role._id, role.name, [Rights.full_control]);
69+
role.removeRight(role._id, [Rights.delete]);
70+
await role.Save(jwt);
6671
return role;
6772
}
6873
HasRoleName(name: string): Boolean {

OpenFlow/src/base.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ export class WellknownIds {
1515
static robot_users: string = "5aef0142f3683977b0aa3dd3";
1616
static robot_admins: string = "5aef0142f3683977b0aa3dd2";
1717

18+
static personal_nodered_users: string = "5a23f18a2e8987292ddbe062";
19+
1820
}
1921
export class Rights {
2022
static create = 1;

OpenFlow/src/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ async function initDatabase(): Promise<boolean> {
3939
var admins: Role = await User.ensureRole(jwt, "admins", WellknownIds.admins);
4040
var users: Role = await User.ensureRole(jwt, "users", WellknownIds.users);
4141
var root: User = await User.ensureUser(jwt, "root", "root", WellknownIds.root, null);
42+
4243
root.addRight(WellknownIds.admins, "admins", [Rights.full_control]);
4344
root.removeRight(WellknownIds.admins, [Rights.delete]);
4445
root.addRight(WellknownIds.root, "root", [Rights.full_control]);
@@ -55,6 +56,12 @@ async function initDatabase(): Promise<boolean> {
5556
users.AddMember(root);
5657
await users.Save(jwt);
5758

59+
60+
var personal_nodered_users: Role = await User.ensureRole(jwt, "personal nodered users", WellknownIds.personal_nodered_users);
61+
personal_nodered_users.AddMember(admins);
62+
personal_nodered_users.addRight(WellknownIds.admins, "admins", [Rights.full_control]);
63+
personal_nodered_users.removeRight(WellknownIds.admins, [Rights.delete]);
64+
await personal_nodered_users.Save(jwt);
5865
var nodered_admins: Role = await User.ensureRole(jwt, "nodered admins", WellknownIds.nodered_admins);
5966
nodered_admins.AddMember(admins);
6067
nodered_admins.addRight(WellknownIds.admins, "admins", [Rights.full_control]);

OpenFlow/src/public/index.html

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,23 @@
2727
<a class="nav-link" href="#/main"><span translate lib="web">home</span> <span
2828
class="sr-only">(current)</span></a>
2929
</li>
30-
<li class="nav-item">
30+
<li class="nav-item" ng-show="menuctrl.hasrole('users')">
3131
<a class="nav-link" href="#/Entities/entities"><span translate lib="web">entities</span></a>
3232
</li>
3333
<li class="nav-item">
3434
<a class="nav-link" href="#/Workflows"><span translate lib="web">workflows</span></a>
3535
</li>
36-
<li class="nav-item">
36+
<li class="nav-item" ng-show="menuctrl.hasrole('users')">
3737
<a class="nav-link" href="#/RPAWorkflows"><span translate lib="web">RPA workflows</span></a>
3838
</li>
39-
<li class="nav-item">
39+
<li class="nav-item" ng-show="menuctrl.hasrole('users')">
4040
<a class="nav-link" href="#/Reports"><span translate lib="web">reports</span></a>
4141
</li>
42-
<li class="nav-item" ng-show="menuctrl.WebSocketClient.allow_personal_nodered == true">
42+
<li class="nav-item"
43+
ng-show="menuctrl.WebSocketClient.allow_personal_nodered == true && menuctrl.hasrole('personal nodered users')">
4344
<a class="nav-link" href="#/Nodered"><span translate lib="web">nodered</span></a>
4445
</li>
45-
<li class="nav-item dropdown">
46+
<li class="nav-item dropdown" ng-show="menuctrl.hasrole('users') || menuctrl.hasrole('admins')">
4647
<a class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"
4748
translate lib="web">admin</a>
4849
<div class="dropdown-menu">

OpenFlowNodeRED/src/Base.ts

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export class WellknownIds {
1313
static robot_users: string = "5aef0142f3683977b0aa3dd3";
1414
static robot_admins: string = "5aef0142f3683977b0aa3dd2";
1515

16+
static personal_nodered_users: string = "5a23f18a2e8987292ddbe062";
1617
}
1718
export class Rights {
1819
static create = 1;
@@ -23,20 +24,20 @@ export class Rights {
2324
static full_control = -1;
2425
}
2526
interface IBase {
26-
_id:string;
27-
_type:string;
28-
name:string;
29-
getRight(_id:string, deny:boolean):Ace;
30-
addRight(_id:string,name:string, Rights:number[],deny:boolean):void;
31-
removeRight(_id:string,Rights:number[],deny:boolean):void;
27+
_id: string;
28+
_type: string;
29+
name: string;
30+
getRight(_id: string, deny: boolean): Ace;
31+
addRight(_id: string, name: string, Rights: number[], deny: boolean): void;
32+
removeRight(_id: string, Rights: number[], deny: boolean): void;
3233
}
3334
export class Base implements IBase {
34-
_id:string;
35-
_type:string = "unknown";
36-
_acl:Ace[] = [];
37-
name:string;
38-
_name:string;
39-
_encrypt:string[] = [];
35+
_id: string;
36+
_type: string = "unknown";
37+
_acl: Ace[] = [];
38+
name: string;
39+
_name: string;
40+
_encrypt: string[] = [];
4041

4142
_createdbyid: string;
4243
_createdby: string;
@@ -53,7 +54,7 @@ export class Base implements IBase {
5354
* @param {T} o Base object
5455
* @returns T New object as Type
5556
*/
56-
static assign<T>(o:T): T {
57+
static assign<T>(o: T): T {
5758
return Object.assign(new Base(), o);
5859
}
5960
/**
@@ -62,16 +63,16 @@ export class Base implements IBase {
6263
* @param {boolean=false} deny look for deny or allow permission
6364
* @returns Ace Ace if found, else null
6465
*/
65-
getRight(_id:string, deny:boolean=false):Ace {
66-
var result:Ace = null;
67-
if(!this._acl) { this._acl = []; }
66+
getRight(_id: string, deny: boolean = false): Ace {
67+
var result: Ace = null;
68+
if (!this._acl) { this._acl = []; }
6869
this._acl.forEach((a, index) => {
69-
if(a._id===_id && a.deny===deny) {
70+
if (a._id === _id && a.deny === deny) {
7071
this._acl[index] = Ace.assign(a);
7172
result = this._acl[index];
7273
}
7374
});
74-
if(result) {
75+
if (result) {
7576
result = Ace.assign(result);
7677
}
7778
return result;
@@ -81,10 +82,10 @@ export class Base implements IBase {
8182
* @param {Ace} x
8283
* @returns void
8384
*/
84-
setRight(x:Ace): void {
85-
if(!this._acl) { this._acl = []; }
85+
setRight(x: Ace): void {
86+
if (!this._acl) { this._acl = []; }
8687
this._acl.forEach((a, index) => {
87-
if(a._id===x._id && a.deny===x.deny) {
88+
if (a._id === x._id && a.deny === x.deny) {
8889
this._acl[index] = x;
8990
}
9091
});
@@ -97,10 +98,10 @@ export class Base implements IBase {
9798
* @param {boolean=false} deny Deny the right
9899
* @returns void
99100
*/
100-
addRight(_id:string,name:string, rights:number[],deny:boolean=false):void {
101-
var right:Ace = this.getRight(_id, deny);
102-
if(!right) { right = new Ace(); this._acl.push(right); }
103-
right.deny = deny;right._id = _id; right.name = name;
101+
addRight(_id: string, name: string, rights: number[], deny: boolean = false): void {
102+
var right: Ace = this.getRight(_id, deny);
103+
if (!right) { right = new Ace(); this._acl.push(right); }
104+
right.deny = deny; right._id = _id; right.name = name;
104105
rights.forEach(bit => {
105106
right.setBit(bit);
106107
});
@@ -113,10 +114,10 @@ export class Base implements IBase {
113114
* @param {boolean=false} deny Deny right
114115
* @returns void
115116
*/
116-
removeRight(_id:string,rights:number[]=null,deny:boolean=false): void {
117-
if(!this._acl) { this._acl = []; }
118-
var right:Ace = this.getRight(_id, deny);
119-
if(!right) { return; }
117+
removeRight(_id: string, rights: number[] = null, deny: boolean = false): void {
118+
if (!this._acl) { this._acl = []; }
119+
var right: Ace = this.getRight(_id, deny);
120+
if (!right) { return; }
120121
rights.forEach(bit => {
121122
right.unsetBit(bit);
122123
});

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.0.324
1+
0.0.325

0 commit comments

Comments
 (0)