Skip to content

Commit 255393c

Browse files
committed
improve account name for nodered
1 parent 7200577 commit 255393c

7 files changed

Lines changed: 37 additions & 15 deletions

File tree

OpenFlow/src/DatabaseConnection.ts

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,11 @@ export class DatabaseConnection {
7373
for (let key in query) {
7474
if (key === "_id") {
7575
var id: string = query._id;
76-
delete query._id;
77-
query.$or = [{ _id: id }, { _id: safeObjectID(id) }];
76+
var safeid = safeObjectID(id);
77+
if (safeid !== null && safeid !== undefined) {
78+
delete query._id;
79+
query.$or = [{ _id: id }, { _id: safeObjectID(id) }];
80+
}
7881
}
7982
}
8083

@@ -98,6 +101,7 @@ export class DatabaseConnection {
98101
return value; // leave any other value as-is
99102
});
100103
}
104+
var user: TokenUser = Crypt.verityToken(jwt);
101105
var _query: Object = {};
102106
if (collectionname === "files") { collectionname = "fs.files"; }
103107
if (collectionname === "fs.files") {
@@ -124,6 +128,7 @@ export class DatabaseConnection {
124128
}
125129
for (var i: number = 0; i < arr.length; i++) { arr[i] = this.decryptentity(arr[i]); }
126130
this.traversejsondecode(arr);
131+
this._logger.debug("[" + user.username + "] query gave " + arr.length + " results " + JSON.stringify(query));
127132
return arr;
128133
}
129134
/**
@@ -346,6 +351,10 @@ export class DatabaseConnection {
346351
}
347352
}
348353
}
354+
if (q.item._acl === null || q.item._acl === undefined) {
355+
q.item._acl = original._acl;
356+
q.item._version = original._version;
357+
}
349358
q.item = this.ensureResource(q.item);
350359
this.traversejsonencode(q.item);
351360
q.item = this.encryptentity<T>(q.item);
@@ -507,6 +516,7 @@ export class DatabaseConnection {
507516
query = { _id: q.item._id };
508517
}
509518
var exists = await this.query(query, { name: 1 }, 2, 0, null, q.collectionname, q.jwt);
519+
console.log(JSON.stringify(query, null, 2));
510520
if (exists.length == 1) {
511521
q.item._id = exists[0]._id;
512522
}
@@ -515,13 +525,17 @@ export class DatabaseConnection {
515525
}
516526
var user: TokenUser = Crypt.verityToken(q.jwt);
517527
if (!this.hasAuthorization(user, q.item, "update")) { throw new Error("Access denied"); }
518-
if (q.item._id !== null && q.item._id !== undefined && q.item._id !== "") {
528+
// if (q.item._id !== null && q.item._id !== undefined && q.item._id !== "") {
529+
if (exists.length == 1) {
530+
this._logger.debug("[" + user.username + "] InsertOrUpdateOne, Updating found one in database");
519531
var uq = new UpdateOneMessage<T>();
520-
uq.query = query; uq.item = q.item; uq.collectionname = q.collectionname; uq.w = q.w; uq.j; uq.jwt = q.jwt;
532+
// uq.query = query;
533+
uq.item = q.item; uq.collectionname = q.collectionname; uq.w = q.w; uq.j; uq.jwt = q.jwt;
521534
uq = await this.UpdateOne(uq);
522535
q.opresult = uq.opresult;
523536
q.result = uq.result;
524537
} else {
538+
this._logger.debug("[" + user.username + "] InsertOrUpdateOne, Inserting as new in database");
525539
q.result = await this.InsertOne(q.item, q.collectionname, q.w, q.j, q.jwt);
526540
}
527541
return q;
@@ -803,10 +817,13 @@ export class DatabaseConnection {
803817
_skip_array.forEach(x => skip_array.push(x.trim()));
804818
if (skip_array.indexOf(q.collectionname) > -1) { return 0; }
805819
var res = await this.query<T>(q.query, null, 1, 0, null, q.collectionname, q.jwt);
820+
var name: string = "unknown";
821+
var _id: string = "";
806822
if (res.length > 0) {
807823
var _version = 1;
808824
var original = res[0];
809-
825+
name = original.name;
826+
_id = original._id;
810827
delete original._modifiedby;
811828
delete original._modifiedbyid;
812829
delete original._modified;
@@ -821,8 +838,8 @@ export class DatabaseConnection {
821838
_created: new Date(new Date().toISOString()),
822839
_createdby: user.name,
823840
_createdbyid: user._id,
824-
name: original.name,
825-
id: original._id,
841+
name: name,
842+
id: _id,
826843
update: q.item,
827844
_version: _version,
828845
reason: ""

OpenFlow/src/Messages/Message.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -537,12 +537,13 @@ export class Message {
537537
containers: [
538538
{
539539
name: 'nodered',
540-
image: 'cloudhack/openflownodered:0.0.201',
540+
image: 'cloudhack/openflownodered:0.0.202',
541541
imagePullPolicy: "Always",
542542
env: [
543543
{ name: "saml_federation_metadata", value: Config.saml_federation_metadata },
544544
{ name: "saml_issuer", value: Config.saml_issuer },
545545
{ name: "nodered_id", value: name },
546+
{ name: "nodered_sa", value: name },
546547
{ name: "api_ws_url", value: Config.api_ws_url },
547548
{ name: "amqp_url", value: Config.amqp_url },
548549
{ name: "nodered_domain_schema", value: hostname },

OpenFlowNodeRED/src/Config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import * as retry from "async-retry";
33
import { fetch, toPassportConfig } from "passport-saml-metadata";
44
export class Config {
55
public static nodered_id: string = Config.getEnv("nodered_id", "1");
6+
public static nodered_sa: string = Config.getEnv("nodered_sa", "");
67

78
public static consumer_key: string = Config.getEnv("consumer_key", "");
89
public static consumer_secret: string = Config.getEnv("consumer_secret", "");

OpenFlowNodeRED/src/index.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import { WebSocketClient } from "./WebSocketClient";
1111
import { SigninMessage, Message, TokenUser } from "./Message";
1212
import { Config } from "./Config";
1313
import { Crypt } from "./Crypt";
14+
import { stringify } from "querystring";
15+
import { NoderedUtil } from "./nodered/nodes/NoderedUtil";
1416

1517
const logger: winston.Logger = Logger.configure();
1618

@@ -45,10 +47,11 @@ function isNumeric(num) {
4547

4648
var q: SigninMessage = new SigninMessage();
4749
var user = new TokenUser();
48-
if (isNumeric(Config.nodered_id)) {
50+
console.log("nodered_id: " + Config.nodered_id + " nodered_sa: " + Config.nodered_sa);
51+
if (NoderedUtil.IsNullEmpty(Config.nodered_sa)) {
4952
user.name = "nodered" + Config.nodered_id;
5053
} else {
51-
user.name = Config.nodered_id;
54+
user.name = Config.nodered_sa;
5255
}
5356
user.username = user.name;
5457
q.jwt = Crypt.createToken(user);

OpenFlowNodeRED/src/nodered/nodes/NoderedUtil.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,10 @@ export class NoderedUtil {
148148
var user = new TokenUser();
149149
Logger.instanse.debug("GetToken::nodered_id: " + Config.nodered_id);
150150
Logger.instanse.debug("GetToken::isNumeric: " + this.isNumeric(Config.nodered_id));
151-
if (this.isNumeric(Config.nodered_id)) {
151+
if (NoderedUtil.IsNullEmpty(Config.nodered_sa)) {
152152
user.name = "nodered" + Config.nodered_id;
153153
} else {
154-
user.name = Config.nodered_id;
154+
user.name = Config.nodered_sa;
155155
}
156156
user.username = user.name;
157157
q.jwt = Crypt.createToken(user);

OpenFlowNodeRED/src/nodered/nodes/api_nodes.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,10 @@ export class api_get_jwt {
6767
} else {
6868
if (Crypt.encryption_key === "") { return NoderedUtil.HandleError(this, "root signin not allowed"); }
6969
var user = new TokenUser();
70-
if (this.isNumeric(Config.nodered_id)) {
70+
if (NoderedUtil.IsNullEmpty(Config.nodered_sa)) {
7171
user.name = "nodered" + Config.nodered_id;
7272
} else {
73-
user.name = Config.nodered_id;
73+
user.name = Config.nodered_sa;
7474
}
7575
user.username = user.name;
7676
q.jwt = Crypt.createToken(user);

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.0.201
1+
0.0.202

0 commit comments

Comments
 (0)