@budibase/backend-core 2.29.8 → 2.29.13
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/index.js +42 -13
- package/dist/index.js.map +2 -2
- package/dist/index.js.meta.json +1 -1
- package/dist/package.json +5 -6
- package/dist/plugins.js.map +1 -1
- package/dist/plugins.js.meta.json +1 -1
- package/dist/src/db/couch/DatabaseImpl.js +3 -0
- package/dist/src/db/couch/DatabaseImpl.js.map +1 -1
- package/dist/src/db/couch/connections.d.ts +1 -1
- package/dist/src/db/couch/connections.js +9 -1
- package/dist/src/db/couch/connections.js.map +1 -1
- package/dist/src/environment.d.ts +3 -0
- package/dist/src/environment.js +1 -1
- package/dist/src/environment.js.map +1 -1
- package/dist/src/users/db.js +10 -8
- package/dist/src/users/db.js.map +1 -1
- package/package.json +5 -6
- package/src/db/couch/DatabaseImpl.ts +5 -0
- package/src/db/couch/connections.ts +9 -1
- package/src/db/tests/connections.spec.ts +22 -0
- package/src/environment.ts +3 -0
- package/src/users/db.ts +13 -9
- package/src/users/test/db.spec.ts +188 -0
package/dist/index.js
CHANGED
|
@@ -53704,7 +53704,10 @@ var require_strategy2 = __commonJS({
|
|
|
53704
53704
|
var meta = state2;
|
|
53705
53705
|
var callbackURL = meta.callbackURL;
|
|
53706
53706
|
var oauth2 = self2._getOAuth2Client(meta);
|
|
53707
|
-
var params2 = {
|
|
53707
|
+
var params2 = {
|
|
53708
|
+
grant_type: "authorization_code",
|
|
53709
|
+
redirect_uri: callbackURL
|
|
53710
|
+
};
|
|
53708
53711
|
if (state2.pkce) {
|
|
53709
53712
|
params2.code_verifier = state2.params.verifier;
|
|
53710
53713
|
}
|
|
@@ -53818,6 +53821,9 @@ var require_strategy2 = __commonJS({
|
|
|
53818
53821
|
try {
|
|
53819
53822
|
var json = JSON.parse(body2);
|
|
53820
53823
|
profile.id = json.sub;
|
|
53824
|
+
if (jwtClaims && jwtClaims.oid) {
|
|
53825
|
+
profile.id = jwtClaims.oid;
|
|
53826
|
+
}
|
|
53821
53827
|
if (!profile.id) {
|
|
53822
53828
|
profile.id = json.user_id;
|
|
53823
53829
|
}
|
|
@@ -54040,13 +54046,19 @@ var require_strategy2 = __commonJS({
|
|
|
54040
54046
|
var verifier = base64url(crypto2.pseudoRandomBytes(32));
|
|
54041
54047
|
switch (config.pkce) {
|
|
54042
54048
|
case "S256":
|
|
54043
|
-
params2.code_challenge = base64url(
|
|
54049
|
+
params2.code_challenge = base64url(
|
|
54050
|
+
crypto2.createHash("sha256").update(verifier).digest()
|
|
54051
|
+
);
|
|
54044
54052
|
break;
|
|
54045
54053
|
case "plain":
|
|
54046
54054
|
params2.code_challenge = verifier;
|
|
54047
54055
|
break;
|
|
54048
54056
|
default:
|
|
54049
|
-
return self2.error(
|
|
54057
|
+
return self2.error(
|
|
54058
|
+
new Error(
|
|
54059
|
+
"Unsupported code verifier transformation method: " + config.pkce
|
|
54060
|
+
)
|
|
54061
|
+
);
|
|
54050
54062
|
}
|
|
54051
54063
|
params2.code_challenge_method = config.pkce;
|
|
54052
54064
|
params2.verifier = verifier;
|
|
@@ -56098,7 +56110,10 @@ var environment = {
|
|
|
56098
56110
|
environment[key] = value;
|
|
56099
56111
|
},
|
|
56100
56112
|
ROLLING_LOG_MAX_SIZE: process.env.ROLLING_LOG_MAX_SIZE || "10M",
|
|
56101
|
-
DISABLE_SCIM_CALLS: process.env.DISABLE_SCIM_CALLS
|
|
56113
|
+
DISABLE_SCIM_CALLS: process.env.DISABLE_SCIM_CALLS,
|
|
56114
|
+
BB_ADMIN_USER_EMAIL: process.env.BB_ADMIN_USER_EMAIL,
|
|
56115
|
+
BB_ADMIN_USER_PASSWORD: process.env.BB_ADMIN_USER_PASSWORD,
|
|
56116
|
+
OPENAI_API_KEY: process.env.OPENAI_API_KEY
|
|
56102
56117
|
};
|
|
56103
56118
|
for (let [key, value] of Object.entries(environment)) {
|
|
56104
56119
|
if (value === "0") {
|
|
@@ -56188,9 +56203,15 @@ var getCouchInfo = (connection) => {
|
|
|
56188
56203
|
throw new Error("CouchDB password not set");
|
|
56189
56204
|
}
|
|
56190
56205
|
const authCookie = Buffer.from(`${username}:${password}`).toString("base64");
|
|
56206
|
+
let sqlUrl = environment_default.COUCH_DB_SQL_URL;
|
|
56207
|
+
if (!sqlUrl && urlInfo.url) {
|
|
56208
|
+
const parsed = new URL(urlInfo.url);
|
|
56209
|
+
sqlUrl = urlInfo.url.replace(parsed.port, "4984");
|
|
56210
|
+
}
|
|
56191
56211
|
return {
|
|
56192
56212
|
url: urlInfo.url,
|
|
56193
|
-
|
|
56213
|
+
// clean out any auth credentials
|
|
56214
|
+
sqlUrl: getUrlInfo(sqlUrl).url,
|
|
56194
56215
|
auth: {
|
|
56195
56216
|
username,
|
|
56196
56217
|
password
|
|
@@ -56518,6 +56539,11 @@ var CouchDBError = class extends Error {
|
|
|
56518
56539
|
}
|
|
56519
56540
|
};
|
|
56520
56541
|
function DatabaseWithConnection(dbName, connection, opts) {
|
|
56542
|
+
if (!dbName || !connection) {
|
|
56543
|
+
throw new Error(
|
|
56544
|
+
"Unable to create database without database name or connection"
|
|
56545
|
+
);
|
|
56546
|
+
}
|
|
56521
56547
|
const db = new DatabaseImpl(dbName, opts, connection);
|
|
56522
56548
|
return new DDInstrumentedDatabase(db);
|
|
56523
56549
|
}
|
|
@@ -64434,18 +64460,17 @@ var UserDB = class _UserDB {
|
|
|
64434
64460
|
}
|
|
64435
64461
|
const tenantId = getTenantId();
|
|
64436
64462
|
const db = getGlobalDB();
|
|
64437
|
-
|
|
64463
|
+
const { email, _id, userGroups = [], roles } = user;
|
|
64438
64464
|
if (!email && !_id) {
|
|
64439
64465
|
throw new Error("_id or email is required");
|
|
64440
64466
|
}
|
|
64441
64467
|
let dbUser;
|
|
64442
64468
|
if (_id) {
|
|
64443
64469
|
try {
|
|
64444
|
-
dbUser = await
|
|
64445
|
-
if (email && dbUser.email !== email) {
|
|
64446
|
-
throw "Email address cannot be changed";
|
|
64470
|
+
dbUser = await getById(_id);
|
|
64471
|
+
if (email && dbUser.email !== email && !opts.allowChangingEmail) {
|
|
64472
|
+
throw new Error("Email address cannot be changed");
|
|
64447
64473
|
}
|
|
64448
|
-
email = dbUser.email;
|
|
64449
64474
|
} catch (e) {
|
|
64450
64475
|
if (e.status === 404) {
|
|
64451
64476
|
} else {
|
|
@@ -64470,12 +64495,13 @@ var UserDB = class _UserDB {
|
|
|
64470
64495
|
if (!dbUser && roles?.length) {
|
|
64471
64496
|
builtUser.roles = { ...roles };
|
|
64472
64497
|
}
|
|
64473
|
-
|
|
64498
|
+
const groupPromises = [];
|
|
64474
64499
|
if (!_id) {
|
|
64475
|
-
_id = builtUser._id;
|
|
64476
64500
|
if (userGroups.length > 0) {
|
|
64477
64501
|
for (let groupId of userGroups) {
|
|
64478
|
-
groupPromises.push(
|
|
64502
|
+
groupPromises.push(
|
|
64503
|
+
_UserDB.groups.addUsers(groupId, [builtUser._id])
|
|
64504
|
+
);
|
|
64479
64505
|
}
|
|
64480
64506
|
}
|
|
64481
64507
|
}
|
|
@@ -64483,6 +64509,9 @@ var UserDB = class _UserDB {
|
|
|
64483
64509
|
let response = await db.put(builtUser);
|
|
64484
64510
|
builtUser._rev = response.rev;
|
|
64485
64511
|
await handleSaveEvents(builtUser, dbUser);
|
|
64512
|
+
if (dbUser && builtUser.email !== dbUser.email) {
|
|
64513
|
+
await users_exports2.removeUser({ email: dbUser.email });
|
|
64514
|
+
}
|
|
64486
64515
|
await users_exports2.addUser(
|
|
64487
64516
|
tenantId,
|
|
64488
64517
|
builtUser._id,
|