@budibase/backend-core 2.7.35 → 2.7.36-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jest.config.js +1 -0
- package/dist/jest.config.js.map +1 -1
- package/dist/package.json +4 -4
- package/dist/src/db/Replication.js +3 -0
- package/dist/src/db/Replication.js.map +1 -1
- package/dist/src/docIds/ids.d.ts +5 -1
- package/dist/src/docIds/ids.js +14 -3
- package/dist/src/docIds/ids.js.map +1 -1
- package/dist/src/events/publishers/serve.d.ts +1 -1
- package/dist/src/events/publishers/serve.js +2 -1
- package/dist/src/events/publishers/serve.js.map +1 -1
- package/dist/src/middleware/passport/datasource/google.d.ts +3 -3
- package/dist/src/middleware/passport/datasource/google.js +12 -25
- package/dist/src/middleware/passport/datasource/google.js.map +1 -1
- package/dist/src/security/encryption.d.ts +8 -0
- package/dist/src/security/encryption.js +107 -5
- package/dist/src/security/encryption.js.map +1 -1
- package/dist/src/security/roles.d.ts +11 -3
- package/dist/src/security/roles.js +29 -11
- package/dist/src/security/roles.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/jest.config.ts +2 -0
- package/package.json +4 -4
- package/src/db/Replication.ts +3 -0
- package/src/docIds/ids.ts +13 -2
- package/src/events/publishers/serve.ts +6 -1
- package/src/middleware/passport/datasource/google.ts +20 -26
- package/src/security/encryption.ts +121 -4
- package/src/security/roles.ts +38 -11
package/dist/jest.config.js
CHANGED
package/dist/jest.config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../jest.config.ts"],"names":[],"mappings":";;AACA,MAAM,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;AAE7C,MAAM,UAAU,mCACX,MAAM,KACT,MAAM,EAAE,+BAA+B,EACvC,UAAU,EAAE,CAAC,oBAAoB,CAAC,EAClC,kBAAkB,EAAE,CAAC,sBAAsB,CAAC,EAC5C,SAAS,EAAE;QACT,YAAY,EAAE,WAAW;KAC1B,EACD,gBAAgB,EAAE;QAChB,iBAAiB,EAAE,wBAAwB;KAC5C,GACF,CAAA;AAED,MAAM,MAAM,GAA0B;IACpC,QAAQ,EAAE;wCAEH,UAAU,KACb,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EAAE,CAAC,+BAA+B,CAAC,EAC5C,MAAM,EAAE,oBAAoB;wCAGzB,UAAU,KACb,SAAS,EAAE,CAAC,kCAAkC,CAAC;KAElD;IACD,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;IACzC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;CAC9C,CAAA;AAED,kBAAe,MAAM,CAAA"}
|
|
1
|
+
{"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../jest.config.ts"],"names":[],"mappings":";;AACA,MAAM,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;AAE7C,MAAM,UAAU,mCACX,MAAM,KACT,MAAM,EAAE,+BAA+B,EACvC,UAAU,EAAE,CAAC,oBAAoB,CAAC,EAClC,kBAAkB,EAAE,CAAC,sBAAsB,CAAC,EAC5C,SAAS,EAAE;QACT,YAAY,EAAE,WAAW;KAC1B,EACD,gBAAgB,EAAE;QAChB,iBAAiB,EAAE,wBAAwB;KAC5C,GACF,CAAA;AAED,MAAM,MAAM,GAA0B;IACpC,QAAQ,EAAE;wCAEH,UAAU,KACb,WAAW,EAAE,iBAAiB,EAC9B,SAAS,EAAE,CAAC,+BAA+B,CAAC,EAC5C,MAAM,EAAE,oBAAoB;wCAGzB,UAAU,KACb,SAAS,EAAE,CAAC,kCAAkC,CAAC;KAElD;IACD,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;IACzC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;CAC9C,CAAA;AAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAA;AAErC,kBAAe,MAAM,CAAA"}
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/backend-core",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.36-alpha.2",
|
|
4
4
|
"description": "Budibase backend core libraries used in server and worker",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -22,12 +22,12 @@
|
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@budibase/nano": "10.1.2",
|
|
24
24
|
"@budibase/pouchdb-replication-stream": "1.2.10",
|
|
25
|
-
"@budibase/types": "2.7.
|
|
25
|
+
"@budibase/types": "2.7.36-alpha.2",
|
|
26
26
|
"@shopify/jest-koa-mocks": "5.0.1",
|
|
27
27
|
"@techpass/passport-openidconnect": "0.3.2",
|
|
28
28
|
"aws-cloudfront-sign": "2.2.0",
|
|
29
29
|
"aws-sdk": "2.1030.0",
|
|
30
|
-
"bcrypt": "5.0
|
|
30
|
+
"bcrypt": "5.1.0",
|
|
31
31
|
"bcryptjs": "2.4.3",
|
|
32
32
|
"bull": "4.10.1",
|
|
33
33
|
"correlation-id": "4.0.0",
|
|
@@ -101,5 +101,5 @@
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
},
|
|
104
|
-
"gitHead": "
|
|
104
|
+
"gitHead": "9e73358c0b5d945e052a08f6a9277a4d263eec01"
|
|
105
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Replication.js","sourceRoot":"","sources":["../../../src/db/Replication.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAAkD;AAClD,4CAA2C;AAE3C,MAAM,WAAW;IAKf;;;;OAIG;IACH,YAAY,EAAE,MAAM,EAAE,MAAM,EAAO;QACjC,IAAI,CAAC,MAAM,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,MAAM,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED,KAAK;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAA,oBAAY,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAA,oBAAY,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC5E,CAAC;IAED,SAAS,CAAC,SAAc,EAAE,IAAI,GAAG,EAAE;QACjC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;iBACzB,EAAE,CAAC,QAAQ,EAAE,UAAU,GAAQ;gBAC9B,2DAA2D;gBAC3D,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAA;YAChE,CAAC,CAAC;iBACD,EAAE,CAAC,UAAU,EAAE,UAAU,IAAS;gBACjC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;YACtB,CAAC,CAAC;iBACD,EAAE,CAAC,OAAO,EAAE,UAAU,GAAQ;gBAC7B,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAA;YAC9C,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,IAAI,GAAG,EAAE;QACZ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACzD,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,IAAI,GAAG,EAAE;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACjE,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,MAAM,EAAE,CAAC,GAAQ,EAAE,EAAE;gBACnB,OAAO,GAAG,CAAC,GAAG,KAAK,wBAAY,CAAC,YAAY,CAAA;YAC9C,CAAC;SACF,CAAA;IACH,CAAC;IAED;;OAEG;IACG,QAAQ;;YACZ,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YAC3B,wBAAwB;YACxB,IAAI,CAAC,MAAM,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC1C,oDAAoD;YACpD,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACxB,CAAC;KAAA;IAED,MAAM;QACJ,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;CACF;AAED,kBAAe,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"Replication.js","sourceRoot":"","sources":["../../../src/db/Replication.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAAkD;AAClD,4CAA2C;AAE3C,MAAM,WAAW;IAKf;;;;OAIG;IACH,YAAY,EAAE,MAAM,EAAE,MAAM,EAAO;QACjC,IAAI,CAAC,MAAM,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAA;QAChC,IAAI,CAAC,MAAM,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED,KAAK;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAA,oBAAY,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAA,oBAAY,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC5E,CAAC;IAED,SAAS,CAAC,SAAc,EAAE,IAAI,GAAG,EAAE;QACjC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;iBACzB,EAAE,CAAC,QAAQ,EAAE,UAAU,GAAQ;gBAC9B,2DAA2D;gBAC3D,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAA;YAChE,CAAC,CAAC;iBACD,EAAE,CAAC,UAAU,EAAE,UAAU,IAAS;gBACjC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;YACtB,CAAC,CAAC;iBACD,EAAE,CAAC,OAAO,EAAE,UAAU,GAAQ;gBAC7B,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAA;YAC9C,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,IAAI,GAAG,EAAE;QACZ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACzD,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,IAAI,GAAG,EAAE;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACjE,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,MAAM,EAAE,CAAC,GAAQ,EAAE,EAAE;gBACnB,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,wBAAY,CAAC,cAAc,CAAC,EAAE;oBAC9D,OAAO,KAAK,CAAA;iBACb;gBACD,OAAO,GAAG,CAAC,GAAG,KAAK,wBAAY,CAAC,YAAY,CAAA;YAC9C,CAAC;SACF,CAAA;IACH,CAAC;IAED;;OAEG;IACG,QAAQ;;YACZ,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YAC3B,wBAAwB;YACxB,IAAI,CAAC,MAAM,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC1C,oDAAoD;YACpD,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;QACxB,CAAC;KAAA;IAED,MAAM;QACJ,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;CACF;AAED,kBAAe,WAAW,CAAA"}
|
package/dist/src/docIds/ids.d.ts
CHANGED
|
@@ -40,7 +40,11 @@ export declare function generateAppUserID(prodAppId: string, userId: string): st
|
|
|
40
40
|
* Generates a new role ID.
|
|
41
41
|
* @returns {string} The new role ID which the role doc can be stored under.
|
|
42
42
|
*/
|
|
43
|
-
export declare function generateRoleID(
|
|
43
|
+
export declare function generateRoleID(name: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* Utility function to be more verbose.
|
|
46
|
+
*/
|
|
47
|
+
export declare function prefixRoleID(name: string): string;
|
|
44
48
|
/**
|
|
45
49
|
* Generates a new dev info document ID - this is scoped to a user.
|
|
46
50
|
* @returns {string} The new dev info ID which info for dev (like api key) can be stored under.
|
package/dist/src/docIds/ids.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generatePluginID = exports.generateDevInfoID = exports.generateRoleID = exports.generateAppUserID = exports.generateTemplateID = exports.getGlobalIDFromUserMetadataID = exports.generateUserMetadataID = exports.generateGlobalUserID = exports.generateWorkspaceID = exports.generateRowID = exports.generateAppID = void 0;
|
|
3
|
+
exports.generatePluginID = exports.generateDevInfoID = exports.prefixRoleID = exports.generateRoleID = exports.generateAppUserID = exports.generateTemplateID = exports.getGlobalIDFromUserMetadataID = exports.generateUserMetadataID = exports.generateGlobalUserID = exports.generateWorkspaceID = exports.generateRowID = exports.generateAppID = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
5
|
const newid_1 = require("./newid");
|
|
6
6
|
/**
|
|
@@ -78,10 +78,21 @@ exports.generateAppUserID = generateAppUserID;
|
|
|
78
78
|
* Generates a new role ID.
|
|
79
79
|
* @returns {string} The new role ID which the role doc can be stored under.
|
|
80
80
|
*/
|
|
81
|
-
function generateRoleID(
|
|
82
|
-
|
|
81
|
+
function generateRoleID(name) {
|
|
82
|
+
const prefix = `${constants_1.DocumentType.ROLE}${constants_1.SEPARATOR}`;
|
|
83
|
+
if (name.startsWith(prefix)) {
|
|
84
|
+
return name;
|
|
85
|
+
}
|
|
86
|
+
return `${prefix}${name}`;
|
|
83
87
|
}
|
|
84
88
|
exports.generateRoleID = generateRoleID;
|
|
89
|
+
/**
|
|
90
|
+
* Utility function to be more verbose.
|
|
91
|
+
*/
|
|
92
|
+
function prefixRoleID(name) {
|
|
93
|
+
return generateRoleID(name);
|
|
94
|
+
}
|
|
95
|
+
exports.prefixRoleID = prefixRoleID;
|
|
85
96
|
/**
|
|
86
97
|
* Generates a new dev info document ID - this is scoped to a user.
|
|
87
98
|
* @returns {string} The new dev info ID which info for dev (like api key) can be stored under.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../../src/docIds/ids.ts"],"names":[],"mappings":";;;AAAA,4CAKqB;AACrB,mCAA+B;AAE/B;;;GAGG;AACI,MAAM,aAAa,GAAG,CAAC,QAAwB,EAAE,EAAE;IACxD,IAAI,EAAE,GAAG,sBAAU,CAAA;IACnB,IAAI,QAAQ,EAAE;QACZ,EAAE,IAAI,GAAG,QAAQ,GAAG,qBAAS,EAAE,CAAA;KAChC;IACD,OAAO,GAAG,EAAE,GAAG,IAAA,aAAK,GAAE,EAAE,CAAA;AAC1B,CAAC,CAAA;AANY,QAAA,aAAa,iBAMzB;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAAe,EAAE,EAAW;IACxD,EAAE,GAAG,EAAE,IAAI,IAAA,aAAK,GAAE,CAAA;IAClB,OAAO,GAAG,wBAAY,CAAC,GAAG,GAAG,qBAAS,GAAG,OAAO,GAAG,qBAAS,GAAG,EAAE,EAAE,CAAA;AACrE,CAAC;AAHD,sCAGC;AAED;;;GAGG;AACH,SAAgB,mBAAmB;IACjC,OAAO,GAAG,wBAAY,CAAC,SAAS,GAAG,qBAAS,GAAG,IAAA,aAAK,GAAE,EAAE,CAAA;AAC1D,CAAC;AAFD,kDAEC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,EAAQ;IAC3C,OAAO,GAAG,wBAAY,CAAC,IAAI,GAAG,qBAAS,GAAG,EAAE,IAAI,IAAA,aAAK,GAAE,EAAE,CAAA;AAC3D,CAAC;AAFD,oDAEC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,OAAO,aAAa,CAAC,yBAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;AAC7D,CAAC;AAFD,wDAEC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAAC,EAAU;IACtD,MAAM,MAAM,GAAG,GAAG,wBAAY,CAAC,GAAG,GAAG,qBAAS,GAAG,yBAAa,CAAC,aAAa,GAAG,qBAAS,EAAE,CAAA;IAC1F,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC/B,OAAO,EAAE,CAAA;KACV;IACD,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5B,CAAC;AAND,sEAMC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,OAAY;IAC7C,OAAO,GAAG,wBAAY,CAAC,QAAQ,GAAG,qBAAS,GAAG,OAAO,GAAG,qBAAS,GAAG,IAAA,aAAK,GAAE,EAAE,CAAA;AAC/E,CAAC;AAFD,gDAEC;AAED,SAAgB,iBAAiB,CAAC,SAAiB,EAAE,MAAc;IACjE,OAAO,GAAG,SAAS,GAAG,qBAAS,GAAG,MAAM,EAAE,CAAA;AAC5C,CAAC;AAFD,8CAEC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../../src/docIds/ids.ts"],"names":[],"mappings":";;;AAAA,4CAKqB;AACrB,mCAA+B;AAE/B;;;GAGG;AACI,MAAM,aAAa,GAAG,CAAC,QAAwB,EAAE,EAAE;IACxD,IAAI,EAAE,GAAG,sBAAU,CAAA;IACnB,IAAI,QAAQ,EAAE;QACZ,EAAE,IAAI,GAAG,QAAQ,GAAG,qBAAS,EAAE,CAAA;KAChC;IACD,OAAO,GAAG,EAAE,GAAG,IAAA,aAAK,GAAE,EAAE,CAAA;AAC1B,CAAC,CAAA;AANY,QAAA,aAAa,iBAMzB;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAAe,EAAE,EAAW;IACxD,EAAE,GAAG,EAAE,IAAI,IAAA,aAAK,GAAE,CAAA;IAClB,OAAO,GAAG,wBAAY,CAAC,GAAG,GAAG,qBAAS,GAAG,OAAO,GAAG,qBAAS,GAAG,EAAE,EAAE,CAAA;AACrE,CAAC;AAHD,sCAGC;AAED;;;GAGG;AACH,SAAgB,mBAAmB;IACjC,OAAO,GAAG,wBAAY,CAAC,SAAS,GAAG,qBAAS,GAAG,IAAA,aAAK,GAAE,EAAE,CAAA;AAC1D,CAAC;AAFD,kDAEC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,EAAQ;IAC3C,OAAO,GAAG,wBAAY,CAAC,IAAI,GAAG,qBAAS,GAAG,EAAE,IAAI,IAAA,aAAK,GAAE,EAAE,CAAA;AAC3D,CAAC;AAFD,oDAEC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,QAAgB;IACrD,OAAO,aAAa,CAAC,yBAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;AAC7D,CAAC;AAFD,wDAEC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAAC,EAAU;IACtD,MAAM,MAAM,GAAG,GAAG,wBAAY,CAAC,GAAG,GAAG,qBAAS,GAAG,yBAAa,CAAC,aAAa,GAAG,qBAAS,EAAE,CAAA;IAC1F,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAC/B,OAAO,EAAE,CAAA;KACV;IACD,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5B,CAAC;AAND,sEAMC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,OAAY;IAC7C,OAAO,GAAG,wBAAY,CAAC,QAAQ,GAAG,qBAAS,GAAG,OAAO,GAAG,qBAAS,GAAG,IAAA,aAAK,GAAE,EAAE,CAAA;AAC/E,CAAC;AAFD,gDAEC;AAED,SAAgB,iBAAiB,CAAC,SAAiB,EAAE,MAAc;IACjE,OAAO,GAAG,SAAS,GAAG,qBAAS,GAAG,MAAM,EAAE,CAAA;AAC5C,CAAC;AAFD,8CAEC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,GAAG,wBAAY,CAAC,IAAI,GAAG,qBAAS,EAAE,CAAA;IACjD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QAC3B,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,GAAG,MAAM,GAAG,IAAI,EAAE,CAAA;AAC3B,CAAC;AAND,wCAMC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAFD,oCAEC;AAED;;;GAGG;AACI,MAAM,iBAAiB,GAAG,CAAC,MAAW,EAAE,EAAE;IAC/C,OAAO,GAAG,wBAAY,CAAC,QAAQ,GAAG,qBAAS,GAAG,MAAM,EAAE,CAAA;AACxD,CAAC,CAAA;AAFY,QAAA,iBAAiB,qBAE7B;AAED;;;GAGG;AACI,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC/C,OAAO,GAAG,wBAAY,CAAC,MAAM,GAAG,qBAAS,GAAG,IAAI,EAAE,CAAA;AACpD,CAAC,CAAA;AAFY,QAAA,gBAAgB,oBAE5B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { App } from "@budibase/types";
|
|
2
2
|
declare function servedBuilder(timezone: string): Promise<void>;
|
|
3
|
-
declare function servedApp(app: App, timezone: string): Promise<void>;
|
|
3
|
+
declare function servedApp(app: App, timezone: string, embed?: boolean | undefined): Promise<void>;
|
|
4
4
|
declare function servedAppPreview(app: App, timezone: string): Promise<void>;
|
|
5
5
|
declare const _default: {
|
|
6
6
|
servedBuilder: typeof servedBuilder;
|
|
@@ -19,11 +19,12 @@ function servedBuilder(timezone) {
|
|
|
19
19
|
yield (0, events_1.publishEvent)(types_1.Event.SERVED_BUILDER, properties);
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
-
function servedApp(app, timezone) {
|
|
22
|
+
function servedApp(app, timezone, embed) {
|
|
23
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
24
|
const properties = {
|
|
25
25
|
appVersion: app.version,
|
|
26
26
|
timezone,
|
|
27
|
+
embed: embed === true,
|
|
27
28
|
};
|
|
28
29
|
yield (0, events_1.publishEvent)(types_1.Event.SERVED_APP, properties);
|
|
29
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../src/events/publishers/serve.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAwC;AACxC,2CAMwB;AAExB,SAAe,aAAa,CAAC,QAAgB;;QAC3C,MAAM,UAAU,GAAuB;YACrC,QAAQ;SACT,CAAA;QACD,MAAM,IAAA,qBAAY,EAAC,aAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;IACtD,CAAC;CAAA;AAED,SAAe,SAAS,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../src/events/publishers/serve.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAwC;AACxC,2CAMwB;AAExB,SAAe,aAAa,CAAC,QAAgB;;QAC3C,MAAM,UAAU,GAAuB;YACrC,QAAQ;SACT,CAAA;QACD,MAAM,IAAA,qBAAY,EAAC,aAAK,CAAC,cAAc,EAAE,UAAU,CAAC,CAAA;IACtD,CAAC;CAAA;AAED,SAAe,SAAS,CACtB,GAAQ,EACR,QAAgB,EAChB,KAA2B;;QAE3B,MAAM,UAAU,GAAmB;YACjC,UAAU,EAAE,GAAG,CAAC,OAAO;YACvB,QAAQ;YACR,KAAK,EAAE,KAAK,KAAK,IAAI;SACtB,CAAA;QACD,MAAM,IAAA,qBAAY,EAAC,aAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAClD,CAAC;CAAA;AAED,SAAe,gBAAgB,CAAC,GAAQ,EAAE,QAAgB;;QACxD,MAAM,UAAU,GAA0B;YACxC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,UAAU,EAAE,GAAG,CAAC,OAAO;YACvB,QAAQ;SACT,CAAA;QACD,MAAM,IAAA,qBAAY,EAAC,aAAK,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAA;IAC1D,CAAC;CAAA;AAED,kBAAe;IACb,aAAa;IACb,SAAS;IACT,gBAAgB;CACjB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UserCtx } from "@budibase/types";
|
|
2
2
|
declare type Passport = {
|
|
3
3
|
authenticate: any;
|
|
4
4
|
};
|
|
5
|
-
export declare function preAuth(passport: Passport, ctx:
|
|
6
|
-
export declare function postAuth(passport: Passport, ctx:
|
|
5
|
+
export declare function preAuth(passport: Passport, ctx: UserCtx, next: Function): Promise<any>;
|
|
6
|
+
export declare function postAuth(passport: Passport, ctx: UserCtx, next: Function): Promise<any>;
|
|
7
7
|
export {};
|
|
@@ -35,9 +35,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
35
35
|
exports.postAuth = exports.preAuth = void 0;
|
|
36
36
|
const google = __importStar(require("../sso/google"));
|
|
37
37
|
const constants_1 = require("../../../constants");
|
|
38
|
-
const utils_1 = require("../../../utils");
|
|
39
|
-
const db_1 = require("../../../db");
|
|
40
38
|
const configs = __importStar(require("../../../configs"));
|
|
39
|
+
const cache = __importStar(require("../../../cache"));
|
|
40
|
+
const utils = __importStar(require("../../../utils"));
|
|
41
41
|
const sso_1 = require("../sso/sso");
|
|
42
42
|
const GoogleStrategy = require("passport-google-oauth").OAuth2Strategy;
|
|
43
43
|
function fetchGoogleCreds() {
|
|
@@ -56,8 +56,8 @@ function preAuth(passport, ctx, next) {
|
|
|
56
56
|
const platformUrl = yield configs.getPlatformUrl({ tenantAware: false });
|
|
57
57
|
let callbackUrl = `${platformUrl}/api/global/auth/datasource/google/callback`;
|
|
58
58
|
const strategy = yield google.strategyFactory(googleConfig, callbackUrl, sso_1.ssoSaveUserNoOp);
|
|
59
|
-
if (!ctx.query.appId
|
|
60
|
-
ctx.throw(400, "appId
|
|
59
|
+
if (!ctx.query.appId) {
|
|
60
|
+
ctx.throw(400, "appId query param not present.");
|
|
61
61
|
}
|
|
62
62
|
return passport.authenticate(strategy, {
|
|
63
63
|
scope: ["profile", "email", "https://www.googleapis.com/auth/spreadsheets"],
|
|
@@ -73,34 +73,21 @@ function postAuth(passport, ctx, next) {
|
|
|
73
73
|
const config = yield fetchGoogleCreds();
|
|
74
74
|
const platformUrl = yield configs.getPlatformUrl({ tenantAware: false });
|
|
75
75
|
let callbackUrl = `${platformUrl}/api/global/auth/datasource/google/callback`;
|
|
76
|
-
const authStateCookie =
|
|
76
|
+
const authStateCookie = utils.getCookie(ctx, constants_1.Cookie.DatasourceAuth);
|
|
77
77
|
return passport.authenticate(new GoogleStrategy({
|
|
78
78
|
clientID: config.clientID,
|
|
79
79
|
clientSecret: config.clientSecret,
|
|
80
80
|
callbackURL: callbackUrl,
|
|
81
|
-
}, (accessToken, refreshToken,
|
|
82
|
-
|
|
81
|
+
}, (accessToken, refreshToken, _profile, done) => {
|
|
82
|
+
utils.clearCookie(ctx, constants_1.Cookie.DatasourceAuth);
|
|
83
83
|
done(null, { accessToken, refreshToken });
|
|
84
84
|
}), { successRedirect: "/", failureRedirect: "/error" }, (err, tokens) => __awaiter(this, void 0, void 0, function* () {
|
|
85
85
|
const baseUrl = `/builder/app/${authStateCookie.appId}/data`;
|
|
86
|
-
|
|
87
|
-
yield
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
catch (err) {
|
|
93
|
-
if (err.status === 404) {
|
|
94
|
-
ctx.redirect(baseUrl);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
if (!datasource.config) {
|
|
98
|
-
datasource.config = {};
|
|
99
|
-
}
|
|
100
|
-
datasource.config.auth = Object.assign({ type: "google" }, tokens);
|
|
101
|
-
yield db.put(datasource);
|
|
102
|
-
ctx.redirect(`${baseUrl}/datasource/${authStateCookie.datasourceId}`);
|
|
103
|
-
}));
|
|
86
|
+
const id = utils.newid();
|
|
87
|
+
yield cache.store(`datasource:creation:${authStateCookie.appId}:google:${id}`, {
|
|
88
|
+
tokens,
|
|
89
|
+
});
|
|
90
|
+
ctx.redirect(`${baseUrl}/new?continue_google_setup=${id}`);
|
|
104
91
|
}))(ctx, next);
|
|
105
92
|
});
|
|
106
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../../../../src/middleware/passport/datasource/google.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAuC;AACvC,kDAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../../../../src/middleware/passport/datasource/google.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,3 +5,11 @@ export declare enum SecretOption {
|
|
|
5
5
|
export declare function getSecret(secretOption: SecretOption): string;
|
|
6
6
|
export declare function encrypt(input: string, secretOption?: SecretOption): string;
|
|
7
7
|
export declare function decrypt(input: string, secretOption?: SecretOption): string;
|
|
8
|
+
export declare function encryptFile({ dir, filename }: {
|
|
9
|
+
dir: string;
|
|
10
|
+
filename: string;
|
|
11
|
+
}, secret: string): Promise<{
|
|
12
|
+
filename: string;
|
|
13
|
+
dir: string;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function decryptFile(inputPath: string, outputPath: string, secret: string): Promise<void>;
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
13
|
};
|
|
5
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.decrypt = exports.encrypt = exports.getSecret = exports.SecretOption = void 0;
|
|
15
|
+
exports.decryptFile = exports.encryptFile = exports.decrypt = exports.encrypt = exports.getSecret = exports.SecretOption = void 0;
|
|
7
16
|
const crypto_1 = __importDefault(require("crypto"));
|
|
17
|
+
const fs_1 = __importDefault(require("fs"));
|
|
18
|
+
const zlib_1 = __importDefault(require("zlib"));
|
|
8
19
|
const environment_1 = __importDefault(require("../environment"));
|
|
20
|
+
const path_1 = require("path");
|
|
9
21
|
const ALGO = "aes-256-ctr";
|
|
10
22
|
const SEPARATOR = "-";
|
|
11
23
|
const ITERATIONS = 10000;
|
|
12
|
-
const RANDOM_BYTES = 16;
|
|
13
24
|
const STRETCH_LENGTH = 32;
|
|
25
|
+
const SALT_LENGTH = 16;
|
|
26
|
+
const IV_LENGTH = 16;
|
|
14
27
|
var SecretOption;
|
|
15
28
|
(function (SecretOption) {
|
|
16
29
|
SecretOption["API"] = "api";
|
|
@@ -35,11 +48,11 @@ function getSecret(secretOption) {
|
|
|
35
48
|
return secret;
|
|
36
49
|
}
|
|
37
50
|
exports.getSecret = getSecret;
|
|
38
|
-
function stretchString(
|
|
39
|
-
return crypto_1.default.pbkdf2Sync(
|
|
51
|
+
function stretchString(secret, salt) {
|
|
52
|
+
return crypto_1.default.pbkdf2Sync(secret, salt, ITERATIONS, STRETCH_LENGTH, "sha512");
|
|
40
53
|
}
|
|
41
54
|
function encrypt(input, secretOption = SecretOption.API) {
|
|
42
|
-
const salt = crypto_1.default.randomBytes(
|
|
55
|
+
const salt = crypto_1.default.randomBytes(SALT_LENGTH);
|
|
43
56
|
const stretched = stretchString(getSecret(secretOption), salt);
|
|
44
57
|
const cipher = crypto_1.default.createCipheriv(ALGO, stretched, salt);
|
|
45
58
|
const base = cipher.update(input);
|
|
@@ -58,4 +71,93 @@ function decrypt(input, secretOption = SecretOption.API) {
|
|
|
58
71
|
return Buffer.concat([base, final]).toString();
|
|
59
72
|
}
|
|
60
73
|
exports.decrypt = decrypt;
|
|
74
|
+
function encryptFile({ dir, filename }, secret) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
const outputFileName = `${filename}.enc`;
|
|
77
|
+
const filePath = (0, path_1.join)(dir, filename);
|
|
78
|
+
const inputFile = fs_1.default.createReadStream(filePath);
|
|
79
|
+
const outputFile = fs_1.default.createWriteStream((0, path_1.join)(dir, outputFileName));
|
|
80
|
+
const salt = crypto_1.default.randomBytes(SALT_LENGTH);
|
|
81
|
+
const iv = crypto_1.default.randomBytes(IV_LENGTH);
|
|
82
|
+
const stretched = stretchString(secret, salt);
|
|
83
|
+
const cipher = crypto_1.default.createCipheriv(ALGO, stretched, iv);
|
|
84
|
+
outputFile.write(salt);
|
|
85
|
+
outputFile.write(iv);
|
|
86
|
+
inputFile.pipe(zlib_1.default.createGzip()).pipe(cipher).pipe(outputFile);
|
|
87
|
+
return new Promise(r => {
|
|
88
|
+
outputFile.on("finish", () => {
|
|
89
|
+
r({
|
|
90
|
+
filename: outputFileName,
|
|
91
|
+
dir,
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
exports.encryptFile = encryptFile;
|
|
98
|
+
function getSaltAndIV(path) {
|
|
99
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
100
|
+
const fileStream = fs_1.default.createReadStream(path);
|
|
101
|
+
const salt = yield readBytes(fileStream, SALT_LENGTH);
|
|
102
|
+
const iv = yield readBytes(fileStream, IV_LENGTH);
|
|
103
|
+
fileStream.close();
|
|
104
|
+
return { salt, iv };
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
function decryptFile(inputPath, outputPath, secret) {
|
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
const { salt, iv } = yield getSaltAndIV(inputPath);
|
|
110
|
+
const inputFile = fs_1.default.createReadStream(inputPath, {
|
|
111
|
+
start: SALT_LENGTH + IV_LENGTH,
|
|
112
|
+
});
|
|
113
|
+
const outputFile = fs_1.default.createWriteStream(outputPath);
|
|
114
|
+
const stretched = stretchString(secret, salt);
|
|
115
|
+
const decipher = crypto_1.default.createDecipheriv(ALGO, stretched, iv);
|
|
116
|
+
const unzip = zlib_1.default.createGunzip();
|
|
117
|
+
inputFile.pipe(decipher).pipe(unzip).pipe(outputFile);
|
|
118
|
+
return new Promise((res, rej) => {
|
|
119
|
+
outputFile.on("finish", () => {
|
|
120
|
+
outputFile.close();
|
|
121
|
+
res();
|
|
122
|
+
});
|
|
123
|
+
inputFile.on("error", e => {
|
|
124
|
+
outputFile.close();
|
|
125
|
+
rej(e);
|
|
126
|
+
});
|
|
127
|
+
decipher.on("error", e => {
|
|
128
|
+
outputFile.close();
|
|
129
|
+
rej(e);
|
|
130
|
+
});
|
|
131
|
+
unzip.on("error", e => {
|
|
132
|
+
outputFile.close();
|
|
133
|
+
rej(e);
|
|
134
|
+
});
|
|
135
|
+
outputFile.on("error", e => {
|
|
136
|
+
outputFile.close();
|
|
137
|
+
rej(e);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
exports.decryptFile = decryptFile;
|
|
143
|
+
function readBytes(stream, length) {
|
|
144
|
+
return new Promise((resolve, reject) => {
|
|
145
|
+
let bytesRead = 0;
|
|
146
|
+
const data = [];
|
|
147
|
+
stream.on("readable", () => {
|
|
148
|
+
let chunk;
|
|
149
|
+
while ((chunk = stream.read(length - bytesRead)) !== null) {
|
|
150
|
+
data.push(chunk);
|
|
151
|
+
bytesRead += chunk.length;
|
|
152
|
+
}
|
|
153
|
+
resolve(Buffer.concat(data));
|
|
154
|
+
});
|
|
155
|
+
stream.on("end", () => {
|
|
156
|
+
reject(new Error("Insufficient data in the stream."));
|
|
157
|
+
});
|
|
158
|
+
stream.on("error", error => {
|
|
159
|
+
reject(error);
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
}
|
|
61
163
|
//# sourceMappingURL=encryption.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../src/security/encryption.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../src/security/encryption.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,17 @@ export declare const BUILTIN_ROLE_IDS: {
|
|
|
5
5
|
BASIC: string;
|
|
6
6
|
PUBLIC: string;
|
|
7
7
|
};
|
|
8
|
+
export declare const RoleIDVersion: {
|
|
9
|
+
UUID: undefined;
|
|
10
|
+
NAME: string;
|
|
11
|
+
};
|
|
8
12
|
export declare class Role implements RoleDoc {
|
|
9
13
|
_id: string;
|
|
10
14
|
_rev?: string;
|
|
11
15
|
name: string;
|
|
12
16
|
permissionId: string;
|
|
13
17
|
inherits?: string;
|
|
18
|
+
version?: string;
|
|
14
19
|
permissions: {};
|
|
15
20
|
constructor(id: string, name: string, permissionId: string);
|
|
16
21
|
addInheritance(inherits: string): this;
|
|
@@ -37,9 +42,12 @@ export declare function lowerBuiltinRoleID(roleId1?: string, roleId2?: string):
|
|
|
37
42
|
* Gets the role object, this is mainly useful for two purposes, to check if the level exists and
|
|
38
43
|
* to check if the role inherits any others.
|
|
39
44
|
* @param {string|null} roleId The level ID to lookup.
|
|
45
|
+
* @param {object|null} opts options for the function, like whether to halt errors, instead return public.
|
|
40
46
|
* @returns {Promise<Role|object|null>} The role object, which may contain an "inherits" property.
|
|
41
47
|
*/
|
|
42
|
-
export declare function getRole(roleId?: string
|
|
48
|
+
export declare function getRole(roleId?: string, opts?: {
|
|
49
|
+
defaultPublic?: boolean;
|
|
50
|
+
}): Promise<RoleDoc | undefined>;
|
|
43
51
|
/**
|
|
44
52
|
* Returns an ordered array of the user's inherited role IDs, this can be used
|
|
45
53
|
* to determine if a user can access something that requires a specific role.
|
|
@@ -84,8 +92,8 @@ export declare class AccessController {
|
|
|
84
92
|
/**
|
|
85
93
|
* Adds the "role_" for builtin role IDs which are to be written to the DB (for permissions).
|
|
86
94
|
*/
|
|
87
|
-
export declare function getDBRoleID(
|
|
95
|
+
export declare function getDBRoleID(roleName: string): string;
|
|
88
96
|
/**
|
|
89
97
|
* Remove the "role_" from builtin role IDs that have been written to the DB (for permissions).
|
|
90
98
|
*/
|
|
91
|
-
export declare function getExternalRoleID(roleId?: string): string
|
|
99
|
+
export declare function getExternalRoleID(roleId: string, version?: string): string;
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.getExternalRoleID = exports.getDBRoleID = exports.AccessController = exports.getRequiredResourceRole = exports.getAllRoles = exports.checkForRoleResourceArray = exports.getUserRoleHierarchy = exports.getRole = exports.lowerBuiltinRoleID = exports.roleToNumber = exports.builtinRoleToNumber = exports.isBuiltin = exports.BUILTIN_ROLE_NAME_ARRAY = exports.BUILTIN_ROLE_ID_ARRAY = exports.getBuiltinRoles = exports.Role = exports.BUILTIN_ROLE_IDS = void 0;
|
|
12
|
+
exports.getExternalRoleID = exports.getDBRoleID = exports.AccessController = exports.getRequiredResourceRole = exports.getAllRoles = exports.checkForRoleResourceArray = exports.getUserRoleHierarchy = exports.getRole = exports.lowerBuiltinRoleID = exports.roleToNumber = exports.builtinRoleToNumber = exports.isBuiltin = exports.BUILTIN_ROLE_NAME_ARRAY = exports.BUILTIN_ROLE_ID_ARRAY = exports.getBuiltinRoles = exports.Role = exports.RoleIDVersion = exports.BUILTIN_ROLE_IDS = void 0;
|
|
13
13
|
const permissions_1 = require("./permissions");
|
|
14
14
|
const db_1 = require("../db");
|
|
15
15
|
const context_1 = require("../context");
|
|
@@ -29,12 +29,20 @@ const EXTERNAL_BUILTIN_ROLE_IDS = [
|
|
|
29
29
|
BUILTIN_IDS.BASIC,
|
|
30
30
|
BUILTIN_IDS.PUBLIC,
|
|
31
31
|
];
|
|
32
|
+
exports.RoleIDVersion = {
|
|
33
|
+
// original version, with a UUID based ID
|
|
34
|
+
UUID: undefined,
|
|
35
|
+
// new version - with name based ID
|
|
36
|
+
NAME: "name",
|
|
37
|
+
};
|
|
32
38
|
class Role {
|
|
33
39
|
constructor(id, name, permissionId) {
|
|
34
40
|
this.permissions = {};
|
|
35
41
|
this._id = id;
|
|
36
42
|
this.name = name;
|
|
37
43
|
this.permissionId = permissionId;
|
|
44
|
+
// version for managing the ID - removing the role_ when responding
|
|
45
|
+
this.version = exports.RoleIDVersion.NAME;
|
|
38
46
|
}
|
|
39
47
|
addInheritance(inherits) {
|
|
40
48
|
this.inherits = inherits;
|
|
@@ -119,9 +127,10 @@ exports.lowerBuiltinRoleID = lowerBuiltinRoleID;
|
|
|
119
127
|
* Gets the role object, this is mainly useful for two purposes, to check if the level exists and
|
|
120
128
|
* to check if the role inherits any others.
|
|
121
129
|
* @param {string|null} roleId The level ID to lookup.
|
|
130
|
+
* @param {object|null} opts options for the function, like whether to halt errors, instead return public.
|
|
122
131
|
* @returns {Promise<Role|object|null>} The role object, which may contain an "inherits" property.
|
|
123
132
|
*/
|
|
124
|
-
function getRole(roleId) {
|
|
133
|
+
function getRole(roleId, opts) {
|
|
125
134
|
return __awaiter(this, void 0, void 0, function* () {
|
|
126
135
|
if (!roleId) {
|
|
127
136
|
return undefined;
|
|
@@ -132,14 +141,21 @@ function getRole(roleId) {
|
|
|
132
141
|
if (isBuiltin(roleId)) {
|
|
133
142
|
role = cloneDeep(Object.values(BUILTIN_ROLES).find(role => role._id === roleId));
|
|
134
143
|
}
|
|
144
|
+
else {
|
|
145
|
+
// make sure has the prefix (if it has it then it won't be added)
|
|
146
|
+
roleId = (0, db_1.prefixRoleID)(roleId);
|
|
147
|
+
}
|
|
135
148
|
try {
|
|
136
149
|
const db = (0, context_1.getAppDB)();
|
|
137
150
|
const dbRole = yield db.get(getDBRoleID(roleId));
|
|
138
151
|
role = Object.assign(role, dbRole);
|
|
139
152
|
// finalise the ID
|
|
140
|
-
role._id = getExternalRoleID(role._id);
|
|
153
|
+
role._id = getExternalRoleID(role._id, role.version);
|
|
141
154
|
}
|
|
142
155
|
catch (err) {
|
|
156
|
+
if (!isBuiltin(roleId) && (opts === null || opts === void 0 ? void 0 : opts.defaultPublic)) {
|
|
157
|
+
return cloneDeep(BUILTIN_ROLES.PUBLIC);
|
|
158
|
+
}
|
|
143
159
|
// only throw an error if there is no role at all
|
|
144
160
|
if (Object.keys(role).length === 0) {
|
|
145
161
|
throw err;
|
|
@@ -231,19 +247,20 @@ function getAllRoles(appId) {
|
|
|
231
247
|
include_docs: true,
|
|
232
248
|
}));
|
|
233
249
|
roles = body.rows.map((row) => row.doc);
|
|
250
|
+
roles.forEach(role => (role._id = getExternalRoleID(role._id, role.version)));
|
|
234
251
|
}
|
|
235
252
|
const builtinRoles = getBuiltinRoles();
|
|
236
253
|
// need to combine builtin with any DB record of them (for sake of permissions)
|
|
237
254
|
for (let builtinRoleId of EXTERNAL_BUILTIN_ROLE_IDS) {
|
|
238
255
|
const builtinRole = builtinRoles[builtinRoleId];
|
|
239
|
-
const dbBuiltin = roles.filter(dbRole => getExternalRoleID(dbRole._id) === builtinRoleId)[0];
|
|
256
|
+
const dbBuiltin = roles.filter(dbRole => getExternalRoleID(dbRole._id, dbRole.version) === builtinRoleId)[0];
|
|
240
257
|
if (dbBuiltin == null) {
|
|
241
258
|
roles.push(builtinRole || builtinRoles.BASIC);
|
|
242
259
|
}
|
|
243
260
|
else {
|
|
244
261
|
// remove role and all back after combining with the builtin
|
|
245
262
|
roles = roles.filter(role => role._id !== dbBuiltin._id);
|
|
246
|
-
dbBuiltin._id = getExternalRoleID(dbBuiltin._id);
|
|
263
|
+
dbBuiltin._id = getExternalRoleID(dbBuiltin._id, dbBuiltin.version);
|
|
247
264
|
roles.push(Object.assign(builtinRole, dbBuiltin));
|
|
248
265
|
}
|
|
249
266
|
}
|
|
@@ -346,19 +363,20 @@ exports.AccessController = AccessController;
|
|
|
346
363
|
/**
|
|
347
364
|
* Adds the "role_" for builtin role IDs which are to be written to the DB (for permissions).
|
|
348
365
|
*/
|
|
349
|
-
function getDBRoleID(
|
|
350
|
-
if (
|
|
351
|
-
return
|
|
366
|
+
function getDBRoleID(roleName) {
|
|
367
|
+
if (roleName === null || roleName === void 0 ? void 0 : roleName.startsWith(db_1.DocumentType.ROLE)) {
|
|
368
|
+
return roleName;
|
|
352
369
|
}
|
|
353
|
-
return (0, db_1.
|
|
370
|
+
return (0, db_1.prefixRoleID)(roleName);
|
|
354
371
|
}
|
|
355
372
|
exports.getDBRoleID = getDBRoleID;
|
|
356
373
|
/**
|
|
357
374
|
* Remove the "role_" from builtin role IDs that have been written to the DB (for permissions).
|
|
358
375
|
*/
|
|
359
|
-
function getExternalRoleID(roleId) {
|
|
376
|
+
function getExternalRoleID(roleId, version) {
|
|
360
377
|
// for built-in roles we want to remove the DB role ID element (role_)
|
|
361
|
-
if ((roleId
|
|
378
|
+
if ((roleId.startsWith(db_1.DocumentType.ROLE) && isBuiltin(roleId)) ||
|
|
379
|
+
version === exports.RoleIDVersion.NAME) {
|
|
362
380
|
return roleId.split(`${db_1.DocumentType.ROLE}${db_1.SEPARATOR}`)[1];
|
|
363
381
|
}
|
|
364
382
|
return roleId;
|